我一直在检查BIND / DNS文档,我一直无法find明确的答案。 tl; dr – 查询委派区域的辅助名称服务器启用recusion时,logging不起作用。 而且,由定义,禁用recursion也不起作用,因为从我们的angular度来看,在区域中定义的所有内容都是NS和粘合logging。
软件堆栈:CentOS 5.4 x86上的bind-9.3.6-4用于辅助名称服务器; 在Centos 4.7 x86上为主名称服务器绑定9.2.4-30。
我将分别使用master和primary,slave和secondary作为同义词。
我们的设置如下(名称/ IP更改为保护无辜):
ns.pr.example.com ==主名称服务器,10.10.0.1,192.168.0.1
ns1.pr.example.com ==辅助名称服务器,10.11.0.1,192.168.0.2
ns2.pr.example.com ==辅助名称服务器,10.11.0.2,192.168.0.3
delegated.pr.example.com ==委托的子区域
nsdelegated.pr.example.com == authoratative NS for
delegated.pr.example.com子域,10.11.0.5不在我们的控制之下!
您会注意到,ns1和ns2可以通过共享networking – 192.168.0.0/24与ns.pr.example.com进行通信。 但是,ns.pr.example.com 无法与仅具有10.11.0.0/24地址的nsdelegated.pr.example.com主机通信。
192.168networking是我们的公共IP空间的替代品。 但是10.10和10.11networking是私有的,封闭的networking用于集群计算。 将ns.pr.example.com直接或通过静态路由连接到10.11networking是不可能的。
在主名称服务器ns.pr.example.com上,以下定义将与更新后的序列一起添加到区域文件中:
/etc/named.conf文件:
zone "pr.example.com" { type master; file [db.filename]; };
db.filename:
delegated.pr.example.com. IN NS nsdelegated.pr.example.com. nsdelegated.pr.example.com. IN A 10.11.0.5 ; glue record
这被复制到从服务器ns1和ns2。 logging可以看出,无论是在平面文件,并确认与挖:
奴隶的例子
dig -t ns +short @ns1 delegated.pr.example.com nsdelegated.pr.example.com IN A 10.11.0.5
主示例
dig -t ns +short @ns delegated.pr.example.com nsdelegated.pr.example.com IN A 10.11.0.5
nsdelegated服务器本身是响应式的:
dig -ta +short @nsdelegated.pr.example.com randomhost.delegated.pr.example.com 10.11.0.222
但是,使用recursion所需位设置(缺省值)的辅助名称服务器上的查找失败。
dig +recurse +short -ta @ns1 randomhost.delegated.pr.example.com [no output]
它也在主服务器ns上失败,但这是可以预料的,因为ns.pr.example.com无法联系10.11.0.5并回答请求。 非recursion查询也失败,因为必须从nsdelegated.pr.example.com服务器获取相关信息。
我的问题是:为什么二级域名服务器的recursion问题失败? 他们有正确的委托信息,NSlogging和胶水logging,他们能够联系委托的名称服务器。
我的直觉是,作为一个辅助名称服务器,它可能以某种方式将recursion问题传递给主名称服务器,然后失败。 但是我无法find任何文档来达到这个效果,而且没有直观的意义。
任何想法,或debuggingbuild议? 我打开最大日志logging的命名,以及查询日志logging,但我无法得到好的信息。 没有一个明显的“向我展示你代表客户做的查询”日志。
谢谢。
当然,你需要在named.conf中指定委托区域,否则bind会认为它只是一个虚线的logging,因为它对于pr.example.com区域是权威的。
你想要的是这样的。 在主named.conf中,你指定一个新的区域(从而在从属区域中有一个新的区域):
zone "delegated.pr.example.com." { type master; file [db.filename]; };
区域文件应该是:
delegated.pr.example.com. NS nsdelegated.pr.example.com. nsdelegated.pr.example.com. IN A 10.11.0.5 ; glue record
现在,主DNS服务器和它的奴隶知道新的区域,事情应该工作。
====编辑
错误的是,SOAlogging不在ps.example.com中,而是在delegated.pr.example.com的区域定义中。 修正了这个。
你有没有'recusrsion'; 在你的named.conf中。 如果您没有双区域configuration,您应该拥有它。 但是,它会阻止绑定回答你的recursion查询。
我希望你可能想configuration双区域允许从您的局域网,而不是从互联网recursion。