将我的16.04安装升级到16.10后,DNS出现了问题。
首先,当它在以太网上工作时,连接WiFi时出现了几次问题。现在它似乎也可以在WiFi上工作。不知道为什么,并且与我现在面临的问题有任何关系:
当使用Cisco Anyconnect VPN连接到VPN主机时,它将在'/etc/resolv.conf'中添加一行。我知道Ubuntu现在正在使用systemd-resolve,并且手册页上说有三种不同的模式来处理/etc/resolv.conf。我的/etc/resolv.conf不是符号链接,也没有将127.0.0.53列为DNS服务器,据我了解,systemd-resolved应该“读取它以获取DNS配置数据”。但是,它似乎并不在乎。
挖
(对我而言)奇怪的是,它dig host.customer.tld
返回一个不错的答案,并带有显示所请求主机ip的ANSWER SECTION,并且它将由vpn客户端添加到/etc/resolv.conf的dns服务器称为SERVER。禁用VPN连接后,我没有任何答案。即dig读取/etc/resolv.conf。
ping
另一方面,浏览器无法访问/etc/resolv.conf,并且无法解析主机名。顺便说一句,ping / curl都不是。
南极
我找到了相关文章,并尝试运行
nmcli device show <interfacename> | grep IP4.DNS
但是它没有列出cscotun0设备的dns。(尽管在16.04中也没有。)此外,nmcli将我的dhcp服务器(我的路由器)列为我的eth / wlan连接的IP4.DNS主机。使用dig @192.168.0.1 xxx
任何公共领域工作正常。
组态
我的/run/systemd/resolve/resolv.conf中列出了一些其他DNS服务器:
nameserver 8.8.8.8
nameserver 8.8.4.4
nameserver 2001:4860:4860::8888
# Too many DNS servers configured, the following entries may be ignored.
nameserver 2001:4860:4860::8844
我的DHCP服务器不提供这些服务。/etc/systemd/resolved.conf文件仅包含注释行,但节标题除外:
[Resolve]
#DNS=
#FallbackDNS=8.8.8.8 8.8.4.4 2001:4860:4860::8888 2001:4860:4860::8844
对于该名男子页resolved.conf说,
DNS =以空格分隔的IPv4和IPv6地址列表,用作系统DNS服务器。...由于兼容性原因,如果未指定此设置,则使用/etc/resolv.conf中列出的DNS服务器(如果该文件存在并且在其中配置了任何服务器)。此设置默认为空列表。
FallbackDNS =用空格分隔的IPv4和IPv6地址列表,用作后备DNS服务器。从systemd-networkd.service(8)获得的任何每个链接DNS服务器都优先于此设置,通过DNS = above或/etc/resolv.conf设置的任何服务器也是如此。因此,仅在不知道其他DNS服务器信息的情况下才使用此设置。如果未提供此选项,则使用DNS服务器的内置列表。
就我而言,回退似乎以/run/systemd/resolve/resolv.conf结尾。
编辑:我不确定是什么问题,老实说,我仍然不确切知道它是如何工作的,但至少事实证明,在我看来,解决方案是禁用systemd-resolved
服务。我认为该服务是必需的,它是为所有本地应用程序提供DNS服务的组件,但显然还有其他工作可以完成。