tcpdump

tcpdump

有时早晨,当我的 Ubuntu 18.04 从休眠状态唤醒时,需要大约 30 分钟才能进行任何 DNS 查找。

我已经禁用自动 DNS,并添加了 Google 的 DNS 服务器:

DNS 设置

如何设置 Google 的 DNS 服务器

但尽管如此,我可以 ping8.8.8.8但不能google.com

无法 ping 通 Google

通常在多次无结果地启用/禁用 Wifi、连接和断开 Wifi 网络之后,它会突然恢复运行,并且剩余的时间一切都正常。

但这里有一个谜团:如果 Ubuntu 使用8.8.8.8它的 DNS 查找,怎么会出现我可以 ping 通 IP 但不能 ping 通 URL 的情况呢?

以下是 的输出dig

➜  dig @8.8.8.8 www.google.com

; <<>> DiG 9.11.3-1ubuntu1.11-Ubuntu <<>> @8.8.8.8 www.google.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 39427
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

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

;; ANSWER SECTION:
www.google.com.         297     IN      A       216.58.206.100

;; Query time: 21 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Thu Aug 20 19:52:43 BST 2020
;; MSG SIZE  rcvd: 59

tcpdump

sudo tcpdump -ni lo port 53

此命令在启动后约 20 分钟才显示任何内容,此时它突然活跃起来,显示以下内容:

tcpdump

网络状态

netstat -acpn | grep ":53"

netstat这是DNS 查找不起作用时的输出。

netstat 没有 DNS 输出

DNS 恢复正常运行后,当天晚些时候:

带有 DNS 输出的 netstat

答案1

尝试

dig @8.8.8.8 www.ubuntu.com

只是为了排除 DNS 流量以某种方式被破坏的情况。

编辑:dig 是一种查询 DNS 服务器的工具。通过使用 @serverIP 语法,您可以绕过系统 DNS 设置并直接与您选择的 DNS 服务器通信。在我看来,这在诊断问题是您的机器(使用 @syntax 进行挖掘)还是网络方面(使用 @syntax 进行挖掘返回相同结果)方面非常有帮助

答案2

这可能与旧系统(ifupdown)和新系统(netplan、cloud-init 等)之间的冲突有关。我能找到的对这种现代胡说八道的唯一正确答案是:

apt remove ifupdown
apt install cloud-init
# comment out settings in /etc/network/interfaces
# complete settings in /etc/netplan/config.yaml

# Apply settings or reboot
netplan apply

需要删除ifupdown才能使 DNS 解析器正常运行。

[注:我的原始帖子在这里:https://askubuntu.com/a/1255405/45849]

答案3

您是否尝试过禁用 systemd-resolved,然后检查解析效果如何?我以前遇到过这个问题。

sudo systemctl disable systemd-resolved
sudo systemctl stop systemd-resolved

然后在 /etc/NetworkManager/NetworkManager.conf 的 [main] 部分中

dns=default

删除 resolv.conf 的符号链接

rm /etc/resolv.conf

然后重启

sudo systemctl restart NetworkManager

答案4

您无需指定 DNS 地址。由于 DNS 切换已切换为自动,因此您可以将该字段留空。

相关内容