1. 程式人生 > >DNS主從複製及子域(三)

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伺服器。其次在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; };
};
在/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
@       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


從DNS伺服器: 192.168.60.30
在/etc/named.conf檔案中新增區域
[[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


子域DNS伺服器: 192.168.60.30
在/etc/named.conf檔案中新增以下區域
[[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";