只要/etc/resolv.conf
某个服务器无法访问,Linux / glibc /任何不够智能的操作都不会在一段时间内重试。 这导致很多服务变得不可用,因为它们中的很多会反向查找所有传入的连接(如SSH),这会在第一个DNS服务器查询超时时挂起。
我怎样才能使我的Ubuntu的箱子聪明的使用它的DNS服务器? 我可以破解一个每分钟运行一次的bash脚本,这个脚本会在iptables中插入一个拒绝规则,但是我不愿意这样做。
我被告知,Windows正确地执行此操作,顺便说一句。
编辑:我把它放在/etc/resolv.conf
(或/etc/resolvconf/resolv.conf.d/base
):
options timeout:2 rotate
仍然不完美,但更可行。
为什么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
除此之外,您可以select在本地计算机上使用cachingDNS服务,甚至启用名称服务器caching后台程序 (nscd)。 这将有助于缓冲不可靠的DNSparsing器带来的延迟。
啊。 我在系统中遇到了同样的问题。 当主DNS服务器下线时,整个系统最多变得非常慢。
实际上,我在一段时间之前就提出了类似的问题: 主DNS服务器故障的DNS / resolv.conf设置? 。 那里有一些非常好的答案,你可能会觉得有用。
我结束了编辑/etc/resolv.conf
用较低的超时值。 ( options timeout:1
)主要是因为这是最简单的解决方法,而不是最有效的。 这个改变意味着服务器花更less的时间等待死parsing器。 查找需要2秒钟,而不是10秒钟。如果你想做的事情不是一个批次,但是至less会导致很less的服务失败,这仍然很糟糕。