centos6下DNS主从配置

2013年2月23日 发表评论 阅读评论

一、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更新完成。

dns-master-slave

二、测试环境

配置前,需要先将主从服务器的时间先进行同步

192.168.0.103      NS1        主DNS服务器
192.168.0.107      NS2        从DNS服务器

三、主从环境搭建

1、主DNS配置部分

主服务器上named.conf部分无需变动,/etc/named.rfc1912.zones 部分也可以不变动,但是出于安全和加快同步速度,我们还是会增加一部分配置,完整配置如下:

# cat /etc/named.rfc1912.zones
zone "localhost.localdomain" IN {
        type master;
        file "named.localhost";
        allow-update { none; };
};
zone "localhost" IN {
        type master;
        file "named.localhost";
        allow-update { none; };
};
zone "1.0.0.127.in-addr.arpa" IN {
        type master;
        file "named.loopback";
        allow-update { none; };
};
zone "0.in-addr.arpa" IN {
        type master;
        file "named.empty";
        allow-update { none; };
};
zone "361way.com" IN {
           type master;
           file "361way.com.zone";
           notify yes;     //使用该功能,是指在主服器一旦有更新,立即通知从DNS
           also-notify { 192.168.0.107;  };  //指定通知哪些主机,一般上面的notify yes为notify explicit时使用
           allow-transfer { 192.168.0.107;  };  //指定从服器的IP
};
zone "0.168.192.in-addr.arpa" IN{
           type master;
           file "192.168.0.zone";
           notify yes;
           also-notify { 192.168.0.107;  };
           allow-transfer { 192.168.0.107;  };
};

除了named.rfc1912.zones 文件,我们还需要在正反区域配置文件中增加从服务器的信息,具体如下:

# cat 361way.com.zone
$TTL 600
$ORIGIN 361way.com.
@      IN      SOA     ns.361way.com.  root.361way.com. (
                        2014121005      ;serial //记住这个串每修改一次值+1下,后面在同步部分时,也会提到和后面几个时间的关系
                        1D              ;refresh
                        5M              ;retry
                        1W              ;expiry
                        1H)             ;minimum
@      IN      NS      ns1.361way.com.       //主DNS
@      IN      NS      ns2.361way.com.       //从DNS
       IN      MX  5   mail.361way.com.
ns1     IN     A       192.168.0.103         //主DNS对应的IP
ns2     IN     A       192.168.0.107         //从DNS对应的IP
@      IN      A       192.168.0.102
www    IN      A       192.168.0.103
mail   IN      A       192.168.0.109
pop3   IN      A       192.168.0.103
iamp4  IN      A       192.168.0.103

反向区域文件也一样:

# cat 192.168.0.zone
$TTL 600
$ORIGIN 0.168.192.in-addr.arpa.
@      IN      SOA     ns1.361way.com.  root.361way.com. (
                        2014121005      ;serial
                        1D              ;refresh
                        5M              ;retry
                        1W              ;expiry
                        1H)             ;minimum
@      IN      NS      ns1.361way.com.
@      IN      NS      ns2.361way.com.
       IN      MX   5 mail.361way.com.
103      IN      PTR     ns1.361way.com.
107      IN      PTR     ns2.361way.com.
103      IN      PTR     www.361way.com.
102      IN      PTR     361way.com.
109      IN      PTR     mail.361way.com.
103      IN      PTR     pop3.361way.com.
103      IN      PTR     iamp4.361way.com.

2、从DNS配置部分

从DNS的/etc/named.conf直接从主DNS上直接scp过来,named.rfc1912.zones也可以从主DNS上scp过来,不过copy过来后,还需要修改下,自定义关键部分如下:

zone "361way.com" IN {
           type slave;   //类型是slave,与上面的master对应
           file "slaves/361way.com.zone";  //文件同步到/var/named/slaves目录下的
           masters { 192.168.0.103; };     //指定主DNS服务器信息
           allow-notify {192.168.0.103; }; //指定允许notify的主机信息
};
zone "0.168.192.in-addr.arpa" IN{
           type slave;
           file "slaves/192.168.0.zone";
           masters { 192.168.0.103; };
           allow-notify {192.168.0.103; };
};

从服务器上配置完成后,直接启动named服务即可,并重启下主DNS上的named服务。

3、同步日志

主服务器上的/var/log/message中的同步记录日志如下:

Nov 12 00:43:53 localhost named[6318]: managed-keys-zone ./IN: loaded serial 15
Nov 12 00:43:53 localhost named[6318]: running
Nov 12 00:43:53 localhost named[6318]: zone 361way.com/IN: sending notifies (serial 2014121005)
Nov 12 00:43:53 localhost named[6318]: zone 0.168.192.in-addr.arpa/IN: sending notifies (serial 2014121005)
Nov 12 00:46:32 localhost named[6318]: client 192.168.0.107#57508: transfer of '361way.com/IN': AXFR-style IXFR started
Nov 12 00:46:32 localhost named[6318]: client 192.168.0.107#57508: transfer of '361way.com/IN': AXFR-style IXFR ended
Nov 12 00:46:32 localhost named[6318]: client 192.168.0.107#27744: received notify for zone '361way.com'
Nov 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
Nov 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而言: 

1. 是否有delay notify消息,这个配置是 notify-delay,默认是5s,有必要的话是需要缩短的。 

2. transfers-out 限制同时允许区传输的数量,默认是10,如果slave多,zone多需要调大。 

3. serial-query-rate 对于master而言会限制master给slave发送notify的速度,默认是20,需要调大。 

对于slave而言: 

1. transfers-per-ns限制了从单个master同步的并发,默认也是10,需要调大。 

2. transfers-in 限制了同时从master(可能有多个)同步的总数,默认是10,需要调大。 

3. serial-query-rate 在slave中会限制slave向mastetr做SOA查询的频率。默认是20,需要调大。 

五、测试

测试时,将测试主机的DNS修改为从DNS先测试是否能正常解析;测试完成后,可以同时配置主备DNS,将主服务器的DNS服务关掉后,可以再验证下从服务器是否仍可以提供服务。具体步骤省略(可以参看上一篇)。

参考页面

DNS与BIND(第5版)

lsscto的博客




本站的发展离不开您的资助,金额随意,欢迎来赏!

You can donate through PayPal.
My paypal id: itybku@139.com
Paypal page: https://www.paypal.me/361way

  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.