我的 NetworkManager 连接到互联网,但由于 DNS 配置错误,我无法访问互联网。我对 DNS 设置没有太多经验,但问题似乎出在 systemd-resolved 上。我可以直接 ping IP 地址(例如 8.8.8.8)并正常获得响应,但使用下面的默认配置时无法解析域。我尝试过符号链接到 systemd-resolved 文档中列出的三种配置模式,但它们都不起作用。
无法解析以下任何域,但我可以 ping IP(尝试了很多,它们都有效)而没有任何问题。
# /etc/resolv.conf
nameserver 127.0.0.53
options edns0 trust-ad
使用 dig 或 host 时也会遇到超时错误。
; <<>> DiG 9.16.1-Ubuntu <<>> www.ubuntu.com
;; global options: +cmd
;; connection timed out; no servers could be reached
我可以通过将 resolv.conf 名称服务器更改为 8.8.8.8 来获取域名解析并连接到互联网,但解析需要很长时间,即使网络速度测试报告超过 100 mbps 且同一台机器上的 ping <30 ms,网页也需要 1 分钟以上才能加载。
下面的配置可以工作,但响应时间真的很慢
# /etc/resolv.conf
nameserver 8.8.8.8
options edns0 trust-ad
可能有用的其他信息
就像我说的,我是这些系统的新手,我正在努力解决问题。以下是我认为可能有用的所有内容。以下所有输出均使用名称服务器 127.0.0.53
Ubuntu 20.04.3 LTS
systemd-resolve --status 的输出
Global
LLMNR setting: no
MulticastDNS setting: no
DNSOverTLS setting: no
DNSSEC setting: no
DNSSEC supported: no
DNSSEC NTA: 10.in-addr.arpa
16.172.in-addr.arpa
168.192.in-addr.arpa
17.172.in-addr.arpa
18.172.in-addr.arpa
19.172.in-addr.arpa
20.172.in-addr.arpa
21.172.in-addr.arpa
22.172.in-addr.arpa
23.172.in-addr.arpa
24.172.in-addr.arpa
25.172.in-addr.arpa
26.172.in-addr.arpa
27.172.in-addr.arpa
28.172.in-addr.arpa
29.172.in-addr.arpa
30.172.in-addr.arpa
31.172.in-addr.arpa
corp
d.f.ip6.arpa
home
internal
intranet
lan
local
private
test
Link 3 (ipv6leakintrf0)
Current Scopes: DNS
DefaultRoute setting: yes
LLMNR setting: yes
MulticastDNS setting: no
DNSOverTLS setting: no
DNSSEC setting: no
DNSSEC supported: no
Current DNS Server: ::1
DNS Servers: ::1
DNS Domain: ~.
Link 2 (wlo1)
Current Scopes: none
DefaultRoute setting: no
LLMNR setting: yes
MulticastDNS setting: no
DNSOverTLS setting: no
DNSSEC setting: no
DNSSEC supported: no
# /etc/systemd/resolved.conf
[Resolve]
#DNS=
#FallbackDNS=
#Domains=
#LLMNR=no
#MulticastDNS=no
#DNSSEC=no
#DNSOverTLS=no
#Cache=no-negative
#DNSStubListener=yes
#ReadEtcHosts=yes
# NetworkManager configuration: /etc/NetworkManager/NetworkManager.conf (lib: 10-dns-resolved.conf, 20-connectivity-ubuntu.conf, no-mac-addr-change.conf) (run: 10-globally-managed-devices.conf) (etc: default-wifi-powersave-on.conf)
[main]
# rc-manager=symlink
# auth-polkit=true
# dhcp=internal
dns=systemd-resolved
plugins=ifupdown,keyfile
[connectivity]
uri=http://connectivity-check.ubuntu.com/
[ifupdown]
managed=false
[logging]
# backend=journal
# audit=true
[device]
wifi.scan-rand-mac-address=no
[device-mac-addr-change-wifi]
match-device=driver:rtl8723bs,driver:rtl8189es,driver:r8188eu,driver:8188eu,driver:eagle_sdio,driver:wl
wifi.scan-rand-mac-address=no
[connection]
wifi.powersave=3
# no-auto-default file "/var/lib/NetworkManager/no-auto-default.state"
系统启动时登录
Starting Network Name Resolution...
sisyphus systemd-resolved[6024]: Positive Trust Anchors:
sisyphus systemd-resolved[6024]: . IN DS 20326 8 2 e17f45b80b8f1d39a95f0b0d7c45a08458e880409bbc683457104237c7f8ec8d
sisyphus systemd-resolved[6024]: Negative trust anchors: 10.in-addr.arpa 16.172.in-addr.arpa 17.172.in-addr.arpa 18.172.in-addr.arpa 19.172.in-addr.arpa 20.172.in-addr.arpa 21.172.in-addr.arpa 22.172.in-addr.arpa 23.172.in-addr.arpa 24.172.in-addr.arpa 25.172.in-addr.arpa 26.172.in-addr.arpa 27.172.in-addr.arpa 28.172.in-addr.arpa 29.172.in-addr.arpa 30.172.in-addr.arpa 31.172.in-addr.arpa 168.192.in-addr.arpa d.f.ip6.arpa corp home internal intranet lan local private test
sisyphus systemd-resolved[6024]: Using system hostname 'sisyphus'.
调试模式下的系统日志输出以下内容,在 UDP 和 TCP 协议之间切换。
Transaction 33247 for <ntp.ubuntu.com IN A> scope dns on ipv6leakintrf0/*.
systemd-resolved[4805]: Using feature level TCP for transaction 33247.
systemd-resolved[4805]: Sending query via TCP since UDP isn't supported.
systemd-resolved[4805]: Using feature level TCP for transaction 33247.
systemd-resolved[4805]: Connection failure for DNS TCP stream: Connection refused
systemd-resolved[4805]: Retrying transaction 33247.
答案1
这种情况经常发生,现在我通常可以通过禁用 systemd-resolved 来恢复我的 /etc/resolv.conf 文件。
sudo systemctl stop systemd-resolved
sudo systemctl disable systemd-resolved
然后在您的 /etc/resov.conf 文件中我添加名称服务器(您要使用的 DNS 服务器的 IP)
nameserver 8.8.4.4
答案2
我的系统确实不是有一个/etc/NetworkManager
目录,但其他方面存在同样的问题。我的系统基于较旧的/etc/network/interfaces
配置样式。
升级到 Ubuntu 22.04 后,DNS 停止工作。该/etc/network/interfaces
文件七年来没有改变,所以这不是问题。
原来,在 处有一个全新的配置文件/etc/systemd/resolved.conf
。编辑此文件并取消注释该行DNS=
并添加服务器列表即可解决问题。这需要service systemd-resolved restart
才能生效。
答案3
就我而言,从有线以太网接口切换到无线接口后,我必须重新启动systemd-networkd
。
在此之前,如果我“绕过中间人”并直接进入路由器,我就能发现 DNS 解析是有效的。