1、bind簡介數據庫
Linux中一般使用bind來實現DNS服務器的架設,bind軟件由isc(www.isc.org)維護。在yum倉庫中能夠找到軟件,配置好yum源,直接使用命令yum install bind就能夠安裝。當前bind的穩定版本爲bind9,bind的服務名稱爲named,監聽的端口爲53號端口。bind的主要配置文件爲/etc/named.conf,此文件主要用於配置區域,並指定區域數據庫文件名稱。區域數據庫文件一般保存於/var/named/目錄下,用於定義區域的資源類型。windows
2、使用bind架設DNS服務器安全
實例操做:以域名wubinary.com爲例配置一個DNS服務器,實現正向解析與反向解析。bash
一、使用setup命令配置DNS服務器的IP地址,咱們以192.168.0.70這個IP地址爲例,在本地架設一個DNS服務器。服務器
二、bind配置文件爲/etc/named.conf,此文件用於定義區域。每一個區域的數據文件保存在/var/named目錄下。網絡
named.conf各參數項說明:ide
options { //全局選項 } zone "ZONE name"{ //定義區域 } logging{ //定義日誌系統 }
named.conf文件內容以下:測試
options { listen-on port 53 { 127.0.0.1; }; #定義監聽端口及IP地址 listen-on-v6 port 53 { ::1; }; #定義監聽的IPv6地址 directory "/var/named"; #全局目錄 dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; allow-query { localhost; };#容許查詢的IP地址 recursion yes; #是否容許遞歸查詢 dnssec-enable yes; dnssec-validation yes; dnssec-lookaside auto; /* Path to ISC DLV key */ bindkeys-file "/etc/named.iscdlv.key"; managed-keys-directory "/var/named/dynamic"; }; logging { channel default_debug { file "data/named.run"; severity dynamic; }; }; zone "." IN { type hint; file "named.ca"; }; include "/etc/named.rfc1912.zones"; include "/etc/named.root.key";
注意:bind的配置文件/etc/named.conf裏必需要定義的三個區域是:根、127.0.0.1和127.0.0.1的反解。spa
以上options選項中有許可能是咱們用不到,咱們先把它們註釋掉。結果以下:debug
options { // listen-on port 53 { 127.0.0.1; }; // listen-on-v6 port 53 { ::1; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; // allow-query { localhost; }; // recursion yes; // dnssec-enable yes; // dnssec-validation yes; // dnssec-lookaside auto; /* Path to ISC DLV key */ // bindkeys-file "/etc/named.iscdlv.key"; // managed-keys-directory "/var/named/dynamic"; };
三、打開/etc/named.rfc1912.zones文件,添加一個區域。
type: 用於定義區域類型,此時只有一個DNS服務器,因此爲master,type可選值爲:hint(根的)|master(主的)|slave(輔助的)|forward(轉發)
file:用於定義區域數據文件路徑,默認該文件保存在/var/named/目錄。
區域添加好後,使用命令:named-checkconf 或 service named configtest測試配置文件語法格式。
出錯了!原來少了一個分號,配置文件的格式是每行後面都必須加分號結束,而且有花括號的地方,花括號兩邊必需要有空格。
沒有提示則表示文件語法正常。
四、新建數據庫文件/var/named/wubinary.com.zone,並添加資源記錄。
資源記錄的格式: name [ttl] IN RRtype Value 資源記錄名 有效時間 IN 類型 資源記錄的值
SOA: 只能有一個,並且必須是第一個 name: 只能是區域名稱,一般能夠簡寫爲@ value: 主DNS服務器的FQDN
NS: 能夠有多條 name: 區域名稱,一般能夠簡寫爲@ value: DNS服務器的FQDN(可使用相對名稱)
A: 只能定義在正向區域文件中 name: FQDN(可使用相對名稱) value: IP
MX: 能夠有多個 name: 區域名稱,用於標識smtp服務器 value: 包含優先級和FQDN 優先級:0-99,數字越小,級別越高;
CNAME: name: FQDN value: FQDN
PTR: IP --> FQDN, 只能定義在反向區域數據文件中,反向區域名稱爲逆向網絡地址加.in-addr.arpa.後綴組成 name: IP, 逆向的主機地址,主機地址反過來寫加上.in-addr.arpa. value: FQDN
$TTL爲定義的宏,表示下面資源記錄ttl的值都爲600秒。
@符號可表明區域文件/etc/named.conf裏面定義的區域名稱,即:"wubinary.com."。
每一個區域的資源記錄第一條必須是SOA,SOA後面接DNS服務器的域名和電子郵箱地址,此處電子郵箱地址裏的@由於有特殊用途,因此此處要用點號代替。SOA後面小括號裏的各值所表明的意義以下所示:
@ IN SOA dns.wubinary.com dnsadmin.wubinary.com ( 2014031201 ;標識序列號,十進制數字,不能超過10位,一般使用日期 2H ;刷新時間,即每隔多久到主服務器檢查一次,此處爲2小時 4M ;重試時間,應該小於刷新時間,此處爲4分鐘 1D ;過時時間,此處爲1天 2D ;主服務器掛後,從服務器至多工做的時間,此處爲2天)
區域數據文件配置好後,可使用命令named-checkzone檢查語法錯誤。
命令格式:
named-checkzone "zone_name" zone_file_name
五、兩個文件都配置好後,記得查看一下文件的所屬組。由於bind程序的服務名稱爲named,bind默認是使用named組的身份操做文件,因此咱們新建的文件所屬組都要改成named,而且爲了安全起見不能讓別人有修改的權限,權限最好改成640。
六、設置穩當當後咱們就能夠開啓服務了。
七、使用dig命令測試DNS。
命令格式:
dig [-t type] [-x addr] [name] [@server]
-t: 指定資源類型,用於正解
-x: 指定IP地址,用於反解
測試成功!
八、以上配置的是DNS服務器的正向解析,接着再配置一下反向解析。編輯配置文件/etc/named.rfc1912.zones,添加一個反解區域。
由於反向解是和正向解析相反的,因此配置文件192.168.0.70.zone直接能夠複製wubinary.com.zone修改。反向解析數據文件裏面只有SOA、NS、PTR資源記錄,全部A記錄都要改成PTR記錄,名稱爲IP地址,IP地址能夠寫全也能夠簡寫,若是寫全則是IP地址反寫加上.in-addr.arpa.例如:70.0.168.192.in-addr.arpa. PTR資源記錄的值爲域名。
九、檢查配置文件語法。
修改權限
十、從新載入配置文件,並測試反向解析。
使用dig -x 測試反向解析。
反向解析配置成功!
注意:一般在應用中,DNS的反向解析並非很重要,能夠不配置,當服務器中有域名做爲郵件服務器時,此時能夠配置反向解析,由於郵件中過濾垃圾郵件的技術一般是解析郵箱地址,若是IP地址不能反解成一個域名則視爲垃圾郵件。
3、使用bind架設輔助DNS服務器,實現主從數據同步
DNS從服務器也叫輔服DNS服務器,若是網絡上某個節點只有一臺DNS服務器的話,首先服務器的抗壓能力是有限的,當壓力達到必定的程度,服務器就會宕機罷工,其次若是這臺服務器出現了硬件故障那麼服務器管理的區域的域名將沒法訪問。爲了解決這些問題,最好的辦法就是使用多個DNS服務器同時工做,並實現數據的同步,這樣兩臺服務器就均可以實現域名解析操做。
主DNS服務器架設好後,輔助的DNS服務器的架設就相對簡單多了。架設主從DNS服務器有兩個前提條件,一是兩臺主機能夠不必定處在同一網段,可是兩臺主機之間必需要實現網絡通訊;二,輔助DNS服務器必需要有主DNS服務器的受權,才能夠正常操做。此時,咱們以IP地址192.168.0.80做爲咱們輔助的DNS服務器的IP地址;
一、設置IP地址;
二、打開輔助DNS服務器的/etc/named.rfc1912.zones文件,添加兩個區域記錄,這兩個記錄是主DNS服務器配置文件裏已經存在的記錄,一個是正向解析記錄,一個是反向解析記錄。
type: slave,表示此時DNS服務器爲輔助DNS服務器,因而下面一行就要定義主DNS服務器的IP地址,輔助DNS服務器才知道去哪裏同步數據。輔助DNS服務器的資源類型數據文件一般保存在slaves目錄,只需定義一個名稱,文件內容一般是自動生成。
配置好後,直接開啓DNS服務,而後再回到主DNS服務器上。
三、修改主DNS服務器的數據文件,添加一條輔助DNS服務器記錄,給輔助DNS服務器受權。
修改正向解析文件/var/named/wubinary.com.zone。
添加了一條NS記錄,值爲,ns2.wubinary.com.,對應的A記錄也要增長一條,把IP地址指向對應的輔助DNS服務器的IP地址。修改完成後,記得要把序列號的值加1,用於通知輔助DNS服務器自動更新數據文件。
修改反向解析文件/var/named/192.168.0.70.zone。
一樣的也增長了兩條記錄,一條輔助DNS服務器的NS記錄和對應的PTR記錄。修改完成後記得所序列號的值加1,用於通知輔助DNS服務器自動更新數據文件。
四、從新加載主DNS服務器的配置文件,這時再到回輔助DNS服務器,在/var/named/slaves/目錄下會多了兩個文件。
查看文件內容,能夠看到該文件和主DNS服務器上的文件內容是同樣的。
五、測試輔助DNS服務器。
在輔助DNS服務器上正向解析和反向解析都能測試成功!
4、主從同步數據的安全性
DNS服務器的數據同步默認是沒有限定主機的,也就是說,網絡上只要有一臺DNS服務器向你的DNS服務器請求數據,都能實現數據同步,那麼這樣就至關的不安全了。咱們可使用一個選項allow-transfer,指定能夠同步數據的主機IP。主DNS服務器的數據能夠給別的服務器同步,相對的,輔助DNS服務器的數據也是能夠給其它輔助DNS服務器同步,因而,全部的主從DNS服務器都要設置該參數。
一、指定能夠從主DNS服務器上同步數據的主機。
修改/etc/named.rfc1912.zones文件:
在每塊區域上添加參數allow-transfer,花括號內填寫能夠同步的主機IP,通常填寫輔助DNS服務器的IP地址。可使用dig命令測試,區域同步:
dig -t axfr ZONE_NAME @DNS_SERVCER_IP
指定IP能夠同步數據。
非指定IP不能夠同步數據。
二、指定能夠從輔助DNS服務器上同步數據的主機。
修改/etc/named.rfc1912.zones文件:
咱們只有一臺輔助DNS服務器,因此根本不會有主機從這臺機器同步數據,因此咱們設置成不容許任何人同步。
5、測試DNS解析的其它命令
測試DNS解析的命令不僅是dig能夠實現,還有兩個命令也能夠實現相同的效果。
一、host命令
host命令格式:
# host [-t type] {name} [server]
二、nslookup命令
這個命令很神奇,在windows的dos裏面也可使用:
nslookup> server DNS_SERVER_IP set q=TYPE {name}