我在 Ubuntu 18.04 上遇到了 DNS 问题。我认为 netwrok-manager、systemd-resolved 和 resolvconf 之间某处存在配置错误。
我可以 ping 通 IP 地址,但不能 ping 通主机名:
$ ping -c 3 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=120 time=5.07 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=120 time=4.89 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=120 time=4.33 ms
--- 8.8.8.8 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 4.336/4.768/5.072/0.318 ms
$ ping -c 3 www.google.com
ping: www.google.com: Name or service not known
systemd-resolved 和 resolvconf 服务均正在运行:
有一个符号链接 /etc/resolv.conf 指向 /run/systemd/resolve/stub-resolv.conf
nameserver 127.0.0.53
options edns0
如果我将 /etc/resolv.conf 符号链接替换为包含以下内容的文件,则主机名将被解析
search station
nameserver 127.0.1.1
我想知道如何修复它,以便它无需删除符号链接即可正常工作。有人可以建议如何修复此问题吗?
答案1
问题在于您用来解析域名的 DNS 服务器无法解析请求的域。当您使用 localhost 作为 DNS 服务器时,它可能没有您请求的域。因此,您必须使用路由器的 DNS 设置(将命名空间关键字旁边的 IP 更改为 192.168.1.1),或者您应该使用一些公共 DNS 服务器,例如 Cloud 的 (1.1.1.1) 或 Google 的 (8.8.8.8) DNS 服务器。您还可以找到其他公共 DNS 服务器,甚至可以为其中一些服务器付费。无论您选择哪种方式,都由您决定。但我不建议使用您的本地主机 (127.0.0.1/8) 作为 DNS 服务器。