有时早晨,当我的 Ubuntu 18.04 从休眠状态唤醒时,需要大约 30 分钟才能进行任何 DNS 查找。
我已经禁用自动 DNS,并添加了 Google 的 DNS 服务器:
但尽管如此,我可以 ping8.8.8.8
但不能google.com
:
通常在多次无结果地启用/禁用 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 分钟才显示任何内容,此时它突然活跃起来,显示以下内容:
网络状态
netstat -acpn | grep ":53"
netstat
这是DNS 查找不起作用时的输出。
DNS 恢复正常运行后,当天晚些时候:
答案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 切换已切换为自动,因此您可以将该字段留空。