我有一组网络的内部 DNS(它完全是内部的,即网络未连接到 Internet)。它们的设置如下:
每个网络都有不同的地址范围
10.x.0.0/16
和自己的域domainx
(它是顶级域) - 例如网络10.1.0.0/16
有domain1
(这个网络中的所有主机都有 DNS 名称somehost.domain1
)对于每个网络/域,主机
ns.domainx
(10.x.1.1
) 是处理正向区域domainx
和反向区域的 DNS 服务器x.10.in-addr.arpa
这些网络没有互连,除了一个特殊的多宿主服务器连接到所有这些网络(我的问题实际上是关于该服务器) - 但它不会在这些网络之间路由数据包,它只能与每个网络通信他们。按照设计,每个网络都设计为单独和独立运行。
因此,每个网络中的 DNS 服务器只知道其域;它不知道(也不应该知道)来自其他网络的域的任何信息。
但是,我之前提到的多宿主服务器需要对所有这些网络中的地址进行有效的 DNS 解析。根据要求,我不能接触任何网络中的任何东西,尤其是它们的 DNS 服务器。我只能修改多宿主服务器的配置。
.
于是我在只定义zone为“master”的多宿主服务器上设置了BIND, zone文件中包含如下记录:1.10.in-addr.arpa. IN NS ns.domain1. domain1. IN NS ns.domain1. ns.domain1. IN A 10.1.1.1 2.10.in-addr.arpa. IN NS ns.domain2. domain2. IN NS ns.domain2. ns.domain2. IN A 10.2.1.1 3.10.in-addr.arpa. IN NS ns.domain3. domain3. IN NS ns.domain3. ns.domain3. IN A 10.3.1.1
等等所有网络。
一切正常,但有一个小问题。
有时,特定网络的 DNS 服务器已关闭。在这些网络中,DNS 服务器关闭不被视为故障 - 它只是可能发生的正常运行状态。届时,该特定网络将没有 DNS 解析,这是正常的。
但是网络 1 中有一个特定的 IP 地址(例如10.1.10.10
),我希望始终将其解析为域名 - 即使网络 1 的 DNS 已关闭。所以它必须由本地服务器解析,而不是委托给网络 1 的服务器。实际上,NXDOMAIN 将作为对该地址的查询的响应返回也是可以接受的(如果这更容易配置的话),但是必须立即返回响应,而不是尝试联系网络 1 的 DNS 服务器 - 该服务器关闭时的延迟正是我们想要避免的。
我不知道该怎么做。
10.10.1.10.in-addr.arpa.
为区域文件添加 PTR 记录.
不起作用 - 它似乎被简单地忽略了,并且当网络 1 的 DNS 不起作用时,10.1.10.10
无法解析。
如何使该地址在本地解析?
我找到了解决方案。其实很简单。
10.10.1.10.in-addr.arpa
将另一个“主”区域添加到我的文件中就足够了named.conf
,区域文件是named.empty
ie。BIND 配置中包含的默认文件以服务 zone0.in-addr.arpa
。现在查询
10.1.10.10
给出的答案是地址没有 PTR 记录,无论 DNS 服务器10.1.0.0/16
是启动还是关闭。这消除了解析地址时的延迟,这对我来说已经足够了。当然,我可以为这个区域定义一个单独的区域文件,而不是named.empty
在这个区域文件中添加一个 PTR 记录,@
以使 IP 地址实际解析为某个域名,但我现在不需要这个。