2011年12月1日 星期四

[ How-To] DNS MASTER / SLAVE SETUP

DNS Server ( Debian6.0.3 ) 
架設環境 : EXSI-5 

需求 : 

A. 假設申請了一個 Domain name 叫做 vtest.tv,對應的 IP 為 192.168.11.11,
並需要兩個 hostname,www.vtest.tv 與 adm.vmtest.tv 對應到同一個 IP 。 


B. 設計兩台 DNS server ( Master / Salve ) , 做為備援,
Slave 自動會更新 Zone 資訊。

Master DNS : ns1.vtest.tv    ip : 192.168.11.11 
Slave DNS : ns2.vtest.tv       ip: 192.168.11.12


A. Master DNS 操作部分 ( 192.168.11.11 )

0. apt-get update 更新套件 list 並 安裝

apt-get update ; apt-get install bind9


1. 修改/etc/bind/named.conf.options

options {
directory "/var/cache/bind";
//Hinet DNS
forwarders { 168.95.1.1; };
allow-query { any; };
allow-transfer { none; };
};

2. 建立 zond 目錄 mkdir /etc/bind/zone

3. 修改 /etc/bind/named.conf 並加入

...略...
zone "vtest.tv" {
type master;
file "/etc/bind/zone/db.vtest.tv";
// Slave DNS 192.168.11.12 可以向 Master DNS 192.168.11.11 做資料更新動作。
allow-transfer { 192.168.11.12;};
};


zone "11.168.192.in-addr.arpa" {
type master;
file "/etc/bind/zone/db.192.168.11";
// Slave DNS 192.168.11.12 可以向 Master DNS 192.168.11.11 做資料更新動作。
allow-transfer { 192.168.11.12;};  //開放給指定 slave
};

include "/etc/bind/named.conf.local";

4. 接著設定正解檔案 /etc/bind/zone/db.vtest.tv
複製一份/etc/bind/db.local來修改
cp /etc/bind/db.local  /etc/bind/zone/db.vtest.tv

vim /etc/bind/zone/db.vtest.tv


$TTL    600
@       IN      SOA     vtest.tv. root.vtest.tv. (
                       20111202        ; Serial
                           1800            ; Refresh
                          86400           ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL


@        IN NS www.vtest.tv.
@        IN A 192.168.11.11

www  60  IN A 192.168.11.11
www  60  IN A 192.168.11.12
adm  60  IN A 192.168.11.11
adm  60  IN A 192.168.11.12
ns1  60  IN A 192.168.11.11
ns2  60  IN A 192.168.11.12
mail  60  IN A 192.168.11.10




相關資訊可參考鳥哥:正解資料庫檔案設定 http://linux.vbird.org/linux_server/0350dns.php#DNS_master_name

5. 接著設定反解檔案 /etc/bind/zone/db.192.168.11
一樣複製一份 /etc/bind/db.local 來修改
cp /etc/bind/db.local  /etc/bind/zone/db.192.168.11

vim /etc/bind/zone/db.192.168.11


$TTL    600
@       IN      SOA     vtest.tv. root.vtest.tv. (
                                 2         ; Serial
                           1800         ; Refresh
                          86400        ; Retry
                        2419200      ; Expire
                         604800 )     ; Negative Cache TTL
@ IN NS www.test.tv.
11 IN PTR www.vtest.tv.
12 IN PTR www.vtest.tv.
11 IN PTR ns1.vtest.tv.
12 IN PTR ns2.vtest.tv.
11 IN PTR adm.vtest.tv.
12 IN PTR adm.vtest.tv.
10 IN PTR mail.vtest.tv.

相關資訊可參考鳥哥:反解資料庫檔案設定  http://linux.vbird.org/linux_server/0350dns.php#DNS_master_ip



6. 重新啟動後, 簡易測試, 查看 system log 有沒有錯誤訊息 或 注意事項
# cat /var/log/syslog


或看 named-log error
#named -g


列出 預設的 port 53
# netstat -tlnap

7. 修改 本機端 dns 設定 
# /etc/resolv.conf
nameserver 168.95.11.11


8. 查証DNS 是否設定成功,可用 指令  nslookupdig -t、traceroute 、 ping  


1、 nslookup  adm.vtest.tv

Server:       192.168.11.11
Address:    192.168.11.11#53

Name:   adm.vtest.tv
Address: 192.168.11.11
Name:   adm.vtest.tv
Address: 192.168.11.12


2、 dig -t www.vtest.tv
;; Query time: 0 msec
;; SERVER: 192.168.11.11#53(192.168.11.11)
;; WHEN: Thu Dec  1 13:14:33 2011
;; MSG SIZE  rcvd: 512


3、 traceroute   ns1.vtest.tv
traceroute to ns1.vtest.tv (192.168.11.11), 30 hops max, 60 byte packets
 1  adm.vtest.tv (192.168.11.11)  0.384 ms  0.382 ms  0.374 m

4、 ping www.vtest.tv
PING www.vtest.tv (192.168.11.11) 56(84) bytes of data.
64 bytes from ns1.vtest.tv (192.168.11.11): icmp_req=1 ttl=64 time=0.011 ms
64 bytes from adm.vtest.tv (192.168.11.11): icmp_req=2 ttl=64 time=0.012 ms


# ping www.vtest.tv
PING www.vtest.tv (192.168.11.12) 56(84) bytes of data.
64 bytes from adm.vtest.tv (192.168.11.12): icmp_req=1 ttl=64 time=0.187 ms
64 bytes from www.vtest.tv (192.168.11.12): icmp_req=2 ttl=64 time=0.129 ms
64 bytes from ns2.vtest.tv (192.168.11.12): icmp_req=3 ttl=64 time=0.149 ms




B. Slave DNS 操作部分 ( 192.168.11.12 )

0. apt-get update 更新套件 list 並 安裝

apt-get update ; apt-get install bind9

1. 修改/etc/bind/named.conf.options

options {
directory "/var/cache/bind";
//Hinet DNS
forwarders { 168.95.1.1; };
allow-query { any; };
allow-transfer { none; };
};

2. 建立 zond 目錄 mkdir /etc/bind/zone
並且宣告權限讓資料可以寫入同步
chown bind.bind /etc/bind/zine

3. 修改 /etc/bind/named.conf 並加入

...略...
zone "vtest.tv" {
type slave;
file "/etc/bind/zone/db.vtest.tv";
// Master DNS 192.168.11.11 做資料更新動作。
masters { 192.168.11.11;};
};

zone "11.168.192.in-addr.arpa" {
type slave;
file "/etc/bind/zone/db.192.168.11";
//Master DNS 192.168.11.11 做資料更新動作。
masters { 192.168.11.11;};
};

include "/etc/bind/named.conf.local";


4. 重新啟動後, 簡易測試, 查看 system log 有沒有錯誤訊息 或 注意事項
# cat /var/log/syslog

列出 預設的 port 53
# netstat -tlnap



修改 本機端 dns 設定
# /etc/resolv.conf
nameserver 127.0.0.1


# nslookup www.vtest.tv
Server:         127.0.0.1
Address:        127.0.0.1#53

Name:   www.vtest.tv
Address: 192.168.11.12
Name:   www.vtest.tv
Address: 192.168.11.11

# nslookup adm.v.tv
Server:         127.0.0.1
Address:        127.0.0.1#53

Name:   adm.vtest.tv
Address: 192.168.11.12
Name:   adm.vtest.tv
Address: 192.168.11.11





# 關掉 Master 測試看看
# 新增 Master zone file , 測試 slave 會不會自動更新
# 測試可把 refresh 設定為 60 秒 , 加快 slave 跟 Master 比對的時間

PS (  Slave 主機向 Master 要求傳送 Zone File 的時機
master 主機上的 named 啟動、Reload 時, 發送 dns notify 信號通知 NS 主機 (除本身外) 比對 zone file serial, 且 master serial 大於 slave serial 時.-
slave 主機上的 named 啟動時, 發現 master serial 大於 slave serial, 或無 zone file 存在時.
 slave 主機每隔 refresh 時間, 向 master 查詢 zone file serial, 發現 master serial 大於 slave serial 時.)




# 測試反解
nslookup 192.168.11.11
Server:         192.168.11.11
Address:        192.168.11.11#53

11.11.168.192.in-addr.arpa     name = mail.vtest.tv.
11.11.168.192.in-addr.arpa     name = adm.vtest.tv.
11.11.168.192.in-addr.arpa     name = www.vtest.tv.


補上兩個好用的dns測試網站:

1.http://pingability.com/zoneinfo.jsp?domain=
2.http://http://www.checkdns.net/quickcheckdomainf.aspx

沒有留言:

張貼留言