如何克服 libc 解析器最多 3 个名称服务器的限制?

如何克服 libc 解析器最多 3 个名称服务器的限制?

假设我工作的环境有很多域名变更,而且传播速度很慢。
我想在设置更改后立即测试域配置,但传播速度很慢。因此,我想/etc/resolv.conf在我的 Debian 6.0.3 笔记本电脑的文件中添加更多名称服务器。特别是我的域名注册商的域名服务器。我通过添加以下内容来实现:

append domain-name-servers 85.128.130.10, 194.204.152.34;

到我的/etc/dhcp/dhclient.conf文件。重新连接到网络后,我的/etc/resolv.conf更新已正确,但出现以下消息:

# NOTE: the libc resolver may not support more than 3 nameservers.
# The nameservers listed below may not be recognized.

那么有没有办法同时使用3个以上的域名服务器呢?

答案1

127.0.0.1作为名称服务器放入 中/etc/resolv.conf,并在本地运行 DNS 缓存。我建议域名解析,它重量轻且易于设置。在 Debian 和 Ubuntu 等发行版上,我还建议安装解析配置文件包,它负责/etc/resolv.conf在您没有运行本地 DNS 缓存时进行维护,或者在您运行时维护 DNS 缓存程序的配置。

答案2

这就是我让 Debian 同时使用 3 个以上域名服务器的方法。

  1. 安装域名解析包裹

  2. 将我的本地 DHCP 客户端配置为不使用 DHCP 服务器提供的 DNS 服务器地址,而仅使用本地服务器。为此,我在/etc/dhcp/dhclient.conf文件中添加以下行

    supersede domain-name-servers 127.0.0.1;

  3. 配置域名解析不要使用默认/etc/resolv.conf文件,而是使用它自己的替代文件。添加/etc/dnsmasq.conf以下行

    resolv-file=/etc/resolv.dmasq

  4. /etc/resolv.dmasq使用任意数量的名称服务器进行创建。

  5. 重新启动dnsmasq服务。

我使用 9 个不包含我的域的已定义名称服务器对其进行了测试。系统无法解析其名称。当我添加第 10 个名称服务器时,系统正确解析了其名称。

答案3

来自resolv.conf:

最多可以列出 MAXNS(当前为 3 个)名称服务器,每行一个。如果有多个服务器,解析器库将按列出的顺序查询它们。如果不存在名称服务器条目,则默认情况下使用本地计算机上的名称服务器。 (使用的算法是尝试一个名称服务器,如果查询超时,则尝试下一个,直到用完名称服务器,然后重复尝试所有名称服务器,直到执行了最大重试次数。)

一旦尝试了所有名称服务器,并且查询失败,默认情况下将返回主机未找到消息。

您可以在conf文件中重复下面的同一行,以便 nameserver添加多个指令吗?每行nameserver指令最多支持 3 个 DNS 地址(每行)。

请注意,仅尝试过一台主机,该主机位于 resolv.conf 列表的顶部;如果在第一台服务器上找不到地址或无法访问该服务器,则仅尝试第二台服务器,如果第二台服务器上的查询失败,则继续第三台服务器。在主机解析期间,不会从 resolv.conf 中循环或随机选择名称服务器,因此尝试所有名称服务器的成本将直接对底层系统/应用程序的性能造成负担。

但是,我认为您最好实现本地缓存名称服务器,如果 dns 调用数量减少/也取决于延迟,则使用/取决于主机解析的应用程序的 DNS 性能的提高将会增加。

另一种方法是使用 openDNS 服务器,它们可能拥有互联网上更新最快且服务速度最快的 DNS 服务器。

答案4

我建议使用dig本地解析器来测试 DNS 区域的更改。您可以指定要查询的 DNS 服务器

$ dig @8.8.8.8 name.to.resolve

(将查询发送至8.8.8.8)。这样,您不需要对测试的主机进行管理控制,并且可以调整大量查询详细信息。您还可以看到有关回复的更多详细信息。

相关内容