![使用 BIND 的内部 DNS,如何以不同的方式解析一个 IP 地址?](https://linux22.com/image/775353/%E4%BD%BF%E7%94%A8%20BIND%20%E7%9A%84%E5%86%85%E9%83%A8%20DNS%EF%BC%8C%E5%A6%82%E4%BD%95%E4%BB%A5%E4%B8%8D%E5%90%8C%E7%9A%84%E6%96%B9%E5%BC%8F%E8%A7%A3%E6%9E%90%E4%B8%80%E4%B8%AA%20IP%20%E5%9C%B0%E5%9D%80%EF%BC%9F.png)
我有一个用于一组网络的内部 DNS(它是完全内部的,即网络未连接到 Internet)。它们的设置如下:
每个网络都有不同的地址范围
10.x.0.0/16
和自己的域domainx
(它是顶级域) - 例如网络10.1.0.0/16
有domain1
(此网络中的所有主机都有 DNS 名称somehost.domain1
)对于每个网络/域,主机
ns.domainx
( ) 是处理正向区域和反向区域10.x.1.1
的 DNS 服务器domainx
x.10.in-addr.arpa
这些网络并不相互连接,除非有一个特殊的多宿主服务器可以连接到所有这些网络(事实上我的问题是关于该服务器的) - 但它不会在这些网络之间路由数据包,它只能与每个网络进行通信。它是通过设计,每个网络都被设计为单独和独立运行。
因此,每个网络中的 DNS 服务器仅知道其域;它不知道(并且不应该知道)有关其他网络的域名的任何信息。
但是,我之前提到的多宿主服务器需要对所有这些网络中的地址进行有效的 DNS 解析。根据要求,我不能触碰任何网络中的任何内容,特别是它们的 DNS 服务器。我只能修改多宿主服务器的配置。
因此我在多宿主服务器上设置了 BIND,该服务器仅将区域定义
.
为“主”,并且区域文件包含以下记录: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
无法解析。
如何让这个地址在本地解析?
答案1
10.10.1.10.in-addr.arpa
我找到了一个解决方案。其实很简单。只需将另一个“主”区域添加到我的named.conf
文件中即可,该区域named.empty
文件即 BIND 配置中包含的用于服务区域的默认文件0.in-addr.arpa
。
现在,无论的 DNS 服务器是启动还是关闭,查询的10.1.10.10
答案都是该地址没有 PTR 记录。这消除了解析地址时的延迟,这对我来说已经足够了。当然,我可以为该区域定义一个单独的区域文件,而不是,并在该区域文件中添加 PTR 记录,以使 IP 地址真正解析为某个域名,但我现在不需要这样做。10.1.0.0/16
named.empty
@