systemd-resolved 未解析任何域

systemd-resolved 未解析任何域

我的 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 解析是有效的。

相关内容