Ubuntu resolv.conf,不转到下一个名称服务器?

Ubuntu resolv.conf,不转到下一个名称服务器?

我正在使用 Ubuntu 10.04 桌面版,它默认带有“网络管理器”(我对此非常怀疑)。我在解析 2 个不同名称服务器上的 DNS 区域时遇到问题。

解析.conf:

$ cat /etc/resolv.conf
#Generated by Network Manager
search example.org
nameserver 10.0.0.20 #public nameserver, contains public.example.org
nameserver 10.0.0.30 #private nameserver, contains private.example.org

问题。无论哪个名称服务器首先列出,都将解决:

$ ping host.public.example.org
PING host.public.example.org (10.0.0.50) 56(84) bytes of data.

列出的第二个不会:

$ ping host.private.example.org
ping: unknown host host.private.example.org

但它确实存在:

$ dig @10.0.0.30 host.private.example.org
...
;; ANSWER SECTION:
host.private.example.org.   3600    IN  A   10.0.0.60
...

如果我反转 /etc/resolv.conf 中的名称服务器顺序,host.private 将可访问,而 host.public 将无法访问。为什么?摘自 resolv.conf 手册页:

如果有多个服务器,解析器库将按照列出的顺序进行查询。

不仅仅是 ping 有问题,当 Thunderbird 无法接收邮件时我注意到了这一点,因为邮件服务器的 DNS 记录位于列出的第二台服务器中。我在这里尝试做的事情不应该有效吗?

答案1

啊……其实不是这样的。只要第一个名称服务器正在运行且处于活动状态,所有绑定请求都会转到它。唯一能转到第二个名称服务器的方法是,列表中的前一个名称服务器已死机,并且经过长时间超时。

为了解决您的问题,我猜您可能必须构建本地缓存 DNS 服务器配置,并将两个区域的名称服务器指向两个不同的服务器。然后,您的解析器配置将设置为使用主机的 IP。

答案2

本技巧将向您展示如何使用多个名称服务器来改善 DNS 查找。如果您的主 DNS 服务器因任何原因无法访问,这将非常有用。

名称服务器在 /etc/resolv.conf 中列出,每行一个。

代码清单 1:示例 /etc/resolv.conf

名称服务器 192.168.1.1

名称服务器 10.0.0.1

为了改进 DNS 查找,请向 /etc/resolv.conf 添加多个 DNS 服务器(最好位于不同的子网上)和以下选项:

代码清单 2:/etc/resolv.conf 选项

选项旋转

选项超时:1

这将轮流使用两个名称服务器,并等待最多 1 秒钟的答复,然后再尝试下一个。

答案3

公共名称服务器应响应私有地址不存在。如果它是第一个并且正在运行,您将获得公共答案。首先列出私有服务器。公共服务器应仅用作后备。

名称服务器端的一个解决方案是使用拆分配置。这将在专用网络上提供专用数据,并在公共端仅提供公共数据。公共服务器应仅在专用网络上提供引荐(google.com 等)。

相关内容