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

mal*_*c4k 11 linux dns dhcp debian

假设我在域更改数量和传播缓慢的环境中工作。
我想在设置更改后立即测试域配置,但传播速度很慢。所以我想/etc/resolv.conf在我的 Debian 6.0.3 笔记本电脑中添加更多的域名服务器。尤其是我的域名注册商的域名服务器。我通过添加:

append domain-name-servers 85.128.130.10, 194.204.152.34;
Run Code Online (Sandbox Code Playgroud)

到我的/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.
Run Code Online (Sandbox Code Playgroud)

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

Gil*_*il' 19

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


mal*_*c4k 8

这就是我让 Debian 一次使用超过 3 个名称服务器的方式。

  1. 安装dnsmasq

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

    supersede domain-name-servers 127.0.0.1;

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

    resolv-file=/etc/resolv.dmasq

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

  5. 重新启动dnsmasq服务。

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


Nik*_*ley 5

从resolv.conf:

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

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

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

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

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

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