首页 > 系统运维 > Bind智能DNS主从同步
您的足迹
  • 你没有浏览过任何文章或者你没有开启cookies。

Bind智能DNS主从同步

在上一篇智能DNS的设定,已经能实现智能解析,但一台始终是不安全的,所以做了一个主从。当然主的服务器也做了一些修改,具体如下啦。假设你有两个view:liantong和dianxin,你修改了liantong的sheriy.com的view,现在/etc/int.d/named reload lt.sheriy.com ,这是会遇到以下问题:

1.从服务器不知道该更新哪个一个view,是电信还是联通呢?

2.假设从服务器按照SOA的refresh值去查主从的serial值 这时候该查主服务哪个view哪个值呢?

3.修改了主服务器记录之后 ,reload是哪一个view下面的值呢?

有问题肯定就有解决办法,还记得TSIG key 么?为什么它可以用来简化 view 的设置呢?

因为一旦使用 TSIG ,则两台 server 之间的通信都会用指定的 key 进行标识;通信双方必须具有一样的 key ,如果 key 不一致,则另一方会拒绝请求。

是否可以从这点推广到 view 的配置呢?

答案是可以的。

先介绍一下环境:

主服务器:公网IP:58.40.26.21;私网IP:192.168.1.2

从服务器:公网IP:22.26.14.163;私网IP:192.168.1.3

下面以具体的配置为例说明 :(注意,只列出部分语句而已 !!)

主服务器方面:

view “view_liantong” //定义一个名字叫view_liantong的视图
{
match-clients { key liantong-key;LT; };//匹配那些用liantong-key加密的请求和联通的IP,这个设置在上个博客有说明
recursion no;// 禁止处理来自 liantong 的主机的递归请求
allow-transfer {key liantong-key;};// 只允许用 liantong-key 加密过的 zone transfer 请求
server 192.168.1.3 {keys liantong-key;}; // 向从服务器发送消息时,用 liantong-key 加密

zone “.” IN {
type hint;
file “named.ca”;
};

zone “localhost” IN {
type master;
file “localhost.zone”;
allow-update { none; };
};

zone “0.0.127.in-addr.arpa” IN {
type master;
file “named.local”;
allow-update { none; };
};

zone “sheriy.com” {
type master;
file “184/lt.sheriy.com.db”;
also-notify { 192.168.1.3; };
notify YES;
};

};
};
view “view_dianxin”//定义一个名字叫view_dianxin的视图
{
match-clients { key dianxin-key ;DX; };//匹配那些用dianxin-key加密的请求和联通的IP,这个设置在上个博客有说明
recursion no;//禁止处理来自 liantong 的主机的递归请求
allow-transfer {key dianxin-key;};//只允许用 liantong-key 加密过的 zone transfer 请求
server 192.168.1.3 {keys dianxin-key;}; // 向从服务器发送消息时,用 dianxin-key 加密
zone “.” IN {
type hint;
file “named.ca”;
};

zone “localhost” IN {
type master;
file “localhost.zone”;
allow-update { none; };
};

zone “0.0.127.in-addr.arpa” IN {
type master;
file “named.local”;
allow-update { none; };
};

zone “sheriy.com” {
type master;
file “184/dx.sheriy.com.db”;
also-notify { 192.168.1.3; };
notify YES;
};

};

从服务器方面:

view “view_liantong”//定义一个名字叫view_liantong的视图
{
match-clients { key liantong-key ;LT; };//匹配那些用liantong-key加密的请求和联通的IP,这个设置在上个博客有说明
#allow-transfer {key liantong-key;};
recursion no;// 禁止处理来自 liantong 的主机的递归请求
allow-transfer {none;}; // 禁止任何人向从服务器请求 zone transfer
server 192.168.1.2 {keys liantong-key;}; // 向主服务器发送消息时,用liantong-key 加密
zone “.” IN {
type hint;
file “named.ca”;
};

zone “sheriy.com” {
type slave;
file “184/lt.sheriy.com.db”;
masters { 192.168.1.2;};

};

};
###############################This is for Dianxin’s IPS#######################################################
view “view_dianxin”
{
match-clients { key dianxin-key ;DX; };
#allow-transfer {key dianxin-key;};
recursion no;// 禁止处理来自 dianxin 的主机的递归请求
allow-transfer {none;}; // 禁止任何人向从服务器请求 zone transfer
server 192.168.1.2 {keys dianxin-key;}; // 向主服务器发送消息时,用 dianxin-key 加密
zone “.” IN {
type hint;
file “named.ca”;
};

# zone “localhost” IN {
# type slave;
# file “localhost.zone”;
# allow-update { none; };
# };

# zone “0.0.127.in-addr.arpa” IN {
# type slave;
# file “named.local”;
# allow-update { none; };
# };

zone “sheriy.com” {
type slave;
file “184/dx.sheriy.com.db”;
masters { 192.168.1.2;};

};

};

过程分解:

1.修改了dianxin视图中的sheriy.com解析的zone,正确的reload方法是:/etc/init.d/named reload dx.sheriy.com.db IN view_dianxin,记得后面加上IN view_dianxin

2)主服务器将向从服务器发送一个 notify 消息,这个消息是用 dianxin-key 标识过的。

(主–>从 notify)

3.当从服务器收到这个 notify 消息时,会根据消息尾部的 TSIG 部分找出 key 的名称 :dianxin-key 。

4.从服务器对比每个 view 的 match-clients ,发现匹配 view_dianxin 这个 view 的设定 

5.从服务器返回一个 notify response 消息,根据 view-dianxin  的 server 语句,用 dianxin-key 加密并发给主服务器。

    (从→主 :notify response.)

6.接着从服务器就会启动 soa query,同样该 query 也是用 dianxin-key 加密的。(从→主 :soa query)

7.主服务器收到这个 soa query 后,发现是用 dianxin-key加密的 ,返回 view_dianxin 的 dx.sheriy.com. SOA 记录,
并用 dianxin-key 进行表示(主→从 :soa query response.)

8.从服务器在收到来自主服务器的 response 后,和它自己 view_dianxin的 dx.sheriy.com zone 的 serial 比较,发现的确是
增大了

9.从服务器向主服务器发送 tcp 消息,请求 zone transfer (从→主 :zone transfer 请求)

10.主服务器检查 view_dianxin 的 allow-transfer ,发现该请求是以 dianxin-key 加密的,则允许进行 zone transfer 

11.主服务器返回 view_dianxin 的 sheriy.com 这个 zone 的数据(来自文件 dx.sheriy.com.db.

      (主→从 :zone transfer 开始)

12.zone transfer 完成,主从服务器关闭 TCP  连接 (zone transfer 完成.)

需要注意的:

1.两台服务器key要一样

2.两台服务器时间要一致,超过5分钟误差就无法同步了
参考:http://www.chinaunix.net/jh/16/870609.html

  1. pass 2014/04/03 下午 2:00 | #1

    不做配置,默认情况下,从DNS是否会更新全部view?

    • Moon 2014/04/17 下午 1:39 | #2

      应该不会。不过这种方案感觉不太好,还是放数据库靠谱。

评论提交中, 请稍候...

留言

可以使用的标签: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
Trackbacks & Pingbacks ( 0 )
  1. 还没有 trackbacks
Feed