我正在使用 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 等)。