BIND是實現DNS服務的一套軟件(官方站點:isc.org),其包含了服務器端程序named(由bind程序包提供,監聽套接字:53/tcp、53/udp),和客戶端工具host、nslookup、dig(由bind-utils程序包提供)。爲保證服務器的安全性,bind還提供了一種“沙箱機制”,bind-chroot是將原文件系統的根“/”替換成“/var/named/chroot”來使用。
目前主流的bind程序依舊是9.x系列。使用yum install bind命令即可安裝bind程序,安裝完成後會自動添加named用戶,named組。使用rpm -qc bind可查看安裝完成後生成的配置文件列表。
其服務腳本是:/etc/rc.d/init.d/,主配置文件:/etc/named.conf、/etc/named.rfc1912.zones,以及/var/named/下以“.zone”爲後綴的區域數據解析庫文件。/etc/named.conf由3段組成,見圖示。
要想配置成一臺可供他人服務的DNS服務器,還需要修改配置文件/etc/named.conf(幫助文檔 man named.conf)。必須的配置有:
① 監聽的地址:配置能與外部進行通信的地址,也可以將此項註釋掉,表示監聽在本機(注:本機在此不表示127.0.0.1)如:本機IP是172.16.24.1,則可配置如下:
listen-on port 53 {127.0.0.1;172.16.24.1;};
② 允許所有主機查詢(也可定義爲一部分主機查詢,詳見下文):
allow-query { any; };
③ 關閉dnssec相關配置,並註釋掉ISC DLV key:
dnssec-enable no; dnssec-validation no; dnssec-lookaside no; /* Path to ISC DLV key bindkeys-file "/etc/named.iscdlv.key"; managed-keys-directory "/var/named/dynamic"; */
④ 定義zone,其格式是如下:
zone "ZONE_NAME" IN { type master|slave|forward;/*唯有根域.的type爲hint*/ file "ZoneData_FILE"; /*區域數據解析庫文件,工作目錄是:/var/named/,通常以.zone命名。*/ };
注:a.ZONE_NAME的定義,正向區域直接寫域名即可,反向區域定義格式爲:逆向網絡地址.in-addr.arpa,如:1.168.192.in-addr.arpa
b.若type是slave,還要註明master服務器的IP;若是forward,file項可無。
⑤ 根據實際需求自定義區域數據解析庫文件(在/var/named/目錄下),定義完成後記得將文件的屬組改爲named。
各項配置都完成之後,可以使用named-checkconf檢查配置文件是否有語法錯誤,使用named-checkzone "ZONE_NAME" /path/to/ZoneData_FILE檢查區域解析數據庫文件是否有語法錯誤。
⑥ 啓動named,並測試
service named start dig -t A www.baidu.com @localhost
客戶端工具dig的使用
dig常用來測試DNS服務是否正常的工具,供攻城師們及時排查DNS故障。其常用語法格式爲
dig [@DNS_Server] [-t RR_Type] Name [Query_Options]
當不指定DNS_Server時,dig將使用/etc/resolv.conf中定義的DNS服務器
dig @192.168.120.132 -t A www.test.com
其常用命令:dig @192.168.120.132 -t axfr Zone_Name表示查看該區域文件的所有資源類型
其常用的查詢選項有 +[no]trace表示是否跟蹤其查詢過程
dig @192.168.120.132 -t A www.baidu.com +trace
示例 配置DNS服務器爲某正向區域(test.com)的主DNS服務器
① 配置其成爲緩存DNS服務器
② 在/etc/named.rfc1912.zones中定義區域zone
vim /etc/named.rfc1912.zones
…… …… …… …… …… …… zone "test.com" IN { type master; file "test.com.zone"; allow-update { none; }; };
③ 定義區域數據解析庫文件test.com.zone,並參照named.empty修改其訪問權限以及屬主、屬組
vim test.com.zone
$TTL 600 $ORIGIN test.com. @ IN SOA ns.test.com. admin.ns.test.com. ( 201504101 ;序列號 1H ;1小時後刷新 5M ;5分鐘後重試 1W ;1周後失效 1H );緩存TTL是1小時 IN NS ns ;由於定義了ORIGIN,此處相當於ns.test.com.。 IN MX 10 mx ns IN A 1.1.1.1 mx IN A 2.2.2.2 www IN A 3.3.3.3 www IN A 3.3.3.4 pop3 IN A 4.4.4.4 web IN CNAME www imap4 IN CNAME pop3
chmod 640 test.com.zone chown :named test.com.zone
④ 檢查語法是否配置有誤
named-checkconf named-checkzone "test.com" test.com.zone
⑤ 重載DNS服務
service named reload
⑥ 使用dig工具驗證結果
dig -t A www.test.com @localhost
結果表明,當有同一主機的多條A記錄時,DNS服務器會以“輪詢”的方式向客戶端提供查詢服務。