Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1829560
  • 博文数量: 184
  • 博客积分: 10122
  • 博客等级: 上将
  • 技术积分: 5566
  • 用 户 组: 普通用户
  • 注册时间: 2005-12-08 12:32
文章存档

2011年(1)

2008年(183)

我的朋友

分类: LINUX

2008-03-03 20:32:47

10.3. DNS NOTIFY (Zone Change Notification)  

 

1、一般情况下,BIND 从服务器使用一个轮询的方法来检测是否需要进行 zone transfer。轮询的时间间隔由 SOA 记录的 refresh interval 字段决定。但是这种定时轮询的方案有可能导致数据更新的延迟,尤其是在使用动态更新的环境。

2、主服务器何时知道一个 zone 的数据发生了变化 :

Ø         收到 reload 指令后,在加载 zone data files 时,发现文件的 mtime 时间已经改变

Ø         收到关于某个 zone 的动态更新

Ø         name server 不会自动 reload 某个 zone

3、RFC 1996 中提出了一个方案,该方案允许主服务器通知从服务器关于 zone data 的变化。称为 'DNS NOTIFY'。

4、当主服务器注意到某个 zone 的 serial number 发生变化时,它发送一个特殊的消息给这个 zone的所有从服务器。主服务器是通过该 zone 的 NS 记录来确定那些是从服务器的,并从中剔除出本机。(具体方法是忽略 SOA 的 MNAME 字段中指定的 name server)

5、当 name server 检测到序列号有变化时,就会发出 notify 消息。不管序列号是多少,是增加还是减少,都会发出 notify 消息。至于从服务器收到 notify 消息后,是否会进行 transfer ,则取决于 notify 消息中的序列号和从服务器上的序列号哪个更大。

6、当一个从服务器接收到一个关于某个 zone 的 NOTIFY 通知时,它发出一个 NOTIFY 响应包。该响应包告诉主服务器它收到了该 NOTIFY 通知,所以主服务器可以停止向它继续发送 NOTIFY 通知了。假如从服务器执行完 zone transfer 了,按照 RFC 1996 的要求,它必须向该 zone 的其他权威服务器(包括主服务器)发出自己的 NOTIFY 通知。这么做的目的是因为某些主服务器可能无法直接向从服务器发送 NOTIFY 通知,或者从服务器无法直接同主服务器通信(因为他们使用其他从服务器作为主服务器)。特别是后一种,当一个从服务器完整 zone transfer 后,再向它的“从服务器”发出 notify 消息,这样那些“二级从服务器”也能得以更新了。

7、从服务器只接受来自它所配置的主服务器的 NOTIFY 通知,从其他服务器来的 NOTIFY 消息一律被忽略 !!

8、在 BIND 8/9 中,NOTIFY 特性默认是开启的,但也可以关闭。可以针对单独某个 zone 关闭 notify 功能。

文本框: options {
		notify yes|no;
};

zone “xxx“ {
		notify yes|no;
};

 

9、also-notify 语句 :

Ø         考虑那些没有在上级域注册的内部 name server ,它们也需要 NOTIFY 消息以尽快更新它们的数据,虽然它们并不服务于外界,而是专门服务于内部网络

Ø         also-notify 带一个 address match list 作为参数

Ø         notify explicit + also-notify 将强制 BIND 忽略 NS 记录,只将 NOTIFY 消息发送给 also-notify 指定的name server 。

 

阅读(2771) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~