委派区域的从属服务器上的 BIND9 递归 - 不起作用

委派区域的从属服务器上的 BIND9 递归 - 不起作用

我一直在查看 BIND/DNS 文档,但一直找不到明确的答案。tl;dr - 查询二级名称服务器以获取委托区域 A 记录不是在启用递归的情况下工作。并且,根据定义,在禁用递归的情况下也不工作,因为从我们的角度来看,区域中定义的所有内容都是 NS 和粘合记录。

软件堆栈:CentOS 5.4 x86 上的 bind-9.3.6-4 作为辅助名称服务器;Centos 4.7 x86 上的 bind-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 == 权威 NS

delegated.pr.example.com 子域,10.11.0.5不是在我们的控制之下!

您会注意到 ns1 和 ns2 可以通过共享网络 - 192.168.0.0/24 与 ns.pr.example.com 通信。但是,ns.pr.example.com不能 与 nsdelegated.pr.example.com 主机对话,该主机仅具有 10.11.0.0/24 地址。

192.168 网络是我们的公共 IP 空间的替代品;但 10.10 和 10.11 网络是用于集群计算的私有封闭网络。将 ns.pr.example.com 直接或通过静态路由连接到 10.11 网络是不可能的。

在主名称服务器 ns.pr.example.com 上,区域文件中添加了以下定义以及更新的序列:

/etc/named.conf:

zone "pr.example.com" { type master; file [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。可以在平面文件中看到此记录,并且可以通过 dig 进行确认:

从属示例

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 -t a +short @nsdelegated.pr.example.com randomhost.delegated.pr.example.com 10.11.0.222

但是,在设置了递归所需位(默认)的辅助名称服务器上的查找会失败。

dig +recurse +short -t a @ns1 randomhost.delegated.pr.example.com [no output]

它在主服务器 ns 上也会失败,但这是意料之中的,因为 ns.pr.example.com 无法联系 10.11.0.5 并回答请求。非递归查询也会失败,因为必须从 nsdelegated.pr.example.com 服务器获取相关信息。

我的问题是:为什么递归问题次要的 名称服务器发生故障?它们具有正确的委派信息、NS 记录和胶水记录,并且能够联系委派的名称服务器。

我的直觉是,作为辅助名称服务器,它可能以某种方式将递归问题“传递”到主名称服务器,然后失败。但我找不到任何关于此内容的文档,而且它不符合直觉。

有什么想法或调试建议吗?我打开了命名日志和查询日志的最大日志,但我无法获得有用的信息。没有明显的“向我展示您代表客户执行的查找”日志。

谢谢。

答案1

当然,您需要在named.conf中指定委派的区域,否则bind会认为它只是一个它应该具有的点状记录,因为它对于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 服务器及其从属服务器知道了新区域,一切就可以正常工作了。

====编辑

错误,SOA 记录不在 ps.example.com 中,但它在 delegated.pr.example.com 的区域定义中。已修复。

答案2

您的 named.conf 中是否有“recusrsion no;”。如果您没有双区域配置,则应该有它。但是,它将阻止 bind 为您回答递归查询。

我估计您可能想要配置双区域,允许从 LAN 进行递归,但不允许从 Internet 进行递归。

相关内容