重启后,我在 Ubuntu 20.04 上解析 DNS 时遇到严重问题。如文中所述,
- host、dig 和 nslookup 可以将域名解析为 IP,例如
dig @8.8.8.8 google.com dig @8.8.8.8 google.com +tcp
- 我可以使用 IP ping 外部世界
- 同一 wifi 上的其他设备工作正常但是,浏览器(ERR_NAME_NOT_RESOLVED)、curl 等服务(无法解析主机:www.google.com) 或 ping 域不起作用。
我将本地路由器 DNS 更改为 8.8.8.8(没有改变任何东西),并尝试了在这里找到的一些其他东西,但 8 个多小时都没有成功。我安装了 VPN(没有 nordvpn,只有 uni),删除了所有我能找到的东西,但没有任何变化……
浏览器和这些工具的 DNS 请求有什么区别?dig 的 A、AAAA、NX 看起来都很好。对我来说完全没有意义。
答案1
讨论后,我会尝试给出解释。要点:安装并删除了 VPN 客户端。名称解析停止工作。
dig @8.8.8.8 google.com
询问服务器 8.8.8.8 分配给 google.com 的 IP 是什么。
dig google.com
不应该起作用。
Linux 会查看文件/etc/nsswitch.conf
如何将名称解析为 IP。
hosts: files
这意味着它将查看/etc/hosts,完成。
hosts: files dns
意味着它将调查/etc/hosts,然后通过解析conf(或更多network-manager
,今天)。
它可能更复杂一些:
hosts: files mdns4_minimal [NOTFOUND=return] dns myhostname
如果您已经通过 dpkg(带有dpkg -i
或使用 的.deb 包apt
)安装了 VPN,则原始文件很可能/etc/nsswitch.conf
仍在 /etc 中,名为 之类的名称/etc/nsswitch.dpkg-old
。
如果你需要原始文件,你随时可以通过搜索下载https://packages.ubuntu.com/内容:https://packages.ubuntu.com/search?suite=focal&arch=any&mode=exactfilename&searchon=contents&keywords=nsswitch.conf
- 下载 .deb 文件(在本例中libc-bin或者glibc 源应该差不多)
- 提取它(它只是一个档案,
ar -x <filename>.deb
) - 比较原版和你的
- 修复所需的行
我故意省略network-manager
了深度或netplan.io
。