DNS的主從架構、子域委派、轉發器

爲了保證服務能夠穩定的進行,避免只有一臺服務器的時候發生宕機而無法提供DNS服務;所有會有DNS主從服務器架構

主從DNS服務器:(主輔)
需要注意的細節:
1.主服務器和輔助服務器都是域級別的概念;
2.必須保證主輔服務器之間的網絡通信的順暢以及時間同步;
3.爲了確保所有的名稱服務器都能被識別和使用,需要在區域數據庫中爲所有的名稱服務器添加NS資源記錄;
4.區域數據庫中每條NS資源記錄都必須有A記錄與之對應;
5.從服務器上可以默認將複製而來的數據庫文件保存至/var/name/slaves目錄中;
6.在主服務器上應該通過訪問控制指令允許從服務器進行區域傳送;同時從服務器要指定主服務器;

在架構之前先保證主從服務器的時間同步:
1.兩臺服務器可向網絡中的時間服務器進行同步;
示例;
~]# ntpdate cn.pool.ntp.org

2.把主服務器設置爲主從架構中的時間服務器,讓從服務器同步到主服務器
    示例:
        主:~]# vim /etc/ntp.conf
            添加:server 127.127.1.0 iburst
        主:~]# systemctl start ntpd.service
        從:~]# ntpdate 172.16.72.1
            //172.16.72.1(主服務器端)

主從服務器的架構示例:
1.編輯:在主服務器(172.16.72.1)中的BIND程序的主配置文件(/etc/named.conf)
zone "qhdlink.com" IN {
type master;
file "qhdlink.zone";
allow-update { none; };
allow-transfer { 172.16.69.1; };
//允許從服務器(172.16.69.1)能夠從當前服務器進行區域傳送
};

    zone "16.172.in-addr.arpa" IN {
      type master;
      file "172.16.local";
      allow-transfer { 172.16.69.1; };
        //允許從服務器(172.16.69.1)能夠從當前服務器進行區域傳送
    };

    zone "188.168.192.in-addr.arpa" IN {
      type master;
      file "192.168.188.local";
      allow-transfer { 172.16.69.1; };
        //允許從服務器(172.16.69.1)能夠從當前服務器進行區域傳送
    };

2.在主服務器(172.16.72.1)編輯各個zone(區域配置段)中的對應文件:qhdlink.zone、172.16.local、192.168.188.local

    1)
        named]# touch qhdlink.zone
        named]# chmod 640 qhdlink.zone
        named]# chgrp named qhdlink.zone:
        named]# vim qhdlink.zone
            $ORIGIN qhdlink.com.
            $TTL 86400
            @   IN  SOA ns1.qhdlink.com.  root.qhdlink.com. (
                                                2018040701;Serial
                                                1H;Refresh
                                                15M;Retry
                                                1W;Expire
                                                1D);Minimal TTL
                IN  NS  ns1.qhdlink.com.
                IN  MX 10 mail.qhdlink.com.
            ns1 IN  A   172.16.72.1
            mail  IN  A   172.16.72.1
            www   IN  A   172.16.100.100
            www   IN  A   172.16.100.101
            www   IN  A   172.16.100.102
            web   IN  CNAME www
            ftp.qhdlink.com.    IN  CNAME web.qhdlink.com.
            *     IN  A   172.16.200.1
            qhdlink.com.  IN  A 172.16.200.2
            bbs   IN  A 192.168.100.101

    2)
        named]# touch 172.16.local
        named]# chmod 640 172.16.local
        named]# chgrp named 172.16.local
        named]# vim 172.16.local
            $ORIGIN 16.172.in-addr.arpa.
            $TTL 86400
            @   IN  SOA   ns1.qhdlink.com.  root.qhdlink.com. (
                                                    2018040701;
                                                    1H;
                                                    15M;
                                                    1W;
                                                    6H);
                IN  NS  ns1.qhdlink.com.
            1.72  IN  PTR   ns1.qhdlink.com.
            1.72  IN  PTR   mail.qhdlink.com.
            100.100 IN  PTR www.qhdlink.com.
            101.100 IN  PTR www.qhdlink.com.
            102.100 IN  PTR www.qhdlink.com.
            1.200 IN  PTR qhdlink.com.

    3)
        named]# cp -p 172.16.local 192.168.188.local
        named]# vim 192.168.188.local
            $ORIGIN 188.168.192.in-addr.arpa.
            $TTL 86400
            @   IN  SOA   ns1.qhdlink.com.  root.qhdlink.com. (
                                    2018040701;
                                    1H;
                                    15M;
                                    1W;
                                    6H);
                    IN  NS  ns1.qhdlink.com.
            101 IN PTR bbs.qhdlink.com.

3.編輯:在從服務器(172.16.69.1)中的BIND程序的主配置文件(/etc/named.conf)
    options {
  listen-on port 53 { 127.0.0.1; 172.16.69.1; };
    //在啓動DNS服務時,named進程所監聽的172.16.69.1:53此套接字
  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     { 172.16.72.1; };
    //允許本服務器處理主服務器(172.16.72.1)發送來的解析查詢請求
    //"172.16.72.1"也可改成"any",允許允許本服務器處理所有主服務器發送來的解析查詢請求
  recursion yes;

  dnssec-enable yes;
  dnssec-validation yes;

  /* Path to ISC DLV key */
  bindkeys-file "/etc/named.iscdlv.key";

  managed-keys-directory "/var/named/dynamic";
    };

    zone "qhdlink.com" IN {
      type slave;
      masters { 172.16.72.1; };
      file "slaves/qhdlink.slave.zone";
      allow-transfer { none; };
    };

    zone "16.172.in-addr.arpa" IN {
      type slave;
      masters { 172.16.72.1; };
      file "slaves/172.16.slave.zone";
      allow-transfer { none; };
    };

    zone "188.168.192.in-addr.arpa" IN {
      type slave;
      masters { 172.16.72.1; };
      file "slaves/172.168.188.slave.zone";
      allow-transfer { none; };
    };

4.檢測區域文件的語法格式.並關閉防火牆和SElinux:
    named]# named-checkconf
    named]# iptables -F
    named]# setenforce 0

5.對主配置文件或區域數據庫文件進行修改之後,並不會立即生效;只有在重載配置文件和區域文件之後,配置才生效;重載配置文件的方法:
    1.systemctl reload named.service(CentOS 7.x)
    2.rndc reload
    3.systemctl restart named.service(不推薦)
    4.service named reload(CentOS 6.x)

    注意:對於應用程序服務進程重載配置文件的操作,如果能使用reload,就使用reload,不要輕易執行restart命令;

6.配置完成進行測試
    named]# dig @172.16.69.1 -x 192.168.188.101
    named]# dig @172.16.69.1 -t A www.qhdlink.com
    named]# dig @172.16.69.1 -x 172.16.100.100

心得體會:
A、B兩臺服務器都能對同一個IP/FQDN進行DNS解析
1.假如A服務器的BIND程序的主配置文件(/etc/named.conf)中的區域配置段(zone)和其對應據庫文件(XXX.zone)能夠進行DNS解析;
2.那麼B服務器(B作爲A的從服務器)的BIND程序的主配置文件(/etc/named.conf)中必須要有匹配的區域配置段(zone)才能進行DNS解析;
3.保證A服務器中的BIND程序的主配置文件(/etc/named.conf)的區域配置段(zone)的"allow-transfer { XXX.XXX.XXX.XXX; }" 對B服務器開啓區域傳送許可;
4.同時保證B服務器中的BIND程序的主配置文件(/etc/named.conf)的全局配置段(options)中的"listen-on port 53"監聽B服務器的地址,"allow-query"允許B(本地服務器)處理A服務器發送來的解析查詢請求

C作爲客戶端能夠獲取DNS解析
    1.防火牆規則
    2.對應的服務器端的全局配置段(options)中的"allow-query"允許服務器端處理C客戶端發送來的解析查詢請求

DNS轉發器:
全局轉發:
1.定義:對於凡是不能由本服務器管理(處理)的域的請求,全部以轉發的方式由指定的服務器進行遞歸查詢;
2.配置位置:在bind的主配置文件(/etc/named.conf)的全局配置段(options)

區域轉發:
    1.定義:專門針對於某個特定的域的請求,如果不能給出權威答案,則轉發至指定的服務器進行遞歸查詢;
    2.配置位置:在bind的主配置文件(/etc/named.conf)的區域配置段(zone)

轉發的方法:
    forward first:首先轉發,當轉發器中指定的服務器無響應時,再自行迭代查找;
    forward only:只使用轉發器中指定的服務器進行遞歸查詢,如果無法獲得答案,則直接返回否定答案;自身不再迭代查找;

    注意:
        1.任何形式的請求轉發,都必須依靠被指定的服務器允許自身做遞歸查詢;
        2.根服務器只做迭代查詢,不會爲任何服務器做遞歸查詢

爲什麼需要DNS轉發器:
1.假設有A、B兩臺NS(名稱服務器),A爲Master(主名稱服務器),B爲Slave(從名稱服務器),還有一臺C客戶端
2.在A上配備解析www.test.com這個FQDN的區域配置段(zone)和區域數據庫文件(test.zone),C能夠指定A來進行DNS解析獲取得到肯定答案;
3.雖然B作爲A的從服務器,但卻在B的/etc/named.conf中沒有關於www.test.com這個FQDN的區域配置段(zone),則在/var/named/slaves中沒有關於此區域數據庫文件(test.zone),可能是由於B還沒來得及從A上進行區域傳送,更新配置文件和數據庫中的內容;
4.此時若C指定B來進行DNS解析時,即使B的/etc/named.conf中的option(全局配置段)中的"allow-query"爲"{ any; }"(允許B處理任何主機發送來的解析查詢請求),C客戶端也獲取不了肯定答案,B只能返回一個否定答案(dns解析不了)給C
5.爲了實現服務器的高效可用性,B解析不了的時候把這個DNS解析請求傳給A去處理,這其中就可以利用DNS轉發器來實現;

給定三臺虛擬機進行測試:
A:服務器端(172.16.72.1)
B:轉發器端(172.16.69.1)
C:客戶端(172.16.69.2)

全局轉發示例:
    1.編輯在A服務器(172.16.72.1)中的BIND程序的主配置文件(/etc/named.conf),定義qhdlink.org域
        named]# vim /etc/named.conf
            zone "qhdlink.org" IN {
              type master;
              file "qhdlink.org.zone";
              allow-transfer { none; };
            };

    2.創建數據庫文件,修改權限並添加相應資源記錄;編輯A服務器(172.16.72.1)中主配置文件的zone(區域配置段)對應的文件:qhdlink.org.zone
        named]# touch qhdlink.org.zone
        named]# chgrp named qhdlink.org.zone 
        named]# chmod 640 qhdlink.org.zone
        named]# vim qhdlink.org.zone
            $TTL 86400
            qhdlink.org. IN SOA ns1.qhdlink.org. root.qhdlink.org. (
                                      2018040701;
                                      1H;
                                      10M;
                                      3D;
                                      4H);
                IN NS ns1
            ns1 IN A 172.16.72.1
            www IN A 11.22.33.44

    3.編輯B服務器(172.16.69.1)中主配置文件(/etc/named.conf)中的全局配置段(option)
        named]# vim /etc/named.conf
            options {
        listen-on port 53 { 127.0.0.1; 172.16.72.1; 172.16.69.1; };
        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; };
        recursion yes;
        forward first;
            //轉發方法
        forwarders { 172.16.72.1; }; 
            //轉發給172.16.72.1
        dnssec-enable no;
        dnssec-validation no;

        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";

        managed-keys-directory "/var/named/dynamic";
            };

    4.檢測區域文件和對應數據庫文件
        A:
            named]# named-checkconf
            named]# named-checkzone qhdlink.org qhdlink.org.zone 
            zone qhdlink.org/IN: loaded serial 2018040701
            OK

        B:
            named]# named-checkconf

    5.對主配置文件或區域數據庫文件進行修改之後,並不會立即生效;只有在重載配置文件和區域文件之後,配置才生效;重載配置文件的方法:
        1.systemctl reload named.service(CentOS 7.x)
        2.rndc reload
        3.systemctl restart named.service(不推薦)
        4.service named reload(CentOS 6.x)

        注意:對於應用程序服務進程重載配置文件的操作,如果能使用reload,就使用reload,不要輕易執行restart命令;

    6.配置完成進行測試
        在C客戶端上:
            ~]# dig @172.16.72.1 -t A www.qhdlink.org
            ~]# dig @172.16.69.1 -t A www.qhdlink.org
                //對比兩者結果,解析得到的答案一致,則轉發器有效
        在C客戶端上:
            ~]# nslookup
            > set q=a
            > server 172.16.69.1
            Default server: 172.16.69.1
            Address: 172.16.69.1#53
            > www.qhdlink.org    
            Server:     172.16.69.1
            Address:    172.16.69.1#53

            Non-authoritative answer:
                //非權威答案,證明是通過轉發獲取得到的,則轉發器有效
            Name:   www.qhdlink.org
            Address: 11.22.33.44

全局轉發測試成功後,可以用"/*...*/"的註釋方法把定義全局轉法部分先註釋掉,避免進行區域轉發測試得到的結果的準確性和有效性;

區域轉發示例:
    1.編輯在A服務器(172.16.72.1)中的BIND程序的主配置文件(/etc/named.conf),定義qhdlink.com.cn域
        named]# vim /etc/named.conf
            zone "qhdlink.com.cn" IN {
              type master;
              file "qhdlink.com.cn.zone";
              allow-transfer { none; };
            };

    2.創建數據庫文件,修改權限並添加相應資源記錄;編輯A服務器(172.16.72.1)中主配置文件的zone(區域配置段)對應的文件:qhdlink.com.cn.zone
        named]# touch qhdlink.com.cn.zone
        named]# chgrp named qhdlink.com.cn.zone
        named]# chmod 640 qhdlink.com.cn.zone
        named]# vim qhdlink.com.cn.zone
            $ORIGIN qhdlink.com.cn.
            $TTL 86400
            qhdlink.com.cn. IN SOA ns1.qhdlink.com.cn. root.qhdlink.com.cn. (
                    2018040701;
                    1H;
                    10M;
                    3D;
                    4H);
                IN NS ns1
            ns1 IN A 172.16.72.1
            www IN A 1.2.3.4

    3.編輯B服務器(172.16.69.1)中主配置文件(/etc/named.conf)中的全局配置段(option)和區域配置段(zone)
        named]# vim /etc/named.conf
            options {
        listen-on port 53 { 127.0.0.1; 172.16.72.1; 172.16.69.1; };
            //添加監聽C客戶端(172.16.69.1)的53端口
        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; };
            //允許本服務器處理任何主機發送來的解析查詢請求
        recursion yes;

        dnssec-enable no;
        dnssec-validation no;

        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";

        managed-keys-directory "/var/named/dynamic";
            };

            zone "qhdlink.com.cn" IN {
                type forward;
                forward only;
                forwarders { 172.16.72.1; };
            };

    4.檢測區域文件的語法格式
        A:
            named]# named-checkconf
            named]# named-checkzone qhdlink.com.cn qhdlink.com.cn.zone
            zone qhdlink.com.cn/IN: loaded serial 2018040701
            OK

        B:
            named]# named-checkconf

    5.對主配置文件或區域數據庫文件進行修改之後,並不會立即生效;只有在重載配置文件和區域文件之後,配置才生效;重載配置文件的方法:
        1.systemctl reload named.service(CentOS 7.x)
        2.rndc reload
        3.systemctl restart named.service(不推薦)
        4.service named reload(CentOS 6.x)

        注意:對於應用程序服務進程重載配置文件的操作,如果能使用reload,就使用reload,不要輕易執行restart命令;

    6.配置完成進行測試
        在C客戶端上:
            ~]# dig @172.16.72.1 -t A www.qhdlink.com.cn
            ~]# dig @172.16.69.1 -t A www.qhdlink.com.cn
                //對比A和B的解析結果,解析得到的答案一致則成功
        在C客戶端上:
            ~]# nslookup
            > server 172.16.69.1
            Default server: 172.16.69.1
            Address: 172.16.69.1#53
            > www.qhdlink.com.cn
            Server:     172.16.69.1
            Address:    172.16.69.1#53

            Non-authoritative answer:
                //非權威答案,證明是通過轉發獲取得到的,則轉發器有效
            Name:   www.qhdlink.com.cn
            Address: 1.2.3.4

子域委派授權:
將子域的管理權授權給子域中的名稱服務器;父域中不保存任何子域數據庫中資源記錄;但爲了能夠成功授權,需要添加一條NS記錄,指向子域的名稱服務器;

子域委派授權與轉發器的比較:
1.子域委派授權實際上是爲客戶端提供迭代查詢機制;
2.轉發器實際上是爲客戶端提供遞歸查詢機制;
3.因爲兩者都不是直接給客戶端返回DNS的解析結果,都是通過第三方來"輔助"完成解析,所以得到的答案都是非權威的;

給定三臺服務器進行測試:
A:服務器端(172.16.72.1)
B:轉發器端(172.16.69.1)
C:客戶端(172.16.69.2)

子域委派授權示例:
1.在A上做qhdlink.org這個域的配置,不做bj.qhdlink.org這個域的配置
named]# vim /etc/named.conf
zone "qhdlink.org" IN {
type master;
file "qhdlink.org.zone";
allow-transfer { none; };
};

    named]# vim qhdlink.org.zone
        $TTL 86400
        qhdlink.org. IN SOA ns1.qhdlink.org. root.qhdlink.org. (
                                  2018040701;
                                  1H;
                                  10M;
                                  3D;
                                  4H);
            IN NS ns1
        bj.qhdlink.org.    IN NS ns1.bj.qhdlink.org.
        ns1 IN A 172.16.72.1
        ns1.bj.qhdlink.org. IN A 172.16.69.1
        www IN A 11.22.33.44

2.在B上做bj.qhdlink.org這個域的配置
    named]# vim /etc/named.conf
        zone "bj.qhdlink.org" IN {
          type master;
          file "bj.qhdlink.org.zone";
          allow-transfer { none; };
        };

    named]# named]# touch bj.qhdlink.org.zone
    named]# chgrp named bj.qhdlink.org.zone 
    named]# chmod 640 bj.qhdlink.org.zone
    named]# vim bj.qhdlink.org.zone
        $ORIGIN bj.qhdlink.org.
        $TTL 86400
        @   IN  SOA ns1.bj.qhdlink.org. root.bj.qhdlink.org. (
                                        2018040701;
                                        3H;
                                        30M;
                                        10D;
                                        8H);
                IN  NS  ns1
        ns1 IN  A   172.16.72.2
        www IN  A   55.66.77.88

3.檢測區域文件的語法格式
    A:
        named]# named-checkconf
        named]# named-checkzone qhdlink.org qhdlink.org.zone

    B:
        named]# named-checkconf
        named]# named-checkzone bj.qhdlink.org bj.qhdlink.org.zone

4.對主配置文件或區域數據庫文件進行修改之後,並不會立即生效;只有在重載配置文件和區域文件之後,配置才生效;重載配置文件的方法:
    1.systemctl reload named.service(CentOS 7.x)
    2.rndc reload
    3.systemctl restart named.service(不推薦)
    4.service named reload(CentOS 6.x)

    注意:對於應用程序服務進程重載配置文件的操作,如果能使用reload,就使用reload,不要輕易執行restart命令;

5.配置完成進行測試
    C:
        ~]# dig @172.16.72.1 -t A www.bj.qhdlink.org
            //解析得到肯定答案,則說明測試成功

從子域授權委派示例可以看出:
1.A只配置了qhdlink.org這個域的解析內容;
2.B只配置bj.qhdlink.org這個域的解析內容;
3.但只需要在A的qhdlink.org這個域對應的數據庫中文件中添加這兩句RR:
bj.qhdlink.org. IN NS ns1.bj.qhdlink.org.
ns1.bj.qhdlink.org. IN A 172.16.69.1
4.就能把A與B聯繫起來;對於C客戶端發過來的DNS解析查詢請求,雖然A在自己本地的服務器上無法給C返回DNS解析查詢信息,但可以委派給B,讓B來對C進行DNS解析服務,並把結果返回給C

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章