升级到 18.04 后,浏览器的 DNS 查询速度变慢(但 dig 的查询速度很快)

升级到 18.04 后,浏览器的 DNS 查询速度变慢(但 dig 的查询速度很快)

我刚刚从 Ubuntu 17 升级到 18.04,一切似乎都很顺利。

但是,升级后出现了两个问题(可能直接相关的问题)。1、我的 VPN(mullvad)的配置应用程序不再启动,这不是一个太紧迫的问题。2、也许是由于 VPN 应用程序最初管理的一些配置导致我的所有来自浏览器的 DNS 查询都非常慢。

我已经在 Chrome、Firefox 和 Waterfox 上进行了测试,在所有情况下,DNS 查询似乎都需要 5 到 5.2 秒的时间。我假设某个地方的配置不正确,导致 5 秒后超时,然后浏览器继续进行另一次配置并快速得到响应。

以下是典型的页面加载瀑布图: 浏览器的 DNS 查询速度很慢

另一方面,当我进入命令行并尝试挖掘时,我得到了快速的响应:

$ dig www.disney.com

; <<>> DiG 9.11.3-1ubuntu1-Ubuntu <<>> www.disney.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35027
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;www.disney.com.            IN  A

;; ANSWER SECTION:
www.disney.com.     255 IN  CNAME   matterhornsecure.edgekey.net.
matterhornsecure.edgekey.net. 743 IN    CNAME   e13055.e12.akamaiedge.net.
e13055.e12.akamaiedge.net. 19   IN  A   23.54.221.6

;; Query time: 30 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Mon Jun 04 20:59:26 EDT 2018
;; MSG SIZE  rcvd: 137

我将我的 DNS 服务器设置为 Cloudflare DNS 服务器 1.1.1.1,但我不确定这会对此产生什么影响。

以下是我在其他类似主题中看到的一些其他信息:

$ ifconfig
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 11020  bytes 915775 (915.7 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 11020  bytes 915775 (915.7 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

tun0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1500
        inet 10.11.0.19  netmask 255.255.0.0  destination 10.11.0.19
        inet6 fdda:d0d0:cafe:1197::1011  prefixlen 64  scopeid 0x0<global>
        inet6 fe80::a6e6:1fa2:8d15:cf1  prefixlen 64  scopeid 0x20<link>
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 100  (UNSPEC)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 1000 overruns 0  carrier 0  collisions 0

wlp2s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.7  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe80::9b85:3e1:c0d1:d2f9  prefixlen 64  scopeid 0x20<link>
        inet6 2604:2000:81c2:300::3  prefixlen 128  scopeid 0x0<global>
        inet6 2604:2000:81c2:300:b765:7f68:a70b:8ebd  prefixlen 64  scopeid 0x0<global>
        ether 34:02:86:60:d3:30  txqueuelen 1000  (Ethernet)
        RX packets 41063  bytes 49615001 (49.6 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 13120  bytes 2266057 (2.2 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

$ nmcli device show wlp2s0 | grep IP4.DNS
IP4.DNS[1]:                             1.1.1.1
IP4.DNS[2]:                             1.0.0.1

答案1

对我来说,这是在等待 AAAA 查询(IPv6)结束之前响应时超时,尽管记录A已经解析。对我有用的解决方案是这样的。

将这些行添加到/etc/resolv.conf(这options是秘密的酱汁)。

nameserver 1.1.1.1
nameserver 1.0.0.1
options single-request

在桌面系统上,应该将其添加到,/etc/resolvconf/resolv.conf.d/base因为/etc/resolv.conf它会自动重写。然后运行以下命令:

sudo resolvconf -u
sudo systemctl restart networking
sudo systemctl restart network-manager

解决方案http://www.math.tamu.edu/~comech/tools/linux-slow-dns-lookup/

答案2

包含一个对我而言很好用的 Firefox dns 设置的截图。

在此处输入图片描述

如果您想尝试启用本地缓存名称服务器。

$ sudo apt-get install bind9 bind9utils bind9-doc
$ sudo vi /etc/bind/named.conf.options

并在选项部分下添加以下内容。

    forwarders {
            8.8.8.8;
            8.8.4.4;
    };

并重新启动绑定服务。

$ sudo systemctl restart bind9.service

它应该可以使用默认配置来实现相当好的缓存效果。

$ dig www.disney.com

; <<>> DiG 9.11.3-1ubuntu1.1-Ubuntu <<>> www.disney.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 2237
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;www.disney.com.            IN  A

;; ANSWER SECTION:
www.disney.com.     300 IN  CNAME   matterhornsecure.edgekey.net.
matterhornsecure.edgekey.net. 7199 IN   CNAME   e13055.e12.akamaiedge.net.
e13055.e12.akamaiedge.net. 19   IN  A   2.19.151.249

;; Query time: 108 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Mon Jul 09 12:48:28 PDT 2018
;; MSG SIZE  rcvd: 137

$ dig www.disney.com

; <<>> DiG 9.11.3-1ubuntu1.1-Ubuntu <<>> www.disney.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 732
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;www.disney.com.            IN  A

;; ANSWER SECTION:
www.disney.com.     292 IN  CNAME   matterhornsecure.edgekey.net.
matterhornsecure.edgekey.net. 7192 IN   CNAME   e13055.e12.akamaiedge.net.
e13055.e12.akamaiedge.net. 12   IN  A   2.19.151.249

;; Query time: 0 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Mon Jul 09 12:48:35 PDT 2018
;; MSG SIZE  rcvd: 137

请注意,第二个查询根本不需要时间。对我来说,在 Firefox 中进行 dns 查询也不需要时间。

答案3

通常检查 /etc/resolv.conf 的内容会有所帮助。与 @MrBar 相反,我的情况是其中有一些(基本上正确的)条目,但只要我删除这些条目并将每个查询重定向到 systemd-resolved 守护程序(使用“nameserver 127.0.0.53”),Firefox 和所有其他应用程序就不再有问题了。

相关内容