1.安裝bind服務# yum install -y bind bind-chroot bind-utils
2.chroot 環(huán)境為了系統(tǒng)的安全性?慮,一般來說目前各主要 distributions 都已經(jīng)自動的將你的 bind 相關(guān)程序給他 chroot 了
# cat /etc/sysconfig/namedROOTDIR=/var/named/chroot這一行將named根目錄 變更為 /var/named/chroot
新版本的 centos 6.x 已經(jīng)將 chroot 所需要使用到的目錄,透過 mount --bind 的功能進行目錄鏈接了 ,所以在 CentOS 6.x 當中,你根本無須切換至 /var/named/chroot/ 了!使用正規(guī)的目錄操作
3.DNS服務器主要配置文件: /etc/named.conf
isten-on port 53 { any; };監(jiān)聽在這部主機系統(tǒng)上面的哪個網(wǎng)絡接口。 所以這里要將大括號內(nèi)的數(shù)據(jù)改寫成 any。記得,因為可以監(jiān)聽多個接口,因此 any 后面得要加上分號才算結(jié)束喔! 另外,這個項目如果忘記寫也沒有關(guān)系,因為默認是對整個主機系統(tǒng)的所有接口進行監(jiān)聽的。
directory "/var/named";意思是說,如果此檔案底下有規(guī)范到正、反解的 zone file 檔名時,該檔名預設(shè)應該放置在哪個目錄底下的意思。預設(shè)放置到 /var/named/ 底下。由于 chroot 的關(guān)系,最終這些數(shù)據(jù)庫檔案會被主動鏈接到 /var/named/chroot/var/named/ 這個目錄。
dump-file, statistics-file, memstatistics-file與 named 這個服務有關(guān)的許多統(tǒng)計信息,如果想要輸出成為檔案的話,預設(shè)的檔名就如上所述。
allow-query { any; };這個是針對客戶端的設(shè)定,到底誰可以對我的 DNS 服務提出查詢請求的意思。原本的檔案內(nèi)容預設(shè)是針對 localhost 開放而已, 我們這里改成對所有的用戶開放 (當然啦,防火墻也得放行才行)。不過,預設(shè) DNS 就是對所有用戶放行,所以這個設(shè)定值也可以不用寫。
forward only ;這個設(shè)定可以讓你的 DNS 服務器僅進行 forward,即使有 . 這個 zone file 的設(shè)定,也不會使用 . 的資料, 只會將查詢權(quán)交給上層 DNS 服務器而已,是 cache only DNS 最常見的設(shè)定了!
forwarders { 8.8.8.8; } ;既然有 forward only,那么到底要對哪部上層 DNS 服務器進行轉(zhuǎn)遞呢?那就是 forwarders (不要忘記那個 s) 設(shè)定值的重要性了!由于擔心上層 DNS 服務器也可能會掛點,因此可以設(shè)定多部上層 DNS 服務器喔!每一個 forwarder 服務器的 IP 都需要有『 ; 』來做為結(jié)尾!
IN 是internet記錄 type 是類型 根的類型是hint file 區(qū)域文件
TTL是生存期,單位是秒 $TTL是全局定義的
SOA記錄,@取代在/etc/named.conf中指定的域名。SOA段中的數(shù)字,分別為:序列號、刷新、重試、過期、生存期序列號:
序列號用于DNS數(shù)據(jù)庫文件的版本控制。每當數(shù)據(jù)被改變,這個序列號就應該被增加。
刷新:從服務器向主服務器查詢最新數(shù)據(jù)的間隔周期。每一次檢查時從服務器的數(shù)據(jù)是否需要更改,則根據(jù)序列號來判別。
重試:一旦從服務器嘗試連接主服務器失敗,下一次查詢主服務器的延遲時間。
過期:如果從服務器無法連通主服務器,則在經(jīng)過此時間后,宣告其數(shù)據(jù)過期。
生存期:服務器回答 ‘無此域名’ 的間隔時間。
數(shù)字的默認單位為秒。否則:W= 周、D= 日、H= 小時、M= 分鐘。
區(qū)域配置(zone )zone 語句作用是定義DNS 區(qū)域,在此語句中可定義DNS 區(qū)域選項zone區(qū)域設(shè)置,第一步,設(shè)置根區(qū)域當DNS服務器處理遞歸查詢時,如果本地區(qū)域文件不能進行查詢的解析,就會轉(zhuǎn)到根DNS服務器查詢,所以在主配置文件named.conf文件中還要定義根區(qū)域。
# 常見的正解文件 RR 相關(guān)信息
[domain] IN [[RR type] [RR data]]
主機名. IN A IPv4 的 IP 地址
主機名. IN AAAA IPv6 的 IP 地址
領(lǐng)域名. IN NS 管理這個領(lǐng)域名的服務器主機名字.
領(lǐng)域名. IN SOA 管理這個領(lǐng)域名的七個重要參數(shù)(如上說明)
領(lǐng)域名. IN MX 順序數(shù)字 接收郵件的服務器主機名字
主機別名. IN CNAME 實際代表這個主機別名的主機名字.
4.啟動 關(guān)閉命令 /etc/init.d/named start #啟動DNS服務器/etc/init.d/named restart #重啟DNS服務器/etc/init.d/named stop #關(guān)閉DNS服務器 chkconfig named on #設(shè)為開機啟動
5.配置實例 假設(shè)我們要添加域 test.web,當然這個現(xiàn)實中是沒有的,所以我可以用來雖意測試
# vim /etc/named.conf
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
options {
listen-on port 53 { any; };//改為any
// 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 { any; }; //改為 any
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";
創(chuàng)建zone文件
# vim /etc/named.rfc1912.zones //添加正反向區(qū)域
// named.rfc1912.zones:
//
// Provided by Red Hat caching-nameserver package
//
// ISC BIND named zone configuration for zones recommended by
// RFC 1912 section 4.1 : localhost TLDs and address zones
// and http://www.ietf.org/internet-dra ... -local-zones-02.txt
// (c)2007 R W Franks
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
zone "localhost.localdomain" IN {
type master;
file "named.localhost";
allow-update { none; };
};
zone "localhost" IN {
type master;
file "named.localhost";
allow-update { none; };
};
注釋以下幾行
//zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
// type master;
// file "named.loopback";
// allow-update { none; };
//};
//zone "1.0.0.127.in-addr.arpa" IN {
// type master;
// file "named.loopback";
// allow-update { none; };
//};
zone "0.in-addr.arpa" IN {
type master;
file "named.empty";
allow-update { none; };
}
//添加正反向
zone "test.web" IN { // 這個 zone 的名稱
type master; // 是什么類型
file "test.web.zone"; // zone文件名
};
zone "1.168.192.in-addr.arpa" IN {
type master;
file "1.168.192.zone";
};
#vim /var/named/test.web.zone
$TTL 86400
@ IN SOA ns.test.web. root.test.web. ( # ns.test.web. 是DNS服務器的名稱 root 是管理員的郵箱地址, root.test.web.等價于 root@test.web
42 ; serial (d. adams) 僅作為序列號而已
3H ; refresh 服務器的更新時間
15M ; retry 重新更新時間間隔
1W ; expiry 多久之后宣布失敗
1D ) ; minimum 相當于緩存記憶時間
@ IN NS ns.test.web.
@ IN MX 10 mail.test.web.
ns IN A 192.168.1.8
www IN A 192.168.1.8
mail IN A 192.168.1.8
#vim /var/named/1.168.192.zone
$TTL 86400
@ IN SOA ns.test.web. root.test.web. (
1997022700 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
@ IN NS ns.test.web.
8 IN PTR ns.test.web.
8 IN PTR www.test.web.
8 IN PTR mail.test.web.
啟動一下 DNS
# /etc/init.d/named start
測試
[root@localhost ~]# dig www.test.web @127.0.0.1
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.4 <<>> www.test.web @127.0.0.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 29660
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; QUESTION SECTION:
;www.test.web. IN A
;; ANSWER SECTION:
www.test.web. 86400 IN A 192.168.1.8
;; AUTHORITY SECTION:
test.web. 86400 IN NS ns.test.web.
;; ADDITIONAL SECTION:
ns.test.web. 86400 IN A 192.168.1.8
;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Mar 31 20:19:25 2013
;; MSG SIZE rcvd: 79
[root@localhost ~]# dig -x 192.168.1.8 @127.0.0.1
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.4 <<>> -x 192.168.1.8 @127.0.0.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30336
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 1
;; QUESTION SECTION:
;8.1.168.192.in-addr.arpa. IN PTR
;; ANSWER SECTION:
8.1.168.192.in-addr.arpa. 86400 IN PTR ns.test.web.
8.1.168.192.in-addr.arpa. 86400 IN PTR www.test.web.
;; AUTHORITY SECTION:
1.168.192.in-addr.arpa. 86400 IN NS ns.test.web.
;; ADDITIONAL SECTION:
ns.test.web. 86400 IN A 192.168.1.8
;; Query time: 2 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Mar 31 20:19:33 2013
;; MSG SIZE rcvd: 115
[root@localhost ~]# dig -t mx test.web @127.0.0.1
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.4 <<>> -t mx test.web @127.0.0.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 10324
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; QUESTION SECTION:
;test.web. IN MX
;; ANSWER SECTION:
test.web. 86400 IN MX 10 mail.test.web.
;; AUTHORITY SECTION:
test.web. 86400 IN NS ns.test.web.
;; ADDITIONAL SECTION:
mail.test.web. 86400 IN A 192.168.1.8
ns.test.web. 86400 IN A 192.168.1.8
;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Mar 31 20:19:39 2013
;; MSG SIZE rcvd: 96
[root@localhost ~]# dig -t soa www.test.web @127.0.0.1
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.4 <<>> -t soa www.test.web @127.0.0.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 40157
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;www.test.web. IN SOA
;; AUTHORITY SECTION:
test.web. 86400 IN SOA ns.test.web. root.test.web. 42 10800 900 604800 86400
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Mar 31 21:14:54 2013
;; MSG SIZE rcvd: 74
從服務器設(shè)置
[root@localhost ~]# dig www.test.web @127.0.0.1
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.4 <<>> www.test.web @127.0.0.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 40694
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; QUESTION SECTION:
;www.test.web. IN A
;; ANSWER SECTION:
www.test.web. 86400 IN A 192.168.1.8
;; AUTHORITY SECTION:
test.web. 86400 IN NS ns.test.web.
;; ADDITIONAL SECTION:
ns.test.web. 86400 IN A 192.168.1.8
;; Query time: 2 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat May 11 21:34:14 2013
;; MSG SIZE rcvd: 79
[root@localhost ~]# dig -t mx test.web @127.0.0.1
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.4 <<>> -t mx test.web @127.0.0.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 51522
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; QUESTION SECTION:
;test.web. IN MX
;; ANSWER SECTION:
test.web. 86400 IN MX 10 mail.test.web.
;; AUTHORITY SECTION:
test.web. 86400 IN NS ns.test.web.
;; ADDITIONAL SECTION:
mail.test.web. 86400 IN A 192.168.1.8
ns.test.web. 86400 IN A 192.168.1.8
;; Query time: 2 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat May 11 21:34:34 2013
;; MSG SIZE rcvd: 96
[root@localhost ~]# dig -x 192.168.1.8 @127.0.0.1
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.4 <<>> -x 192.168.1.8 @127.0.0.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60651
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 1
;; QUESTION SECTION:
;8.1.168.192.in-addr.arpa. IN PTR
;; ANSWER SECTION:
8.1.168.192.in-addr.arpa. 86400 IN PTR ns.test.web.
8.1.168.192.in-addr.arpa. 86400 IN PTR www.test.web.
;; AUTHORITY SECTION:
1.168.192.in-addr.arpa. 86400 IN NS ns.test.web.
;; ADDITIONAL SECTION:
ns.test.web. 86400 IN A 192.168.1.8
;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat May 11 21:35:00 2013
;; MSG SIZE rcvd: 115
6.防火檣相關(guān)
使用bind服務器需要防火墻開放以下端口
UDP 53
TCP 53
TCP 953
vi /etc/sysconfig/iptables #配置防火墻端口
-A INPUT -m state --state NEW -m tcp -p tcp --dport 53 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 53 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 953 -j ACCEPT
service iptables restart #重啟防火墻,使規(guī)則生效
7.查看日志
tail -n 40 /var/log/messages |grep named