systemd resolve 不响应查询

systemd resolve 不响应查询

我在一些装有 Ubuntu Server 17.10 或 18.01 的服务器上遇到了 DNS 故障。除非我直接访问名称服务器(即使用 dig @1.2.3.4 ...),否则我无法解析地址。它无法解析最简单的查询:

$ host localhost
;; connection timed out; no servers could be reached

/etc/nsswitch.conf:

hosts:          files dns

/etc/resolv.conf

nameserver 127.0.0.53
search xx.uk xxx

netstat 输出:

$ netstat -pluten
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       User       Inode      PID/Program name    
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      102        209799     7876/systemd-resolv 
tcp        0      0 192.168.x.1:53        0.0.0.0:*               LISTEN      0          45394      2673/dnsmasq        
tcp        0      0 127.0.0.1:7030          0.0.0.0:*               LISTEN      0          26916      3236/docker-proxy   
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      0          23759      1925/sshd           
tcp6       0      0 :::7946                 :::*                    LISTEN      0          48402      2076/dockerd        
tcp6       0      0 :::22                   :::*                    LISTEN      0          23761      1925/sshd           
udp        0      0 0.0.0.0:4789            0.0.0.0:*                           0          26906      -                   
udp        0      0 127.0.0.53:53           0.0.0.0:*                           102        209798     7876/systemd-resolv 
udp        0      0 192.168.x.1:53        0.0.0.0:*                           0          45393      2673/dnsmasq        
udp        0      0 0.0.0.0:67              0.0.0.0:*                           0          45390      2673/dnsmasq        
udp        0      0 10.x.x.x:68          0.0.0.0:*                           101        2702       7218/systemd-networ 
udp6   22592      0 :::7946                 :::*                                0          48403      2076/dockerd 

但 systemd-resolve 仍在运行:

$ systemd-resolve localhost
localhost: 127.0.0.1%lo
           ::1%lo

-- Information acquired via protocol DNS in 201.5ms.
-- Data is authenticated: yes

即使在调试时发出请求,systemd-resolved 也没有输出

答案1

我没有任何关于如何使固定systemd-resolved 的存根 DNS 响应器正确,但我可以建议一个解决方法

  1. nss-resolve为使用 NSS 的应用程序启用
  2. 告诉应用程序不要使用 NSS 直接联系上游名称服务器

对于 (1),更改您的/etc/nsswitch.conf

hosts: files resolve [!UNAVAIL=return] dns

对于 (2),链接/etc/resolv.conf/run/systemd/resolve/resolv.conf

答案2

如果你确定要使用哪个 DNS 服务器,那么简单的解决方法就是将它们添加到/etc/systemd/resolved.conf。这对我来说很有效:

sudo vi /etc/systemd/resolved.conf

取消注释该行#DNS=并添加您首选的 DNS 服务器(以空格分隔)。

DNS=8.8.8.8 8.8.4.4

然后做:

sudo systemctl restart systemd-resolved

相关内容