调整 Linux 故障转移到 resolv.conf 中列出的备份 DNS 服务器所需的时间

Ada*_*rey 18 domain-name-system linux resolv.conf

目前,我正在使用普通的 vanilla linux 配置resolv.conf……例如:

nameserver 123.123.123.123
nameserver 8.8.8.8
Run Code Online (Sandbox Code Playgroud)

当 123.123.123.123 出现故障时,DNS 查询变得不可能缓慢,我假设 Linux 每次都会重试第一个。有没有办法让linux在这方面更聪明?体检什么的?或者我误解了resolv.conf应该如何工作?

Soh*_*rty 21

除了 ewwhite 令人敬畏的回应之外,还有一些附录。

你可以添加这个 /etc/resolv.conf

options timeout:1 attempts:1 rotate
Run Code Online (Sandbox Code Playgroud)

默认值为时间:5 次尝试:2

/etc/resolv.conf如果不存在旋转选项,解析器库将尝试使用从上到下列出的名称服务器。如果存在旋转,则它执行循环选择。如果解析器转到列表的底部并且服务器在 X 秒内没有响应(考虑 X 是超时参数),那么它将再次重复循环选择的整个过程 Y-1 次(其中 Y 是尝试的价值)。

然而,要小心避免 dig 和朋友测试这些 resolv.conf 选项。因为他们避免解析器库并直接询问名称服务器。getent hosts 是更好的命令。请注意,任何使用 glibc 解析器的东西都必须遵守/etc/resolv.conf文件。


eww*_*ite 13

这是通过 描述的man resolv.conf

请尝试使用超时选项之一将默认值从 5 秒降低到 1 秒...

options timeout:1
nameserver 123.123.123.123
nameserver 8.8.8.8
Run Code Online (Sandbox Code Playgroud)

但实际上,DNS 有很多可用的弹性,可以在没有较低分辨率超时的情况下生存。是否可以选择更好的公共 DNS 或运行您自己的内部解析器?