名称查找阶段的“ping”性能较慢

名称查找阶段的“ping”性能较慢

今天早上,我的笔记本电脑出现了一个奇怪的网络问题。如果我ping从命令行(Xubuntu 19.04)使用,则名称查找阶段会异常缓慢,而实际的 ICMP 数据包 ping 工作正常。

$ ping cnn.com      # nothing happens for 5 seconds after hitting ENTER
PING cnn.com (151.101.193.67) 56(84) bytes of data.
64 bytes from 151.101.193.67 (151.101.193.67): icmp_seq=1 ttl=55 time=27.6 ms
64 bytes from 151.101.193.67 (151.101.193.67): icmp_seq=2 ttl=55 time=40.1 ms

如果我直接 ping IP 地址,那么一切都会很快。

我的/etc/resolv.confnameserver 8.8.8.8作为第一项。

如果我这样做,dig @8.8.8.8 cnn.com我会很快得到答复!

tcpdump当我尝试这样做时,我发现了一个令人费解的现象ping cnn.com

$ sudo tcpdump -n
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on wlp1s0, link-type EN10MB (Ethernet), capture size 262144 bytes
08:04:54.005650 IP 192.168.43.147.54944 > 8.8.8.8.53: 9634+ A? cnn.com. (25)
08:04:54.005669 IP 192.168.43.147.54944 > 8.8.8.8.53: 9387+ AAAA? cnn.com. (25)
08:04:54.130322 IP 8.8.8.8.53 > 192.168.43.147.54944: 9387 4/0/0 AAAA 2a04:4e42:200::323, AAAA 2a04:4e42::323, AAAA 2a04:4e42:600::323, AAAA 2a04:4e42:400::323 (137)
08:04:59.010696 IP 192.168.43.147.54944 > 8.8.8.8.53: 9634+ A? cnn.com. (25)
08:04:59.197233 IP 8.8.8.8.53 > 192.168.43.147.54944: 9634 4/0/0 A 151.101.193.67, A 151.101.65.67, A 151.101.129.67, A 151.101.1.67 (89)
08:04:59.197424 IP 192.168.43.147.54944 > 8.8.8.8.53: 9387+ AAAA? cnn.com. (25)
08:04:59.250245 IP 8.8.8.8.53 > 192.168.43.147.54944: 9387 4/0/0 AAAA 2a04:4e42:600::323, AAAA 2a04:4e42:400::323, AAAA 2a04:4e42::323, AAAA 2a04:4e42:200::323 (137)
08:04:59.251266 IP 192.168.43.147 > 151.101.193.67: ICMP echo request, id 21287, seq 1, length 64
08:04:59.286265 IP 151.101.193.67 > 192.168.43.147: ICMP echo reply, id 21287, seq 1, length 64

因此看起来 DNS 查询大约需要 5 秒,第一个查询返回 IPv6,显然被忽略了,然后是另一个请求,这次带有 IPv4 答案,另一个请求,再次是 IPv6,最后是用于实际 ping 的 ICMP 数据包。

有人知道这里发生了什么事吗?

相关内容