DNS 查找很慢,但仅限于终端(linux)

DNS 查找很慢,但仅限于终端(linux)

看起来我的 DNS 有问题,尽管我不太确定。

浏览互联网时,一切都很快,很顺利。但是当使用终端时,事情开始变得奇怪。

当我 ping www.google.com 时,我的返回时间很好,但每个请求都需要花费大量时间(每个请求大约 7-8 秒)。使用 ping -n www.google.com 或直接 ping ip 时,一切都很好。这与如何解释极长(10 秒) ping 间隔之间的低 RTT?或者Linux ping 实际上每秒不发送 1 个数据包

根据这些问题的答案,这是一个 DNS 问题。但正如我所说,当我浏览互联网时,一切都正常。加载页面没有 8 秒的延迟。这只发生在终端上。我不明白 DNS 问题怎么会影响终端而不影响互联网浏览器。

这不会是个问题,只是我需要频繁更新用于下载软件更新的镜像列表(在 Arch 计算机上,命令是 pacman-mirrors),并且由于延迟,它们都会超时,因此更新失败。

我还没有试过,但也许将 DNS 改为 Google 的 DNS 会有效。不过这更像是一种变通方法,而不是解决办法,我觉得如果可能的话,这个问题应该得到解决。

感谢您的帮助。

答案1

第一个猜测:您配置的 DNS 服务器非常慢,并且您没有安装任何可以在系统范围内运行的本地 DNS 缓存。

与此同时,一些网络浏览器(至少是 Firefox 和 Chromium)已经内部的DNS 缓存,因此它们不会经常发送查询。Chromium 有时甚至会在您点击链接之前尝试进行 DNS 查找,因此您永远不会注意到延迟。

使用dig或类似工具比较各种 DNS 服务器:

$ dig www.google.com
...
;; Query time: 1 msec
;; SERVER: 10.35.0.1#53(10.35.0.1)

$ dig www.google.com @193.219.xx.xx
;; Query time: 7 msec
;; SERVER: 193.219.xx.xx#53(193.219.xx.xx)

$ dig www.google.com @8.8.8.8
;; Query time: 47 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)

如果只是您当前的服务器速度慢,请将其更改为更快的服务器。(有时,家庭网关的 DNS 代理往往很差。我自己使用 D-Link 时就特别不走运。)

但如果全部如果其中任何一个都比较慢,那么就安装一个本地运行的(充当本地缓存)——Unbound 或 dnsmasq 都是不错的选择。(当然,弄清楚为什么你的网络严重减慢了 DNS 请求速度……)

  • 如果使用 NetworkManager,您可以告诉它自动设置 dnsmasq –dns=dnsmasq在 NetworkManager.conf(5) 文件中设置。(最新的 0.9.10 版本也支持dns=unbound。)

  • 要手动设置,请启动适当的服务,并编辑/etc/resolv.conf以使用 127.0.0.1 作为名称服务器。

相关内容