一、 主从DNS服务器同步原理
主从DNS服务器数据同步的过程,首先master DNS服务器每次修改完成并重启服务后,将传送notify给所有的slave DNS服务器。slave DNS服务器将查询master服务器的SOA记录,master DNS服务器收到请求后将SOA记录发送给Slave DNS服务器,Slave DNS服务器收到后同时对比查询结果中的serial值,如果serial值不大于本机的话将结束数据同步过程;但是如果serial值大于本机的话,slave DNS将发送zone transfer请求要求(AXFR/IXFR)。Master响应zone transfer请求并传送结果,直到整个slave更新完成。
二、 主、从DNS服务器安装配置 以下配置不考虑安全问题
这里主服务器的IP为192.168.175.200,从服务器IP为192.168.175.135
安装所需软件:yum -y install bind caching-nameserver
软件介绍:
BIND是一种开源的DNS(Domain Name System)协议的实现,包含对域名的查询和响应所需的所有软件。它是互联网上最广泛使用的一种DNS服务器,对于类UNIX系统来说,已经成为事实上的标准。
BIND软件包包括三个部分:
•DNS服务器。这是一个叫做named的程序,代表name daemon的简写。它根据DNS协议标准的规定,响应收到的查询。
•DNS解析库(resolver library)。一个解析器是一个程序,通过发送请求到合适的服务器并且对服务器的响应做出合适的回应,来解析对一个域名的查询。一个解析库是程序组件的集合,可以在开发其它程序时使用,为这些程序提供域名解析的功能。
•测试服务器的软件工具。
Caching-nameserver 为bind提供主配置文件模板
以下是详细配置:
1、主服务器配置:
首先拷贝主配置文件:
#cp /etc/named /etc/named.conf
修改主配置文件的属主、属组
#chown named:named /etc/named.conf
编辑主配置文件 以ghost.com域为例
#vim /etc/named.conf
options {
directory "/var/named";
};
zone "." IN {
type hint;
file "named.ca";
};
zone "localhost" IN {
type master;
file "localhost.zone";
};
zone "ghost.com" IN {
type master;
file "ghost.com.zone";
allow-transfer { 192.168.175.135;};
notify yes;
also-notify { 192.168.175.135;};
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local";
};
zone "175.168.192.in-addr-arpa" IN {
type master;
file "192.168.175.zone";
allow-transfer { 192.168.175.135;};
notify yes;
also-notify { 192.168.175.135;};
};
编辑区域文件:
(正向解析文件)
# vim /var/named/ghost.com.zone
$TTL 86400
@ 86400 IN SOA ns.ghost.com. root.ghost.com. (
2010090905 ; serial (d. adams)
5 ; refresh
5 ; retry
1W ; expiry
1D ) ; minimum
IN NS ns.ghost.com.
Ns.ghost.com. IN A 192.168.175.200
www.ghost.com. IN A 192.168.175.200
ftp.ghost.com. IN A 192.168.175.200
@ IN MX 10 mail.ghost.com.
mail.ghost.com. IN A 192.168.175.200
(反向解析文件)
# vim /var/named/192.168.175.zone
$TTL 86400
@ 86400 IN SOA ns.ghost.com. root.ghost.com. (
2010090905 ; Serial
5 ; Refresh
5 ; Retry
1W ; Expire
1D ) ; Minimum
IN NS ns.ghost.com.
200 IN PTR ns.ghost.com.
200 IN PTR www.ghost.com.
200 IN PTR ftp.ghost.com.
2、从服务器配置:
从服务器的安装很简单只需要配置named.conf文件即可,区域文件无须手动建立,但同样要修改主配置文件的属主、属组
#chown named:named /etc/named.conf
另外:还要将从服务器的/var/named/slaves/下所有文件的属主、属组都修改为named
#chown named:named /var/named/slaves
# vim /etc/named.conf
options {
directory "/var/named";
};
zone "." IN {
type hint;
file "named.ca";
};
zone "localhost" IN {
type master;
file "localhost.zone";
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local";
};
zone "175.168.192.in-addr-arpa" IN {
type slave;
file "slaves/192.168.175.zone";
masters { 192.168.175.200; };
notify yes;
also-notify { 192.168.175.135;};
};
zone "ghost.com" IN {
type slave;
file "slaves/ghost.com.zone";
masters { 192.168.175.200; };
notify yes;
also-notify { 192.168.175.135;};
};
上述配置后,分别启动主从的DNS服务器后,从服务器会在slaves/下生成ghost.com.zone和192.168.175.zone区域文件,这样主从服务器即建好了。
3、故障分析:
主DNS服务器修改记录或添加区域辅助DNS同步不过去,或者需要很长时间。
这样如果在现实生活中,会造成各地访问的结果不同。所以有必要研究一下主DNS服务器上修改完成后如何快速的同步给其它辅助的DNS。
为了查清故障的原因,这个时候输入命令tail -f /var/log/messages动态监控日志,发现没有产生任何日志。这个时候,思考了一下主辅DNS的工作原理,每次主DNS修改完成后重启服务会传送notify值,但是这里却没有传送。考虑到是区域文件中那几个时间的问题于是修改了一下 Refresh值为5 ,再次重启服务,结果很快就同步了。
在解决问题的过程中有的朋友说将SOA中的Refresh值修改小一点,没错!但是这个值什么时候生效呢?当我们主DNS服务器上修改完成后重启服务,会主动传送notify值,如果辅助DNS服务器没有收到才参考Refresh,Refresh 不成功,则参考Retry ,Retry 一直不成功, 则参考 Expire,如果Expire也不成功,则选择放弃zone transfer的过程。建议这几个参数的值为:Refresh=1H Retry=10M expiry=7D minimum=1D。