目前我正在使用普通的 vanilla linux 配置resolv.conf
...例如:
nameserver 123.123.123.123
nameserver 8.8.8.8
当 123.123.123.123 出现故障时,DNS 查询会变得异常缓慢,我假设 Linux 每次都会重试第一个查询。有没有办法让 Linux 对此更智能?健康检查之类的?还是我误解了应该如何resolv.conf
工作?
答案1
除了 ewwhite 的精彩回复外,还有一些附录。
您可以将其添加到/etc/resolv.conf
options timeout:1 attempts:1 rotate
默认值为时间:5 次尝试:2
实际情况是,如果没有 rotate 选项,解析器库将尝试使用/etc/resolv.conf
从上到下列出的名称服务器。如果存在 rotate 选项,则它会进行循环选择。如果解析器到达列表底部并且服务器在 X 秒内没有响应(考虑到 X 是超时参数),那么它将再次重复整个循环选择过程 Y-1 次(其中 Y 是尝试次数的值)。
但是需要注意的是,不要使用 dig 和相关工具来测试这些 resolv.conf 选项。因为它们会避开解析器库并直接询问名称服务器。getent hosts 是更好的命令。请注意,使用 glibc 解析器的任何内容都必须遵守/etc/resolv.conf
文件。
答案2
这是通过 描述的man resolv.conf
。
请尝试其中一个超时选项,将默认值从 5 秒降低到 1 秒......
options timeout:1
nameserver 123.123.123.123
nameserver 8.8.8.8
但实际上,DNS 具有如此多的弹性,即使没有较低的解析超时,也是可以的。是否可以选择更好的公共 DNS 或运行自己的内部解析器?