2024年4月19日发(作者:)
两种方法实现DNS主从服务器数据同步
为了保证更好地进行域名解析服务,一般在网络中设置主、从两台DNS服务器。由于
当前各ISP间的桥接存在带宽瓶颈,为了使不同ISP的用户快速访问高校内部网站,很多
学校在配置域名服务器时都采用了BIND 9的VIEW功能。其实现原理如下:对于发出域
名解析请求的不同源IP地址,针对同一域名解析到不同的目的IP地址,即用户通过最短
路径到达欲访问的网站。举例来说,对于校内同一台服务器,教育网用户发出的访问请求
解析到的域名IP地址是位于教育网上的服务器地址,网通用户解析到的域名IP地址是网
通上的服务器地址,这样使用户能够访问到最快的服务器。
主域名服务器使用的VIEW分界,按照不同查询来源地址来回应不同的答案,这对于
一般的查询工作是非常高效的。但是当从服务器进行SOA查询或者做Transfer时,如果
主服务器看到客户端请求,只能回应该客户端所在的VIEW,而不能顺利完成其他VIEW
的同步。保证主从域名服务器的数据同步,就是为域名服务正常工作提供保障。因此,如
何保证域名系统的主从服务器的数据同步性,就显得极为重要。本文分别利用BIND 9的
TRANSFER-SOURCE功能和TSIGKEY功能,阐述了这一问题的两种不同的解决方案。
触发同步的过程
首先介绍主从服务器的同步过程。触发同步过程的原因有4种:1.从域名服务器刚刚
启动;2.主域名服务器的Serial值增大;3.执行了rndc reload命令;4.到了主从服务器的
同步更新时间。
主从域名服务器开始同步(见图1):
1. 主服务器向从服务器发送notify消息
2. 从服务器收到主服务器发送notify消息,向主服务器返回一个notify response消
息。
3. 从服务器向主服务器发送SOA query消息。
4. 主服务器向从服务器返回SOA response消息。
5. 从服务器收到SOA response消息后,比对自身的Serial值,如果发现主服务器的
Serial值大于自身的Serial值,那么就发送Zone transfer request消息。
6. 主服务器返回Zone transfer response消息。
7. 主服务器执行Zone transfer。
两种主从服务器的数据同步法
根据主从服务器的同步步骤,要解决域名服务器的同步问题,主要问题是如何标识主
服务器的notify消息,即notify消息隶属于哪个VIEW、从服务器如何识别notify消息。
同样,notify response消息、SOA query、SOA response消息、Zone transfer request
消息、Zone transfer response消息、Zone transfer的数据也存在类似的问题。Bind 9
提供了两种标识此类信息的方法:1.利用TRANSFER-SOURCE功能,从服务器需要设置
和VIEW一一对应的IP地址;2.利用TSIGKEY功能对消息进行加密。
利用TRANSFER-SOURCE功能
环境假定:授权domain是;
主DNS的IP地址是210.44.112.66(DNS包含Internet和Cernet两个VIEW);
从DNS的IP地址是210.44.112.67(对应Cernet View)和210.44.112.68(对应
Internet View)。
1. 对主DNS的配置
include “/etc/”; //指定教育网地址文件,可以根据自己的配置来进行灵
活配置。
view “cernet” { //定义了一个Cernet view
match-clients {!210.44.112.68;cernet; }; //cernet是定义的教育网ACL
zone "." IN {
type hint;
file "";
};
zone “” {
type master;
file “” ;
allow-transfer { 210.44.112.67; };//使用210.44.112.67作Cernet zone transfer
};
};
view "internet" {
match-clients {!210.44.112.67; any; };
recursion no;
zone "." IN {
type hint;
file "";
};
zone "" IN {
type master;
file "";
allow-transfer { 210.44.112.68; }; //使用210.44.112.68作Internet zone transfer
};
};
2.对从服务器的配置
include “/etc/”; //指定教育网地址文件,可以根据自己的配置来进行灵
活配置。
view “cernet” {
match-clients {cernet; }; //cernet是定义的教育网ACL
zone "." IN {
type hint;
file "";
};
zone “” {
type slave;
file “” ;
masters { 210.44.112.66; };
allow-source { 210.44.112.67; };//和主DNS配置对应
};
};
view "internet" {
match-clients {any; };
recursion no;
zone "." IN {
type hint;
file "";
};
zone "" IN {
type slave;
file "";
masters { 210.44.112.66; };
allow-source { 210.44.112.68; }; //和主DNS配置对应
};
};
3.配置分析
在主服务器端配置VIEW中的match-client和allow-transfer标示信息,在从服务器
端配置VIEW中的masters和allow-source标识信息,这样做可以解决主从服务器同步
问题。
利用TSIGKEY功能
环境假定:授权域domain是;
主DNS的IP地址是210.44.112.66(DNS包含Internet和Cernet两个VIEW);
从DNS的IP地址是210.44.112.67。
1.对主服务器的配置
include “/etc/”; //指定教育网地址文件,可以根据自己的配置来进行灵
活配置。
view “cernet” { //定义了一个Cernet view
match-clients { key cernetkey; cernet; }; //范围是匹配这些用 cernetkey 加密 的
以及 cernet地址(?)
allow-transfer { key cernetkey; };
//只允许用 cernetkey 加密过的 zone transfer 请求
server 210.44.112.67 { keys cernetkey; }; // 向从服务器发送消息时,用 cernetkey
加密
zone "." IN {
type hint;
file "";
};
zone “” {
type master;
file “” ;
};
};
view "internet" {
match-clients {key internetkey; any; };
recursion no;
allow-transfer { key internetkey; }; // 只允许用 internetkey 加密过的 zone
transfer 请求
server 210.44.112.67 { keys internetkey; }; // 向从服务器发送消息时,用
internetkey 加密
zone "." IN {
type hint;
file "";
};
zone "" IN {
type master;
file "";
};
};
2.对从服务器的配置
include “/etc/”; //指定教育网地址文件,可以根据自己的配置来进行灵
活配置。
view “cernet” { //定义了一个Cernet view
match-clients { key cernetkey ;cernet; }; //范围是匹配这些用 cernetkey 加密的,
以及 cernet地址
allow-transfer {none };
// 禁止任何 zone transfer 请求
server 210.44.112.66 { keys cernetkey; };
// 向主服务器发送消息时,用 cernetkey 加密
zone "." IN {
type hint;
file "";
};
zone “” {
type slave;
masters {210.44.112.66;};
file “” ;
};
};
view "internet" {
match-clients {key internetkey; any; };
recursion no;
allow-transfer { none}; // 禁止任何 zone transfer 请求
server 210.44.112.66 { keys internetkey; };
// 向主服务器发送消息时,用 internetkey 加密
zone "." IN {
type hint;
file "";
};
zone "" IN {
type slave;
masters {210.44.112.66;};
file "";
};
};
使用dnssec-keygen命令生成 TSIG key。具体命令如下:
/usr/sbin/dnssec-keygen -a alg -b bits [-n type] [options] name
3.配置分析
使用TSIG对主从DNS配置,VIEW和KEY一一对应,从而解决了主从服务器间的消
息标示问题。
两方法的优缺点
两种方法比较而言,使用TRANSFER-SOURCE功能,需要多设置几个IP地址,配置
相对简单,原理容易理解,但是造成一定的IP地址浪费。使用TSIG KEY方法,要准备KEY
文件,并且KEY文件和VIEW要一一对应,做起来比较繁琐。
配置技巧
配置过程中的技巧及常见问题:
1.在配置文件中使用include语句,增加文件的可读性。像各种ACL,KEY文件都可
以使用include语句,在很大程度上减小了主配置文件的大小。
例:include ”/etc/”;
2.开始配置服务器时,关掉Linux的SElinux功能,因为SElinux功能会带来意想不到
的麻烦。
3.遇到问题时,多使用tail –f /var/log/messages查看日志。
工作不正常时,如果发现日志中有permission denied的字样,可以把所有
的配置文件权限改大,规避问题。
5.使用rndc reload . IN cernet重载cernet View下的。
修改ZONE文件之后,一定要记得将Serial值改大,然后执行rndc reload,才能实现数
据同步。
6.如果有部分外部域名解析不正常的情况,又没有充分的排错时间,可以使用forward
语句规避问题。如
options {
…
forwarders {202.102.128.68; //连通的两个DNS服务器
202.102.152.3;
};
…
}.
7.主从服务器的时区和时钟要一致,使用ntpdate同步时间。
(作者单位为聊城大学网络信息中心)
发布者:admin,转转请注明出处:http://www.yc00.com/news/1713511665a2263496.html
评论列表(0条)