CentOS7.6域名服务器配置(三)使用Bind配置DNS服务实现子域授权

DNS服务配置子域授权一般是完成分布式DNS数据库的方式,例如域名 example.com 和子域 ops.example.com.
分布式实现场景,父域一组NS完成父域相关域名解析,子域一组NS完成子域相关域名解析(如果请求父域可以配置区域转发)。当然父域和子域也可以使用同一组NS解析

一、父域与子域同一组NS解析配置实现

父域:example.com
子域:ops.example.com
配置场景:父域与子域同一组NS,也就是在相同服务器上
备注:在同服务器上也可以NS名称不通,但是没有必要,直接相同即可(ns{1,2}.example.com

  • 第一步:在父域追加子域NS配置[]

    cat example.com.zone 
    $TTL 600
    ;省略其他配置 ... ... ,注意修改序号
    ns1             IN      A       10.116.72.6
    ns2             IN      A       10.116.72.7
    ops             IN      NS      ns1
    ops             IN      NS      ns2
    
  • 第二步:在etc/named.rfc1912.zones 添加子域配置[]

    etc/named.rfc1912.zones
    //省略其他配置 ... ... 
    zone "ops.example.com" IN {
            type master;
            file "ops.example.com.zone";
    };
    
  • 第三步:添加子域区域文件 /var/named/ops.example.com.zone []
    额外添加了一个域名,www.ops.example.com 用于测试

    cat  /var/named/ops.example.com.zone
    $TTL 600
    @       IN SOA  ns1.example.com admin.example.com (
                                            2019071902      ; serial
                                            2H              ; refresh
                                            5M              ; retry
                                            1D              ; expire
                                            2D )            ; minimum
    @               IN      NS      ns1.example.com.
    @               IN      NS      ns2.example.com.
    ns1             IN      A       10.116.72.6
    ns2             IN      A       10.116.72.7
    www             IN      A       10.116.72.4
    
    chown root:named /var/named/ops.example.com.zone
    
  • 第四步: 辅助DNS服务器,在etc/named.rfc1912.zones 添加子域配置[]

    etc/named.rfc1912.zones
    //省略其他配置 ... ... 
    zone "ops.example.com" IN {
            type master;
            file "ops.example.com.zone";
    };
    
  • 第五步:重启服务生效配置[主,从]

    # 辅助DNS服务器
    named-checkconf #检查配置
    systemctl restart named.service  # rndc reload
    
    # 主DNS服务器
    named-checkconf #检查配置
    systemctl restart named.service  # rndc reload
    

可以看到子域区域文件已经同步到从DNS服务器了。

  • 第六步,验证
# 1. 查看子域ops.example.com的NS
dig -t NS ops.example.com @10.116.72.6

; <<>> DiG 9.9.4-RedHat-9.9.4-73.el7_6 <<>> -t NS ops.example.com @10.116.72.6
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 11722
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 3

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;ops.example.com.               IN      NS

;; ANSWER SECTION:
ops.example.com.        600     IN      NS      ns2.example.com.
ops.example.com.        600     IN      NS      ns1.example.com.

;; ADDITIONAL SECTION:
ns1.example.com.        600     IN      A       10.116.72.6
ns2.example.com.        600     IN      A       10.116.72.7

;; Query time: 0 msec
;; SERVER: 10.116.72.6#53(10.116.72.6)
;; WHEN: Fri Jul 19 14:00:29 CST 2019
;; MSG SIZE  rcvd: 112


# 2. 确认域名www.ops.example.com正常解析
ping www.ops.example.com
PING www.ops.example.com (10.116.72.4) 56(84) bytes of data.
64 bytes from www.demo.com (10.116.72.4): icmp_seq=1 ttl=64 time=0.024 ms
64 bytes from www.demo.com (10.116.72.4): icmp_seq=2 ttl=64 time=0.052 ms

二、父域与子域不同NS解析配置实现

这种情况下一般子域与父域DNS服务器不是同服务器,也就是子域由其他主机上配置的NS解析。我这里实验就没有配置其他主机了(实际配置一样)
父域:example.com 父域NS:ns1.example.com(10.116.72.6), ns2.example.com(10.116.72.7)
子域:ops.example.com 子域NS:ns1.ops.example.com(10.116.72.6), ns2.ops.example.com(10.116.72.7),

2.1 父域DNS服务器BIND配置

  • 第一步:在父域追加子域NS配置[父域主]

    cat example.com.zone 
    $TTL 600
    ;省略其他配置 ... ... ,注意修改序号
    ops             IN      NS      ns1.ops
    ops             IN      NS      ns2.ops
    ns1.ops			IN		A		10.116.72.6
    ns1.ops			IN		A		10.116.72.6
    
  • 第二步:父域DNS服务器,重启服务生效

    # 主DNS服务器
    named-checkconf #检查配置
    systemctl restart named.service  # rndc reload
    

2.2 子域DNS服务器BIND配置

DNS服务器BIND的配置安装参考之前的一篇记录文档:CentOS7.6域名服务器配置(一)使用Bind配置主从DNS服务器

  • 第一步:子域添加域ops.example.com的配置[主,从]
    主DNS服务器

    //省略其他配置 ... ... 
    zone "ops.example.com" IN {
            type master;
            file "ops.example.com.zone";
    };
    
    //重要,在子域ops DNS服务器上添加对父域example.com转发区,不然子域上解析不到父域
    //我这里不用配置是因为,我没有额外的主机配置子域,使用了同一台主机,客户端配置的是同一个地址
    //肯定可以解析到,及时这么配置了,也会报语法错误(已经存在的错误)
    //zone "example.com" IN {
    //        type forward;
    //        forwarders { 10.116.72.6; 10.116.72.7; };
    //};
    
      `从DNS服务器`
    
    //省略其他配置 ... ... 
    zone "ops.example.com" IN {
    	type slave;
    	masters { 10.116.72.6; };
    	masterfile-format text;
     	file "slaves/ops.example.com.zone";
    };
    
    //重要,在子域ops DNS服务器上添加对父域example.com转发区,不然子域上解析不到父域
    //我这里不用配置是因为,我没有额外的主机配置子域,使用了同一台主机,客户端配置的是同一个地址
    //肯定可以解析到,及时这么配置了,也会报语法错误(已经存在的错误)
    //zone "example.com" IN {
    //    type forward;
    //    forwarders { 10.116.72.6; 10.116.72.7; };
    //};
    
  • 第二步:添加子域区域文件ops.example.com.zone [],从自动同步

    cat /var/named/ops.example.com.zone 
    $TTL 600
    @       IN SOA  ns1.ops.example.com admin.ops.example.com (
                                            2019071903      ; serial
                                            2H              ; refresh
                                            5M              ; retry
                                            1D              ; expire
                                            2D )            ; minimum
    @               IN      NS      ns1.ops.example.com.
    @               IN      NS      ns2.ops.example.com.
    ns1             IN      A       10.116.72.6
    ns2             IN      A       10.116.72.7
    www             IN      A       10.116.72.4
    
  • 第三步:重启服务生效配置[主,从]

    # 辅助DNS服务器
    named-checkconf #检查配置
    systemctl restart named.service  # rndc reload
    
    # 主DNS服务器
    named-checkconf #检查配置
    systemctl restart named.service  # rndc reload
    

    可以看到子域区域文件已经同步到从DNS服务器了。

  • 第四步:验证
    找一个业务主机配置域名解析服务器,并验证

    # 配置
    vi /etc/resolv.conf
    nameserver 10.116.72.6
    nameserver 10.116.72.7
    
    
    # 验证,1
    dig -t NS ops.example.com
    
    ; <<>> DiG 9.9.4-RedHat-9.9.4-73.el7_6 <<>> -t NS ops.example.com
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 22578
    ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 3
    
    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 4096
    ;; QUESTION SECTION:
    ;ops.example.com.               IN      NS
    
    ;; ANSWER SECTION:
    ops.example.com.        600     IN      NS      ns2.ops.example.com.
    ops.example.com.        600     IN      NS      ns1.ops.example.com.
    
    ;; ADDITIONAL SECTION:
    ns1.ops.example.com.    600     IN      A       10.116.72.6
    ns2.ops.example.com.    600     IN      A       10.116.72.7
    
    ;; Query time: 1 msec
    ;; SERVER: 10.116.72.6#53(10.116.72.6)
    ;; WHEN: Fri Jul 19 14:33:14 CST 2019
    ;; MSG SIZE  rcvd: 112
    
    
    
    # 验证,2
    dig www.ops.example.com 
    
    ; <<>> DiG 9.9.4-RedHat-9.9.4-73.el7_6 <<>> www.ops.example.com
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18112
    ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3
    
    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 4096
    ;; QUESTION SECTION:
    ;www.ops.example.com.           IN      A
    
    ;; ANSWER SECTION:
    www.ops.example.com.    600     IN      A       10.116.72.4
    
    ;; AUTHORITY SECTION:
    ops.example.com.        600     IN      NS      ns1.ops.example.com.
    ops.example.com.        600     IN      NS      ns2.ops.example.com.
    
    ;; ADDITIONAL SECTION:
    ns1.ops.example.com.    600     IN      A       10.116.72.6
    ns2.ops.example.com.    600     IN      A       10.116.72.7
    
    ;; Query time: 1 msec
    ;; SERVER: 10.116.72.6#53(10.116.72.6)
    ;; WHEN: Fri Jul 19 14:34:36 CST 2019
    ;; MSG SIZE  rcvd: 132
    
    
    
    #验证,3
    ping www.ops.example.com
    PING www.ops.example.com (10.116.72.4) 56(84) bytes of data.
    64 bytes from www.example.com (10.116.72.4): icmp_seq=1 ttl=64 time=0.022 ms
    64 bytes from www.example.com (10.116.72.4): icmp_seq=2 ttl=64 time=0.069 ms
    

三,其他情况说明

到这里就配置完成了,有些其他情况说明下

  1. 就是不配置子域,使用 . 模拟子域的情况,也就是主机名称包括.
    例如www.ops.example.com 其中 www.ops 就是主机名称
    cat /var/named/example.com.zone
    ;其他配置省略... ...
    www.ops         IN      A       10.116.72.4
    
    你会发现解析是正常的,当然前提是设置 dnssec-enable no; dnssec-validation no;
    dig www.ops.example.com
    
    ; <<>> DiG 9.9.4-RedHat-9.9.4-73.el7_6 <<>> www.ops.example.com
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 17297
    ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3
    
    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 4096
    ;; QUESTION SECTION:
    ;www.ops.example.com.           IN      A
    
    ;; ANSWER SECTION:
    www.ops.example.com.    600     IN      A       10.116.72.4
    
    ;; AUTHORITY SECTION:
    example.com.            600     IN      NS      ns1.example.com.
    example.com.            600     IN      NS      ns2.example.com.
    
    ;; ADDITIONAL SECTION:
    ns1.example.com.        600     IN      A       10.116.72.6
    ns2.example.com.        600     IN      A       10.116.72.7
    
    ;; Query time: 1 msec
    ;; SERVER: 10.116.72.6#53(10.116.72.6)
    ;; WHEN: Fri Jul 19 14:47:06 CST 2019
    ;; MSG SIZE  rcvd: 132
    
    通过这种方式可以模拟子域的配置,在内网DNS配置解析比较简单方便.
  2. 在子域与父域在同一组服务器,NS相同的情况下,区域文件是否可以用同一个。这个没有测试,不知道能否这样配置

你可能感兴趣的:(Linux)