分类: LINUX
2008-03-03 20:39:14
10.10. A Nonrecursive Name
Server
1、默认 Resolver 发出的是递归查询,而且默认 BIND name server 也处理所有的递归请求。
2、但某些情况下,服务器应该被配置为不接受递归请求,例如根域服务器。根域服务器不接受递归请求的原因 :
Ø
因为根域服务器太忙了,它们没有精力来回答递归查询。
Ø
接受递归请求将会建立缓存,如此根域服务器的缓存将会变得十分巨大
3、关于递归/非递归方面的配置语句有 recursion 和 allow-recursion 语句。两者都只能放在 options 或者 view 语句中,不能用于 zone 语句,也就是说你不能设置 BIND 不接受对某个 zone 的递归请求。
4、recursion 与
allow-recursion 的区别 :
Ø
recursion 语句用于控制全局或者某个 view启用/关闭递归功能,对任何地址都一样;
Ø
allow-recursion 带一个 address match
list ,对该匹配该列表的地址允许接受递归请求,其余的一律当成 iterative 请求来看待 :也就是如果知道答案就返回具体的答案;如果不知道答案就返回一个
Referral 消息
Ø
recursion no 只对外部域名有效,如果查询的是本地zone域名(仅限于该 name server 上所定义的 zone,不包括下级子域)则可以回答。因为解析外部域名需要查询外部 name server ,这才是 recursion no 控制和关心的部分,如果查询的是本地 zone 的数据,当然不需要担心本地 name server 被诱导,可以直接返回答案。
5、配置一台非递归服务器要注意的地方 :
Ø
保证该非递归服务器不出现在客户机的 /etc/resolv.conf 的
nameserver 指令中
Ø
保证该非递归服务器不被其他 name server 当成转发器 (forwarder)
Ø
推荐使用 allow-recursion 而不是
recursion
Ø
该非递归服务器可以出现在 zone data file 的 NS 记录中。它可以正常的接收其他 name server 发来的查询
n
外部 name server 是通过上级域的
Referral 消息找到该非递归服务器的
n
外部 name server 在得到上级域的
Referral 消息后,向该非递归服务器发送的查询是 iterative query ,而不是 recusive query ,所以该非递归服务器仍然可以回答那些它所权威的 zone 的查询。但不能用于查询外部域名了。