centos6下DNS主从配置
一、DNS主从同步原理
本篇承接上两篇DNS的配置部分,本篇的主题是DNS的主从配置。主辅DNS服务器数据同步的过程:
1、master DNS服务器每次修改完成并重启服务后,将传送notify给所有的slave DNS服务器; 2、slave DNS服务器将查询master服务器的SOA记录; 3、master DNS服务器收到请求后将SOA记录发送给Slave DNS服务器,Slave DNS服务器收到后同时对比查询结果中的serial值; 4、如果serial值不大于本机的话将结束数据同步过程;但是如果serial值大于本机的话,slave DNS将发送zone transfer请求要求(AXFR/IXFR)。Master响应zone transfer请求并传送结果,直到整个slave更新完成。
二、测试环境
配置前,需要先将主从服务器的时间先进行同步
1192.168.0.103 NS1 主DNS服务器
2192.168.0.107 NS2 从DNS服务器
三、主从环境搭建
1、主DNS配置部分
主服务器上named.conf部分无需变动,/etc/named.rfc1912.zones 部分也可以不变动,但是出于安全和加快同步速度,我们还是会增加一部分配置,完整配置如下 :
1# cat /etc/named.rfc1912.zones
2zone "localhost.localdomain" IN {
3 type master;
4 file "named.localhost";
5 allow-update { none; };
6};
7zone "localhost" IN {
8 type master;
9 file "named.localhost";
10 allow-update { none; };
11};
12zone "1.0.0.127.in-addr.arpa" IN {
13 type master;
14 file "named.loopback";
15 allow-update { none; };
16};
17zone "0.in-addr.arpa" IN {
18 type master;
19 file "named.empty";
20 allow-update { none; };
21};
22zone "361way.com" IN {
23 type master;
24 file "361way.com.zone";
25 notify yes; //使用该功能,是指在主服器一旦有更新,立即通知从DNS
26 also-notify { 192.168.0.107; }; //指定通知哪些主机,一般上面的notify yes为notify explicit时使用
27 allow-transfer { 192.168.0.107; }; //指定从服器的IP
28};
29zone "0.168.192.in-addr.arpa" IN{
30 type master;
31 file "192.168.0.zone";
32 notify yes;
33 also-notify { 192.168.0.107; };
34 allow-transfer { 192.168.0.107; };
35};
除了named.rfc1912.zones 文件,我们还需要在正反区域配置文件中增加从服务器的信息,具体如下:
1# cat 361way.com.zone
2$TTL 600
3$ORIGIN 361way.com.
4@ IN SOA ns.361way.com. root.361way.com. (
5 2014121005 ;serial //记住这个串每修改一次值+1下,后面在同步部分时,也会提到和后面几个时间的关系
6 1D ;refresh
7 5M ;retry
8 1W ;expiry
9 1H) ;minimum
10@ IN NS ns1.361way.com. //主DNS
11@ IN NS ns2.361way.com. //从DNS
12 IN MX 5 mail.361way.com.
13ns1 IN A 192.168.0.103 //主DNS对应的IP
14ns2 IN A 192.168.0.107 //从DNS对应的IP
15@ IN A 192.168.0.102
16www IN A 192.168.0.103
17mail IN A 192.168.0.109
18pop3 IN A 192.168.0.103
19iamp4 IN A 192.168.0.103
反向区域文件也一样:
1# cat 192.168.0.zone
2$TTL 600
3$ORIGIN 0.168.192.in-addr.arpa.
4@ IN SOA ns1.361way.com. root.361way.com. (
5 2014121005 ;serial
6 1D ;refresh
7 5M ;retry
8 1W ;expiry
9 1H) ;minimum
10@ IN NS ns1.361way.com.
11@ IN NS ns2.361way.com.
12 IN MX 5 mail.361way.com.
13103 IN PTR ns1.361way.com.
14107 IN PTR ns2.361way.com.
15103 IN PTR www.361way.com.
16102 IN PTR 361way.com.
17109 IN PTR mail.361way.com.
18103 IN PTR pop3.361way.com.
19103 IN PTR iamp4.361way.com.
2、从DNS配置部分
从DNS的/etc/named.conf直接从主DNS上直接scp过来,named.rfc1912.zones也可以从主DNS上scp过来,不过copy过来后,还需要修改下,自定义关键部分如下:
1zone "361way.com" IN {
2 type slave; //类型是slave,与上面的master对应
3 file "slaves/361way.com.zone"; //文件同步到/var/named/slaves目录下的
4 masters { 192.168.0.103; }; //指定主DNS服务器信息
5 allow-notify {192.168.0.103; }; //指定允许notify的主机信息
6};
7zone "0.168.192.in-addr.arpa" IN{
8 type slave;
9 file "slaves/192.168.0.zone";
10 masters { 192.168.0.103; };
11 allow-notify {192.168.0.103; };
12};
从服务器上配置完成后,直接启动named服务即可,并重启下主DNS上的named服务。
3、同步日志
主服务器上的/var/log/message中的同步记录日志如下:
1Nov 12 00:43:53 localhost named[6318]: managed-keys-zone ./IN: loaded serial 15
2Nov 12 00:43:53 localhost named[6318]: running
3Nov 12 00:43:53 localhost named[6318]: zone 361way.com/IN: sending notifies (serial 2014121005)
4Nov 12 00:43:53 localhost named[6318]: zone 0.168.192.in-addr.arpa/IN: sending notifies (serial 2014121005)
5Nov 12 00:46:32 localhost named[6318]: client 192.168.0.107#57508: transfer of '361way.com/IN': AXFR-style IXFR started
6Nov 12 00:46:32 localhost named[6318]: client 192.168.0.107#57508: transfer of '361way.com/IN': AXFR-style IXFR ended
7Nov 12 00:46:32 localhost named[6318]: client 192.168.0.107#27744: received notify for zone '361way.com'
8Nov 12 00:50:53 localhost named[6318]: client 192.168.0.107#54176: transfer of '0.168.192.in-addr.arpa/IN': AXFR-style IXFR started
9Nov 12 00:50:53 localhost named[6318]: client 192.168.0.107#54176: transfer of '0.168.192.in-addr.arpa/IN': AXFR-style IXFR ended
四、相关问题
在主从配置中很多人遇到同步或启动出错的问题,一般先确认并排除时间不同步和named用户无法读文件的问题。然后再确认是否启用了notify功能,该功能也可以 在全局项options内配置,只不过全局配置是针对所有域的。
关于同步时间过长的问题?在解决问题的过程中有的朋友说将SOA中的Refresh值修改小一点,没错!但是这个值什么时候生效呢?当我们主DNS服务器上修改完成后 重启服务,会主动传送notify值(但并不是立即同步,中间还是会有几分钟的时间间隔的,具体详见参考页面中 的DNS与BIND中notify的原理),如果辅助DNS服务器没有收到才参考Refresh,Refresh 不成功,则参考Retry ,Retry 一直不成功, 则参考 Expire,如果Expire也 不成功,则选择放弃zone transfer的过程。
在实际应用中如果存在较多的slave的情况下还要考虑如下情况。
对于master而言:
- 是否有delay notify消息,这个配置是 notify-delay,默认是5s,有必要的话是需要缩短的。
- transfers-out 限制同时允许区传输的数量,默认是10,如果slave多,zone多需要调大。
- serial-query-rate 对于master而言会限制master给slave发送notify的速度,默认是20,需要调大。
对于slave而言:
- transfers-per-ns限制了从单个master同步的并发,默认也是10,需要调大。
- transfers-in 限制了同时从master(可能有多个)同步的总数,默认是10,需要调大。
- serial-query-rate 在slave中会限制slave向mastetr做SOA查询的频率。默认是20,需要调大。
五、测试
测试时,将测试主机的DNS修改为从DNS先测试是否能正常解析;测试完成后,可以同时配置主备DNS,将主服务器的DNS服务关掉 后,可以再验证下从服务器是否仍可以提供服务。具体步骤省略(可以参看上一篇)。
参考页面 DNS与BIND(第5版) lsscto的博客
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
- Link: https://blog.361way.com/bind-master-slave/4811.html
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.