一、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/目錄下,用於定義區域的資源類型。
二、使用bind架設DNS服務器
實例操作:以域名wubinary.com爲例配置一個DNS服務器,實現正向解析與反向解析。
1、使用setup命令配置DNS服務器的IP地址,我們以192.168.0.70這個IP地址爲例,在本地架設一個DNS服務器。
2、bind配置文件爲/etc/named.conf,此文件用於定義區域。每個區域的數據文件保存在/var/named目錄下。
named.conf各參數項說明:
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的反解。
以上options選項中有許多是我們用不到,我們先把它們註釋掉。結果如下:
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"; };
3、打開/etc/named.rfc1912.zones文件,添加一個區域。
type: 用於定義區域類型,此時只有一個DNS服務器,所以爲master,type可選值爲:hint(根的)|master(主的)|slave(輔助的)|forward(轉發)
file:用於定義區域數據文件路徑,默認該文件保存在/var/named/目錄。
區域添加好後,使用命令:named-checkconf 或 service named configtest測試配置文件語法格式。
出錯了!原來少了一個分號,配置文件的格式是每行後面都必須加分號結束,並且有花括號的地方,花括號兩邊必須要有空格。
沒有提示則表示文件語法正常。
4、新建數據庫文件/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
5、兩個文件都配置好後,記得查看一下文件的所屬組。因爲bind程序的服務名稱爲named,bind默認是使用named組的身份操作文件,所以我們新建的文件所屬組都要改爲named,並且爲了安全起見不能讓別人有修改的權限,權限最好改爲640。
6、設置妥當當後我們就可以開啓服務了。
7、使用dig命令測試DNS。
命令格式:
dig [-t type] [-x addr] [name] [@server]
-t: 指定資源類型,用於正解
-x: 指定IP地址,用於反解
測試成功!
8、以上配置的是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資源記錄的值爲域名。
9、檢查配置文件語法。
修改權限
10、重新載入配置文件,並測試反向解析。
使用dig -x 測試反向解析。
反向解析配置成功!
注意:通常在應用中,DNS的反向解析並不是很重要,可以不配置,當服務器中有域名作爲郵件服務器時,此時可以配置反向解析,因爲郵件中過濾垃圾郵件的技術通常是解析郵箱地址,如果IP地址不能反解成一個域名則視爲垃圾郵件。
三、使用bind架設輔助DNS服務器,實現主從數據同步
DNS從服務器也叫輔服DNS服務器,如果網絡上某個節點只有一臺DNS服務器的話,首先服務器的抗壓能力是有限的,當壓力達到一定的程度,服務器就會宕機罷工,其次如果這臺服務器出現了硬件故障那麼服務器管理的區域的域名將無法訪問。爲了解決這些問題,最好的辦法就是使用多個DNS服務器同時工作,並實現數據的同步,這樣兩臺服務器就都可以實現域名解析操作。
主DNS服務器架設好後,輔助的DNS服務器的架設就相對簡單多了。架設主從DNS服務器有兩個前提條件,一是兩臺主機可以不一定處在同一網段,但是兩臺主機之間必須要實現網絡通信;二,輔助DNS服務器必須要有主DNS服務器的授權,纔可以正常操作。此時,我們以IP地址192.168.0.80作爲我們輔助的DNS服務器的IP地址;
1、設置IP地址;
2、打開輔助DNS服務器的/etc/named.rfc1912.zones文件,添加兩個區域記錄,這兩個記錄是主DNS服務器配置文件裏已經存在的記錄,一個是正向解析記錄,一個是反向解析記錄。
type: slave,表示此時DNS服務器爲輔助DNS服務器,於是下面一行就要定義主DNS服務器的IP地址,輔助DNS服務器才知道去哪裏同步數據。輔助DNS服務器的資源類型數據文件通常保存在slaves目錄,只需定義一個名稱,文件內容通常是自動生成。
配置好後,直接開啓DNS服務,然後再回到主DNS服務器上。
3、修改主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服務器自動更新數據文件。
4、重新加載主DNS服務器的配置文件,這時再到回輔助DNS服務器,在/var/named/slaves/目錄下會多了兩個文件。
查看文件內容,可以看到該文件和主DNS服務器上的文件內容是一樣的。
5、測試輔助DNS服務器。
在輔助DNS服務器上正向解析和反向解析都能測試成功!
四、主從同步數據的安全性
DNS服務器的數據同步默認是沒有限定主機的,也就是說,網絡上只要有一臺DNS服務器向你的DNS服務器請求數據,都能實現數據同步,那麼這樣就相當的不安全了。我們可以使用一個選項allow-transfer,指定可以同步數據的主機IP。主DNS服務器的數據可以給別的服務器同步,相對的,輔助DNS服務器的數據也是可以給其它輔助DNS服務器同步,於是,所有的主從DNS服務器都要設置該參數。
1、指定可以從主DNS服務器上同步數據的主機。
修改/etc/named.rfc1912.zones文件:
在每塊區域上添加參數allow-transfer,花括號內填寫可以同步的主機IP,一般填寫輔助DNS服務器的IP地址。可以使用dig命令測試,區域同步:
dig -t axfr ZONE_NAME @DNS_SERVCER_IP
指定IP可以同步數據。
非指定IP不可以同步數據。
2、指定可以從輔助DNS服務器上同步數據的主機。
修改/etc/named.rfc1912.zones文件:
我們只有一臺輔助DNS服務器,所以根本不會有主機從這臺機器同步數據,所以我們設置成不允許任何人同步。
五、測試DNS解析的其它命令
測試DNS解析的命令不只是dig可以實現,還有兩個命令也可以實現相同的效果。
1、host命令
host命令格式:
# host [-t type] {name} [server]
2、nslookup命令
這個命令很神奇,在windows的dos裏面也可以使用:
nslookup> server DNS_SERVER_IP set q=TYPE {name}