DNS主從複製及子域(三)
主從DNS
主輔DNS伺服器資料同步的過程,首先master DNS伺服器每 次修改完成並重啟服務後,將傳送notify給所有的Slave DNS伺服器。 Slave DNS伺服器將查詢Master伺服器的SOA記錄,Master DNS伺服器收到請求後將SOA記錄傳送給Slave DNS伺服器,Slave DNS伺服器收到後同時對比查詢結果中的serial值,如果serial值不大於本機的話將結束資料同步過程;但是如果serial值大於本機的話,Slave DNS將傳送zone transfer請求要求(AXFR/IXFR)。Master響應Zone transfer請求並傳送結果,直到整個slave更新完成。如圖:
在實際應用中主從DNS伺服器一般都是用來做DNS高可用和負載的,所以你的主從DNS伺服器首先就是必須要從上級獲得授權,也就是頂級域的伺服器中必須有你兩臺DNS的記錄,這樣客戶端才可以把主從DNS的地址都設定為本地DNS伺服器。其次在DNS伺服器本身的區域資料檔案中要有主從DNS伺服器的NS(只有這樣主DNS伺服器才會找的到從DNS伺服器),只有這兩者都搞定的情況下就算有一臺DNS伺服器掛掉了,客戶端同樣可以訪問另一臺DNS伺服器進行DNS查詢。
區域傳送型別完全區域傳送:傳送區域的所有書(axfr)
增量區域傳送:傳送區域中改變的資料部分(ixfr)
配置主從DNS主從的基礎配置按照快取記憶體DNS伺服器的基礎配置即可,注意主從DNS伺服器一定要註釋include “/etc/named.root.key”;和關閉防火牆
主DNS伺服器: 192.168.60.10
在/etc/named.conf檔案中新增區域[[email protected] ~]# vim /etc/named.conf zone "ywnds.com" IN { type master; file "ywnds"; notify yes; also-notify { 192.168.60.30; }; allow-transfer { 192.168.60.30; }; };
[[email protected] ~]# vim /var/named/ywnds $TTL 1D @ IN SOA dns.ywnds.com. root.ywnds.com. ( 336 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum @ IN NS dns @ IN NS dns2 dns IN A 192.168.60.10 dns IN A 192.168.60.30 @ IN MX 10 mail mail IN A 192.168.60.100 www IN A 192.168.60.200
[[email protected] ~]# chown root:named /var/named/ywnds重啟主DNS
[[email protected] ~]# service named restart [[email protected] ~]# tail -f /var/log/message Sep 29 17:51:30 localhost named[3224]: running Sep 29 17:51:30 localhost named[3224]: zone ywnds.com/IN: sending notifies (serial 336) Sep 29 17:51:30 localhost named[3224]: client 192.168.60.30#37129: transfer of 'ywnds.com/IN': AXFR-style IXFR started Sep 29 17:51:30 localhost named[3224]: client 192.168.60.30#37129: transfer of 'ywnds.com/IN': AXFR-style IXFR ended在/etc/named.conf檔案中新增區域
從DNS伺服器: 192.168.60.30
[[email protected] ~]# vim /etc/named.conf zone "ywnds.com" IN { type slave; file "slaves/ywnds"; masters { 192.168.60.10; }; allow-transfer { none; }; };驗證傳送結果
[[email protected] ~]# service named restart [[email protected] ~]# tail -f /var/log/message [[email protected] ~]# ll /var/named/slaves/ -rw-r--r--. 1 named named 422 Sep 29 17:51 ywnds
分別檢視兩臺主機上的/var/log/messages日誌檔案看看傳送過程第一次應該是AXFR完全傳送,當第二次傳送時就會是ixfr增量傳送。
特別注意:
1、 進行增量傳送時;當主伺服器更改一條記錄時就需要把serial的值加1;從伺服器會比較serial值,如果比自己的大就進行更改自己區域的內容。 2、 主從伺服器的時間同步DNS子域授權
子域授權其實就是實現DNS分片管理,通過父域DNS可以查詢解析子域,但子域無法查詢解析父域,子域可以實現自我管理。如ywnds.com是父域,而market.ywnds.com是子域。
子域授權的基礎配置按照快取記憶體DNS伺服器的基礎配置即可,注意子負域DNS伺服器一定要註釋include “/etc/named.root.key”;和關閉防火牆
父域DNS伺服器: 192.168.60.10
在/etc/named.conf檔案中新增以下區域[[email protected] ~]# vim /etc/named.conf zone "ywnds.com" IN { type master; file "ywnds"; allow-transfer { none; }; };在/var/named/下新增正向區域檔案
[[email protected] ~]# vim /var/named/ywnds $TTL 1D @ IN SOA dns.ywnds.com. root.ywnds.com. ( 336 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum @ IN NS dns dns IN A 192.168.60.10 www IN A 192.168.60.200 market IN NS dns.market.ywnds.com. dns.market IN A 192.168.60.30
[[email protected] ~]# chown root:named /var/named/ywnds重啟主DNS
[[email protected] ~]# service named restart在/etc/named.conf檔案中新增以下區域
子域DNS伺服器: 192.168.60.30
[[email protected] ~]# vim /etc/named.conf zone "market.ywnds.com" IN { type master; file "market.ywnds"; allow-transfer { none; }; };在/var/named/下新增正向區域檔案
[[email protected] ~]# vim /var/named/market.ywnds $TTL 1D @ IN SOA dns.ywnds.com. root.ywnds.com. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum @ IN NS dns dns IN A 192.168.60.30 www IN A 192.168.60.251重啟主DNS
[[email protected] ~]# service named restart 驗證 父域DNS可以解析“ywnds.com”域和“market.ywnds.com”域
[[email protected] ~]# dig -t A www.ywnds.com @192.168.60.10 [[email protected] ~]# dig -t A www.market.ywnds.com @192.168.60.10 ;; ->>HEADER< <- opcode: QUERY, status: NOERROR, id: 3598 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1 ;; QUESTION SECTION: ;www.market.ywnds.com. IN A ;; ANSWER SECTION: www.market.ywnds.com. 85956 IN A 192.168.60.251 ;; AUTHORITY SECTION: market.ywnds.com. 85956 IN NS dns.market.ywnds.com. ;; ADDITIONAL SECTION: dns.market.ywnds.com. 85956 IN A 192.168.60.30 子域DNS只能解析“market.ywnds.com”域
[[email protected] ~]# dig -t A www.market.ywnds.com @192.168.60.30轉發域
通過子域授權可以做到父域可以解析本地域和子域,而子域只能解析本地域而解析不了父域,那麼現在通過轉發功能就可以做到讓子域也可以解析父域。
配置轉發域的兩種方式
1)轉發非本機負責解析的所有區域 option{ forwarders { 8.8.8.8; }; forward first; forward only; }; 2)轉發某特定區域 zone "ywnds.com" IN { type forward; forwarders { 192.168.60.10; }; };
子域DNS伺服器: 192.168.60.30
1)在/etc/named.conf檔案中追加父域,紅色部分 [[email protected] ]# vi /etc/named.conf zone "market.ywnds.com" IN { type master; file "market.ywnds"; allow-transfer { none; }; }; zone "ywnds.com" IN { type forward; forwarders { 192.168.60.10; }; forward first; allow-transfer { none; }; }; 表示子域只要解析“ywnds.com”域都轉發到父域進行解析。同時如果在全域性配置中也配置轉發域。如下: option{ forwarders { 8.8.8.8; }; forward first; forward only; };
這樣就可以做到除父域外其他只要有解析不了的域統統轉發到指定的DNS伺服器中,前提是被指定的DNS伺服器必須能夠做遞迴。這樣當在optionP{}和zone{}中都使用了轉發功能時就可以做到訪問不同的域名找不同的DNS伺服器。
手寫DNS配置檔案最後可以嘗試手寫named.conf配置檔案,但是檔案許可權要改成640並且屬主是root;屬組是namd,當你手寫配置檔案時大概只需要以下內容即可。其餘大部分都是預設,比如監聽地址預設是監聽所有和允許查詢預設允許所有。如下:
[[email protected] ]# vi /etc/named.conf options { directory "/var/named"; recursion yes; }; zone "." IN { type hint; file "named.ca"; }; zone "ywnds.com" IN { type master; file "ywnds"; allow-transfer { none; }; }; include "/etc/named.rfc1912.zones";