升级我的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配置数据”。然而,它似乎并不关心它。
另一方面,浏览器无法访问/etc/resolv.conf,也无法解析主机名。同样,ping/curl也无法解析。
我找到了一个相关帖子,并尝试运行。
但它没有为cscotun0设备列出任何DNS。(尽管在16.04中也没有。)此外,nmcli将我的DHCP服务器(我的路由器)列为我的eth/wlan连接的IP4.DNS主机。对于任何公共域名,使用
这些不是由我的DHCP服务器提供的。文件/etc/systemd/resolved.conf只包含了被注释掉的行,除了部分标题。
首先,在连接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
奇怪的是,对我来说,dig host.customer.tld
返回了一个很好的答案,其中包含了所请求主机的IP,并将其引用为由VPN客户端添加到/etc/resolv.conf的DNS服务器。当VPN连接被禁用时,我得不到任何答案。也就是说,dig读取/etc/resolv.conf。另一方面,浏览器无法访问/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
DNS= 一个以空格分隔的IPv4和IPv6地址列表,用作系统DNS服务器。 ... 出于兼容性原因,如果未指定此设置,则使用/etc/resolv.conf中列出的DNS服务器(如果该文件存在并配置了任何服务器)。此设置默认为空列表。
FallbackDNS= 一个以空格分隔的IPv4和IPv6地址列表,用作备用DNS服务器。从systemd-networkd.service(8)获取的每个链接的DNS服务器优先于此设置,以及通过上述DNS=或/etc/resolv.conf设置的任何服务器。因此,只有在没有其他DNS服务器信息时才使用此设置。如果未提供此选项,则使用编译的DNS服务器列表。
在我的情况下,似乎备用DNS最终会出现在/run/systemd/resolve/resolv.conf中。
编辑:我不确定问题是什么,老实说,我还不太清楚这个是如何工作的,但至少在我的情况下,解决方案是禁用systemd-resolved
服务。我原以为这个服务是必需的,它是为所有本地应用程序提供DNS服务的组件,但显然还有其他东西在那里完成这项工作。
sudo systemctl disable systemd-resolved.service
对我来说似乎运行正常。 - jmartinez