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
三,其他情况说明
到这里就配置完成了,有些其他情况说明下
- 就是不配置子域,使用
.
模拟子域的情况,也就是主机名称包括.
例如www.ops.example.com 其中 www.ops 就是主机名称
你会发现解析是正常的,当然前提是设置 dnssec-enable no; dnssec-validation no;cat /var/named/example.com.zone ;其他配置省略... ... www.ops IN A 10.116.72.4
通过这种方式可以模拟子域的配置,在内网DNS配置解析比较简单方便.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
- 在子域与父域在同一组服务器,NS相同的情况下,区域文件是否可以用同一个。这个没有测试,不知道能否这样配置