实验环境
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-04-子域授权配置一个父域服务器和一个子域服务器。
现在的需求是在使用子域服务器去解析父域域名时不要让子域服务器去层层递归查询而是直接交给父域服务器去完成解析。实现方法是转发,但是有两种不同的方式,一种是区域转发,一种是全局转发。
在子域服务器上的增加magedu.com
的区域定义。这里forward
方式也有两种类型:first
或者only
。first
是先尝试转发,如果父域服务器没有响应再自行去迭代查询,而only
是只转发。可以根据实际情况去选择,一般来说first
的灵活度要大一些,但是如果你的服务器根本就不能连接互联网就没有必要用first
了。
[root@ns1 ~]# vim /etc/named.rfc1912.zones ... zone "magedu.com" IN { type forward; forward first; forwarders { 172.18.171.101; }; };
检查主配置文件的语法
[root@ns1 named]# named-checkconf
启动服务
[root@ns2 ~]# systemctl start named
在测试机器上使用dig
测试,通过区域转发的方式子域服务器解析父域域名可以得到结果了。
[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: 24093 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;www.magedu.com. IN A ;; ANSWER SECTION: www.magedu.com. 85317 IN A 172.18.71.101 www.magedu.com. 85317 IN A 172.18.71.102 ;; AUTHORITY SECTION: magedu.com. 86343 IN NS ns1.magedu.com. ;; Query time: 1 msec ;; SERVER: 172.18.71.102#53(172.18.71.102) ;; WHEN: 五 4月 08 23:04:56 CST 2016 ;; MSG SIZE rcvd: 93
而非此转发区域的域名解析则不会转发,而是由子域服务器去迭代查询的。但子域服务器无法联网,因此查询不到结果。
[root@localhost ~]# dig -t A www.baidu.com @172.18.71.102 ; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7 <<>> -t A www.baidu.com @172.18.71.102 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 38245 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;www.baidu.com. IN A ;; Query time: 8 msec ;; SERVER: 172.18.71.102#53(172.18.71.102) ;; WHEN: 五 4月 08 23:51:02 CST 2016 ;; MSG SIZE rcvd: 42
全局转发时,就不是定义转发区域了,而是在主配置文件/etc/named.conf
中直接定义了。
options { ... forward only; forwarders { 172.18.71.101; }; ... };
检查主配置文件的语法
[root@ns1 named]# named-checkconf
启动服务
[root@ns2 ~]# systemctl start named
在测试机器上使用dig
测试,通过全局转发的方式子域服务器解析父域域名也可以得到结果。
[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: 43069 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;www.magedu.com. IN A ;; ANSWER SECTION: www.magedu.com. 83773 IN A 172.18.71.101 www.magedu.com. 83773 IN A 172.18.71.102 ;; AUTHORITY SECTION: magedu.com. 84799 IN NS ns1.magedu.com. ;; Query time: 1 msec ;; SERVER: 172.18.71.102#53(172.18.71.102) ;; WHEN: 五 4月 08 23:30:41 CST 2016 ;; MSG SIZE rcvd: 93
此时非此转发区域的域名解析也会转发,然后由父域服务器去做解析。因为父域服务器可以联网,所以可以查到结果。
[root@localhost ~]# dig -t A www.baidu.com @172.18.71.102 ; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7 <<>> -t A www.baidu.com @172.18.71.102 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12108 ;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;www.baidu.com. IN A ;; ANSWER SECTION: www.baidu.com. 50 IN CNAME www.a.shifen.com. www.a.shifen.com. 299 IN A 61.135.169.125 www.a.shifen.com. 299 IN A 61.135.169.121 ;; Query time: 845 msec ;; SERVER: 172.18.71.102#53(172.18.71.102) ;; WHEN: 五 4月 08 23:53:45 CST 2016 ;; MSG SIZE rcvd: 101
区域转发意味着很多解析请求需要子域服务器自己去迭代查询,全局转发则意味着将大部分的压力都转移给父域服务器,所以选择区域转发还是全局转发需要根据实际情况来决定。
同时这里也存在一个问题,如果我们的服务器没有做任何安全设置,允许对任何主机的递归查询请求,就会出现别人将解析请求转发到我们的服务器上的情况。被人占便宜事小,影响到业务事大,这是我们不愿意看到的。参照DNS-06-安全设置