我最近遇到了 /etc/resolv.conf 的以下配置,它应该可以提高 DNS 解析速度:
nameserver 1.1.1.1
nameserver 2.2.2.2
nameserver 3.3.3.3
option rotate
option timeout:1
除了在配置中使用 3 个 DNS 服务器(通常只使用两个)之外,我显然还考虑了“选项”标志。第一个应该在所有 3 个 DNS 服务器上轮换/循环,最后一个应该将查找超时设置为 1 秒(默认值显然是 5 秒)。我只是想知道你们中是否有人使用过这种配置,以及你们是否看到了任何改进?有些人说这对改进根本没有帮助,但我真的不知道为什么。
答案1
除了第一个名称服务器本身发生故障的情况外,在其他情况下,这都会使情况变得更糟。以下是它如何使情况变得更糟的一个例子:
假设你正在尝试解析一个网站,而该网站的主域名服务器速度很慢或出现故障。通常都会发生这种情况。
您尝试您的第一个名称服务器。
它尝试该站点的主要名称服务器。
主超时。
您的第一个名称服务器尝试辅助名称服务器。
它得到了回应。
你得到了回复。
但随着你的改变,这种情况发生了:
您尝试您的第一个 namserver。
您的第一个名称服务器尝试该站点的主名称服务器。
你超时了。
您尝试第二个名称服务器。
您的第二个名称服务器尝试该站点的主名称服务器。
第一个名称服务器尝试该站点的辅助名称服务器并得到答案。可惜您已经超时了。
您在第二个名称服务器上超时。
您尝试第三个名称服务器。
您的第三个名称服务器尝试该站点的主名称服务器。
您的第二个名称服务器有答案,可惜您已经超时了。
您在第三个名称服务器上超时了。
您的第三个名称服务器有答案,但您不再听了。
您已超时方式太快了,很可能在域名服务器得到答案之前就放弃,只能重复这个过程。好的一面是,现在所有域名服务器的缓存中都有结果了。
答案2
答案3
如果我没记错的话,默认情况下,如果没有响应,第一个尝试的 DNS 服务器需要两秒钟才能超时,然后才会尝试列表中的下一个服务器。因此,最后一个选项似乎会将超时时间缩短到一秒钟,然后再尝试列表中的下一个服务器。
另一个选项是轮换首先尝试的 DNS 服务器,只有当它们的速度都一样快并且您尝试平衡请求负载时,它才会发挥作用。
我会使用 namebench,因为Oliver 曾提到,找出每个的速度,并按速度顺序将它们放入列表中并删除旋转选项,除非它们彼此一样快。