实验环境
ns1.magedu.com 172.18.71.101/24 CentOS-6.7-x86_64 父域 ns1.dev.magedu.com 172.18.71.102/24 CentOS-7.2-x86_64 子域 localhost.localdomain 172.18.71.103/24 CentOS-7.2-x86_64 测试机
iptables
与SELinux
均处于关闭状态。
安装bind
[root@ns1 ~]# yum install -y bind bind-libs bind-utils
首先,分别修改两个节点主机的主配置文件/etc/named.conf
,注释掉仅允许本机查询请求和dnssec
(可能影响实验结果),并在监听地址列表中增加各自向外部提供服务的IP
地址。
options { listen-on port 53 { 127.0.0.1; 172.18.71.101; }; ... //allow-query { localhost; }; ... //dnssec-enable yes; //dnssec-validation yes; //dnssec-lookaside auto; ... };
一般来说,多节点协同工作首先就是要校准时间,使之时间同步。联网状态下可使用ntpdate
命令统一找授时中心校准,不能联网可使用date
命令手动校准。
首先参照DNS-02-单服务器配置一个正向区域magedu.com
。
另外需要在父域的magedu.com
区域数据库文件中增加子域的NS
记录以及相应的A
记录。
$TTL 1D @ IN SOA @ ns-admin.magedu.com. ( 2016040801 1D 1H 1W 3H ) IN NS ns1 IN MX 10 mx1 ns1 IN A 172.18.71.101 mx1 IN A 172.18.71.101 www IN A 172.18.71.101 www IN A 172.18.71.102 bbs IN CNAME www dev.magedu.com. IN NS ns1.dev.magedu.com. ns1.dev.magedu.com. IN A 172.18.71.102
检查区域解析数据库文件和主配置文件的语法
[root@ns1 named]# named-checkzone magedu.com magedu.com.zone zone magedu.com/IN: loaded serial 2016040801 OK [root@ns1 named]# named-checkconf
启动服务
[root@ns1 named]# /etc/init.d/named start Generating /etc/rndc.key: [ OK ] Starting named: [ OK ]
首先参照DNS-02-单服务器配置一个正向区域dev.magedu.com
。
$TTL 1D @ IN SOA @ ns-admin.dev.magedu.com. ( 2016040901 1D 1H 1W 3H ) IN NS ns1 IN MX 10 mx1 ns1 IN A 172.18.71.102 mx1 IN A 172.18.71.102 www IN A 172.18.71.102 bbs IN CNAME www
检查区域解析数据库文件和主配置文件的语法
[root@ns1 named]# named-checkzone dev.magedu.com dev.magedu.com.zone zone dev.magedu.com/IN: loaded serial 2016040901 OK [root@ns1 named]# named-checkconf
启动服务
[root@ns2 ~]# systemctl start named
使用父域服务器解析子域域名,可以得到结果。
[root@localhost ~]# dig -t A www.dev.magedu.com @172.18.71.101 ; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7 <<>> -t A www.dev.magedu.com @172.18.71.101 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62292 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;www.dev.magedu.com. IN A ;; ANSWER SECTION: www.dev.magedu.com. 86100 IN A 172.18.71.102 ;; AUTHORITY SECTION: dev.magedu.com. 86400 IN NS ns1.dev.magedu.com. ;; Query time: 2 msec ;; SERVER: 172.18.71.101#53(172.18.71.101) ;; WHEN: 五 4月 08 20:57:43 CST 2016 ;; MSG SIZE rcvd: 81
关闭子域服务
[root@ns1 ~]# systemctl stop named
清空父域服务器的缓存中的解析结果
[root@ns1 ~]# rndc flush
再来做上面的测试,可以看到无法得到解析结果。
[root@localhost ~]# dig -t A www.dev.magedu.com @172.18.71.101 ; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7 <<>> -t A www.dev.magedu.com @172.18.71.101 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 49365 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;www.dev.magedu.com. IN A ;; Query time: 2 msec ;; SERVER: 172.18.71.101#53(172.18.71.101) ;; WHEN: 五 4月 08 21:17:21 CST 2016 ;; MSG SIZE rcvd: 47
使用子域服务器解析父域域名,可以看到并没有解析到正确结果,这是因为子域服务器开启允许递归选项,它在自身无法得到结果的情况下去联网找根域做迭代查询取得了结果,对于客户端来说就是子域服务器帮忙做了递归查询。
[root@localhost ~]# dig -t A www.magedu.com @172.18.71.102 ; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7 <<>> -t A www.magedu.com @172.18.71.102 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12729 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 10 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;www.magedu.com. IN A ;; ANSWER SECTION: www.magedu.com. 600 IN A 101.200.188.230 ;; AUTHORITY SECTION: magedu.com. 172799 IN NS v2s2.xundns.com. magedu.com. 172799 IN NS v2s1.xundns.com. ;; ADDITIONAL SECTION: v2s1.xundns.com. 172799 IN A 115.238.253.250 v2s1.xundns.com. 172799 IN A 124.232.156.76 v2s1.xundns.com. 172799 IN A 183.57.38.184 v2s1.xundns.com. 172799 IN A 113.17.169.37 v2s1.xundns.com. 172799 IN A 115.238.241.21 v2s2.xundns.com. 172799 IN A 116.10.184.143 v2s2.xundns.com. 172799 IN A 121.10.104.13 v2s2.xundns.com. 172799 IN A 115.238.241.20 v2s2.xundns.com. 172799 IN A 115.238.253.252 ;; Query time: 2385 msec ;; SERVER: 172.18.71.102#53(172.18.71.102) ;; WHEN: 五 4月 08 21:00:26 CST 2016 ;; MSG SIZE rcvd: 248
修改子域服务器的主配置文件/etc/named.conf
,关闭掉允许递归选项。
[root@ns1 ~]# vim /etc/named.conf options { ... recursion no; ... };
重载配置文件
[root@ns1 ~]# rndc reload server reload successful
再来做上面测试,这次就完全得不到解析结果了。
[root@localhost ~]# dig -t A www.magedu.com @172.18.71.102 ; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7 <<>> -t A www.magedu.com @172.18.71.102 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 31585 ;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1 ;; WARNING: recursion requested but not available ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;www.magedu.com. IN A ;; Query time: 1 msec ;; SERVER: 172.18.71.102#53(172.18.71.102) ;; WHEN: 五 4月 08 21:07:28 CST 2016 ;; MSG SIZE rcvd: 43
子域授权即父域服务器将自己所辖区域中的一部分交给子域服务器去负责解析。
在使用父域服务器去解析子域域名时,如果子域服务停止并且父域服务器中没有相应的缓存结果,则没有办法完成解析。
而反过来,子域服务器却并不能够解析父域域名。如果子域服务器允许
查询,则会去互联网上找根域迭代查询直至取得结果;否则无法取得解析结果。(子域服务器查父域域名需要层层迭代是非常浪费资源的方式,这显然不是我们所期望的,因此实际中一般都通过转发的方式来解决这一问题。参照DNS-05-转发)
反向区域的子域授权比较繁琐,这里不做介绍。