Linux不断重试失败的DNS服务器

Hal*_*aar 5 domain-name-system linux resolv.conf

每当其中的一台服务器/etc/resolv.conf无法访问时,Linux/glibc/whatever 都不够智能,暂时无法重试。这导致许多服务变得不可用,因为其中许多服务对所有传入连接(如 SSH)进行反向查找,这将在第一次 DNS 服务器查询超时时挂起。

我怎样才能让我的 Ubuntu 机器对它使用的 DNS 服务器变得聪明?我可以破解一个每分钟运行一次的 bash 脚本,该脚本将拒绝规则插入到不响应挖掘查询的服务器的 iptables 中,但我宁愿不那样做...

我被告知 Windows 可以正确执行此操作,顺便说一句。

编辑:我通过将其放入/etc/resolv.conf(或/etc/resolvconf/resolv.conf.d/base)来解决它:

options timeout:2 rotate
Run Code Online (Sandbox Code Playgroud)

仍然不完美,但更可行。

eww*_*ite 5

为什么 DNS 服务器变得不可用?这是我们应该重点解决的问题......

rotate如果您想要确定性的重试顺序,则应省略该指令。rotate基本上为您提供循环查找,这可能会在您的情况下产生不良结果。

我的 DNS/etc/resolv.conf看起来像:

search blah.net client.blah.net
options timeout 1
nameserver 172.16.2.14
nameserver 172.16.2.18
Run Code Online (Sandbox Code Playgroud)

除此之外,您可以选择在本地计算机上使用缓存 DNS 服务,甚至启用名称服务器缓存守护程序(nscd)。这将有助于缓冲不可靠的 DNS 解析器带来的延迟。