注意:这里的从域名服务器是区域级别的概念
实验环境
ns1.magedu.com 172.18.71.101/24 CentOS-6.7-x86_64 master ns2.magedu.com 172.18.71.102/24 CentOS-7.2-x86_64 slaver
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
命令手动校准。
master
首先参照DNS-02-单服务器配置一个正向区域magedu.com
。
另外需要在master
的magedu.com
区域数据库文件中增加slaver
的NS
记录以及相应的A
记录。
$TTL 1D @ IN SOA @ ns-admin.magedu.com. ( 2016040801 1D 1H 1W 3H ) IN NS ns1 IN NS ns2 IN MX 10 mx1 ns1 IN A 172.18.71.101 ns2 IN A 172.18.71.102 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
检查区域解析数据库文件和主配置文件的语法
[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 ]
slaver
在slaver
的主配置文件/etc/named.rfc1912.zones
中增加区域magedu.com
。只需要指明自身是哪个master
的从属就可以,区域数据库文件是master
同步过来的。
zone "magedu.com" IN { type slave; file "slaves/magedu.com.zone"; masters { 172.18.71.101; }; allow-update { none; }; };
启动服务
[root@ns2 ~]# systemctl start named
如果严格按照以上步骤来操作,在slaver
上启动服务时master
中的magedu.com
区域会自动传送至slaver
中。
从master
的日志文件中可以看到做区域传送的过程
[root@ns1 named]# tail -20 /var/log/messages ... Apr 8 23:22:07 ns1 named[20836]: zone magedu.com/IN: loaded serial 2016040802 Apr 8 23:22:07 ns1 named[20836]: zone magedu.com/IN: sending notifies (serial 2016040802) Apr 8 23:22:07 ns1 named[20836]: client 172.18.71.102#32854: transfer of 'magedu.com/IN': AXFR-style IXFR started Apr 8 23:22:07 ns1 named[20836]: client 172.18.71.102#32854: transfer of 'magedu.com/IN': AXFR-style IXFR ended Apr 8 23:22:07 ns1 named[20836]: client 172.18.71.102#2637: received notify for zone 'magedu.com' Apr 8 23:23:11 ns1 named[20836]: client 172.18.71.102#42260: transfer of 'magedu.com/IN': AXFR started Apr 8 23:23:11 ns1 named[20836]: client 172.18.71.102#42260: transfer of 'magedu.com/IN': AXFR ended Apr 8 23:23:59 ns1 named[20836]: client 172.18.71.102#56313: transfer of 'magedu.com/IN': AXFR started Apr 8 23:23:59 ns1 named[20836]: client 172.18.71.102#56313: transfer of 'magedu.com/IN': AXFR ended Apr 8 23:24:00 ns1 named[20836]: client 172.18.71.102#56152: received notify for zone 'magedu.com' ...
在slaver
上可以看到magedu.com
区域数据库文件已经同步过来了。
[root@ns2 ~]# ls /var/named/slaves/ magedu.com.zone
但如果出现偏差,那么你首先需要尝试一下重载配置文件。
[root@ns1 named]# rndc reload server reload successful
然后尝试一下增加master
的区域数据库文件的序列号,然后再重载配置文件。因为只有slaver
发现master
的区域数据库文件的序列号比自己大时才会给做区域传送,所以master
的区域数据库文件如有修改应该增加其序列号。
如果区域传送仍然失败,你可以在slaver
上使用dig
命令来测试是否可以手动完成区域传送。如果可以,那么可能是配置问题,比如slaver
上存放区域数据库文件的目录不存在或没有权限等;如果手动区域传送也不行,排除一下网络故障。
[root@ns2 named]# dig -t axfr magedu.com @172.18.71.101 ; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7 <<>> -t axfr magedu.com @172.18.71.101 ;; global options: +cmd magedu.com. 86400 IN SOA magedu.com. ns-admin.magedu.com. 2016040802 86400 3600 604800 10800 magedu.com. 86400 IN NS ns1.magedu.com. magedu.com. 86400 IN NS ns2.magedu.com. magedu.com. 86400 IN MX 10 mx1.magedu.com. bbs.magedu.com. 86400 IN CNAME www.magedu.com. mx1.magedu.com. 86400 IN A 172.18.71.101 ns1.magedu.com. 86400 IN A 172.18.71.101 ns2.magedu.com. 86400 IN A 172.18.71.102 www.magedu.com. 86400 IN A 172.18.71.101 www.magedu.com. 86400 IN A 172.18.71.102 magedu.com. 86400 IN SOA magedu.com. ns-admin.magedu.com. 2016040802 86400 3600 604800 10800 ;; Query time: 1 msec ;; SERVER: 172.18.71.101#53(172.18.71.101) ;; WHEN: Fri Apr 08 23:33:00 CST 2016 ;; XFR size: 11 records (messages 1, bytes 267)
注意:AXFR
表示完整区域传送,LXFR
表示增量区域传送。只有第一次同步过程才会是AXFR
,后面区域数据库文件中再有增、删、改等变动时只会是LXFR
。
反向区域传送也是同理,不再赘述。