搭建BIND主從服務器


搭建BIND主從服務器

Bind Version: 9.11.4

😄 Written by Zak Zhu

參考

基礎概念

主從服務

  • Primary DNS Server

    一個域的主服務器保存着該域的zone文件. 該域所有的配置和更改都是在主服務器上進行.

  • Secondary DNS Server

    一個域的從服務器通常作為冗余負載使用, 從該域的主服務器上同步zone文件. 從服務器不會進行任何信息的更改, zone文件的修改只能在主DNS服務器上進行, 所有的修改都由主服務器同步.

區域傳送

  • AXFR

    第一次傳送區域文件, 通常是傳送完整的區域文件, 這叫作“完全區域傳送” .

  • IXFR

    后續傳送區域文件, 通常是傳送增量的區域文件, 這叫作“增量區域傳送”.

    區域文件, 一方面是定期由從服務器去向主服務器詢問和拉取; 一方面當主服務器發生更新時, 會向從服務器發送更新通知, 讓從服務器來拉取.

    如果主服務器出現故障, 不響應從服務器的詢問, 經過一段時間的嘗試, 發現仍然沒有響應, 則從服務器不會取而代之, 而是不再對DNS請求做應答, 並且放棄解析服務.

安全控制

  1. 訪問控制列表

    • build-in ACLs

      ACL_NAME COMMENT
      any 任何主機
      none 無一主機
      local 本機
      localnet 本機所在網絡
    • ACL Syntax

      acl "ACL_NAME" {
          IP/PREFIX;
          IP/PREFIX;
          ...
      };
      
  2. 安全控制選項

    • allow-query { ACL_NAMEs;|IP; };

      允許哪些主機查詢當前DNS服務器

    • allow-recursion { ACL_NAMEs;|IP; };

      允許哪些主機向當前DNS服務器發起遞歸查詢請求

    • allow-transfer { ACL_NAMEs;|IP; };

      允許從服務器拉取區域文件

    • allow-update { ACL_NAMEs;|IP; };

      允許動態更新區域文件內容




操作環境

HOSTNAME IP ADDRESS ROLE
mac 192.168.199.103 DNS Client
ns0.zakzhu.com 192.168.199.200 Primary DNS Server
ns1.zakzhu.com 192.168.199.201 Secondary DNS Server

配置要求

  1. 主機: ns0.zakzhu.com

    • 配置為正反解析的主服務器
    • 配置正向解析區域
    • 配置反向解析區域
  2. 主機: ns1.zakzhu.com

    • 配置為正反解析的從服務器

搭建步驟

主服務器

1. 安裝bind和bind-utils

  • [root@ns0 ~]# yum install bind bind-utils -y
    

2. 修改/etc/named.conf

  • [root@ns0 ~]# vim /etc/named.conf
    
    options {
        listen-on port 53 { 192.168.199.200; };
            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";
            recursing-file  "/var/named/data/named.recursing";
            secroots-file   "/var/named/data/named.secroots";
        allow-query     { any; };
            recursion yes;
        dnssec-enable no;
        dnssec-validation no;
            bindkeys-file "/etc/named.root.key";
            managed-keys-directory "/var/named/dynamic";
            pid-file "/run/named/named.pid";
            session-keyfile "/run/named/session.key";
    };
    ... ...
    ... ...
    

3. 定義主服務器正反解析區域

  • [root@ns0 ~]# vim /etc/named.rfc1912.zones
    
    ... ...
    ... ...
    zone "zakzhu.com" IN {
            type master;
            file "zakzhu.com.zone";
            allow-update { none; };
            allow-transfer { 192.168.199.201; };
    };
    
    zone "199.168.192.in-addr.arpa" IN {
            type master;
            file "199.168.192.in-addr.arpa.zone";
            allow-update { none; };
            allow-transfer { 192.168.199.201; };
    };
    

4. 編寫正向解析區域資源記錄

  • [root@ns0 ~]# cd /var/named/
    
  • [root@ns0 named]# touch zakzhu.com.zone
    [root@ns0 named]# chmod 640 zakzhu.com.zone && chown root:named !$
    
  • [root@ns0 named]# vim zakzhu.com.zone 
    
    $TTL 86400
    $ORIGIN zakzhu.com.
    
    @       IN      SOA     ns0.zakzhu.com. hostmaster.zakzhu.com. (
                            2020031700   ; serial
                                    1H   ; refresh (1 hours)
                                   15M   ; retry (15 mins)
                                    7D   ; expire (7 days)
                                   20M ) ; minimum (20 mins)
            IN      NS      ns0.zakzhu.com.
            IN      NS      ns1.zakzhu.com.
    ns0     IN      A       192.168.199.200
    ns1     IN      A       192.168.199.201
    www     IN      A       192.168.199.200
    mx1     IN      A       192.168.199.200
    mx2     IN      A       192.168.199.201
    web     IN      CNAME   www
    @       IN      MX      10 mx1
    @       IN      MX      20 mx2
    

5. 編寫反向解析區域資源記錄

  • [root@ns0 named]# touch 199.168.192.in-addr.arpa.zone
    [root@ns0 named]# chmod 640 199.168.192.in-addr.arpa.zone && chown root:named !$ 
    
  • [root@ns0 named]# vim 199.168.192.in-addr.arpa.zone 
    
    $TTL 86400
    $ORIGIN 199.168.192.in-addr.arpa.
    
    @       IN      SOA     ns0.zakzhu.com. hostmaster.zakzhu.com. (
                            2020031700   ; serial
                                    1H   ; refresh (1 hours)
                                   15M   ; retry (15 mins)
                                    7D   ; expire (7 days)
                                   20M ) ; minimum (20 mins)
            IN      NS      ns0.zakzhu.com.
            IN      NS      ns1.zakzhu.com.
    200     IN      PTR     ns0.zakzhu.com.
    201     IN      PTR     ns1.zakzhu.com.
    200     IN      PTR     www.zakzhu.com.
    

6. 語法檢查

  • [root@ns0 named]# named-checkconf
    
  • [root@ns0 named]# named-checkzone -d zakzhu.com zakzhu.com.zone
    [root@ns0 named]# named-checkzone -d 199.168.192.in-addr.arpa 199.168.192.in-addr.arpa.zone
    

7. 啟動named

  • [root@ns0 ~]# systemctl enable named
    [root@ns0 ~]# systemctl restart named
    

從服務器

1. 安裝bind和bind-utils

  • [root@ns1 ~]# yum install bind bind-utils -y
    

2. 修改/etc/named.conf

  • [root@ns1 ~]# vim /etc/named.conf 
    
    options {
        listen-on port 53 { 192.168.199.201; };
            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";
            recursing-file  "/var/named/data/named.recursing";
            secroots-file   "/var/named/data/named.secroots";
        allow-query     { any; };
            recursion yes;
        dnssec-enable no;
        dnssec-validation no;
            bindkeys-file "/etc/named.root.key";
            managed-keys-directory "/var/named/dynamic";
            pid-file "/run/named/named.pid";
            session-keyfile "/run/named/session.key";
    };
    ... ...
    ... ...
    

3. 定義從服務器正反解析區域

  • [root@ns1 ~]# vim /etc/named.rfc1912.zones 
    
    ... ...
    ... ...
    zone "zakzhu.com" IN {
            type slave;
            file "slaves/zakzhu.com.zone";
            masters { 192.168.199.200; };
    };
    
    zone "199.168.192.in-addr.arpa" IN {
            type slave;
            file "slaves/199.168.192.in-addr.arpa.zone";
            masters { 192.168.199.200; };
    };
    

4. 語法檢查

  • [root@ns1 ~]# named-checkconf 
    

5. 啟動named

  • [root@ns1 ~]# systemctl enable named
    [root@ns1 ~]# systemctl restart named
    



測試服務

1. 模擬主服務器到從服務器的全區域傳送

[root@ns1 ~]# tail -f /var/named/data/named.run 

[root@ns0 ~]# dig -t axfr zakzhu.com @192.168.199.201

1


2

2. 測試針對www.zakzhu.com.的正向解析

  • 測試主服務器

    [zak@mac ~ 00:59:32]
    $ dig -t a www.zakzhu.com. @192.168.199.200
    

    3

  • 測試從服務器

    [zak@mac ~ 01:00:09]
    $ dig -t a www.zakzhu.com. @192.168.199.201
    

    4

3. 測試針對www.zakzhu.com.的反向解析

  • 測試主服務器

    [zak@mac ~ 01:08:28]
    $ dig -t a www.zakzhu.com. @192.168.199.200
    

    5

  • 測試從服務器

    [zak@mac ~ 01:08:38]
    $ dig -x 192.168.199.200 @192.168.199.201
    

    6

4. 測試主服務器新增資源記錄后同步情況

  • ## 新增"hr.zakzhu.com."的A記錄
    [root@ns0 named]# vim zakzhu.com.zone 
    

    7

  • [root@ns0 named]# named-checkzone -d zakzhu.com zakzhu.com.zone 
    
  • [root@ns0 named]# rndc reload
    
  • [zak@mac ~ 01:26:01]
    $ dig -t a hr.zakzhu.com. @192.168.199.201
    

    8


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM