16.10无法解析DNS


34

将我的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服务的组件,但显然还有其他工作可以完成。


如果您不使用VPN,DNS是否有问题?
Mark Stosberg '16


3
只是要注意,我在16.10上的Anyconnect遇到了完全相同的问题。多次连接到VPN服务似乎可以暂时修复它,但是在某些时候dns不再能够正常工作。
jmartinez

2
我有类似的DNS解决问题,而16.04则没有。我的建议是从删除(备份)/etc/resolv.conf开始;卸载resolvconf软件包;重启; 并在没有VPN的情况下使用dig,systemd-resolve查看是否有效。
philcolbourn '16

Answers:


15

我遇到了类似的问题,例如添加了一个额外的USB wifi加密狗。首先,如上所述,我在networkmanager中禁用了dnsmasq,然后停止了dnsmasq(服务dnsmasq停止)

我注意到在VPN连接过程中解析中断时,路由表看起来略有不同(route命令的输出)。在网关不起作用的情况下,其名称为DD-WRT,在网关起作用时仅称为“网关”。此输出未更改:

nmcli device show wlp1s0 | grep IP4.DNS

它一直显示我的路由器IP。使它工作一段时间的解决方法是重新启动systemd-resolvd:

sudo service systemd-resolved restart

由于dnsmasq不可行,因此可能是问题的原因是systemd-resolvd,还是更改了路由表的任何内容。

所以这是我看到的唯一区别:

ubuntu@ubuntu-Lenovo-Yoga-2-11:~$ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         gateway         0.0.0.0         UG    601    0        0 

哪个有效。而当它不起作用时:

ubuntu@ubuntu-Lenovo-Yoga-2-11:~$ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         DD-WRT          0.0.0.0         UG    601    0        0 wlp1s0

与VPN线上的名称不同:

vpn-dns.name gateway         255.255.255.255 UGH   0      0        0 wlp1s0

谁知道什么可能影响路由表?如果我们能够识别出这一点,那么就可以提交错误报告,那就太好了。我对解决所有这些错误感到非常厌倦和厌倦,但是我想修复它们,以便将来的用户和我们感到高兴:)。

[更新]似乎停止systemd-resolved可能会解决此问题,并且不会对其他内容产生负面影响。您可以尝试一下,让它知道它是否破坏了东西。在调试中运行systemd-resolvd时,我看到它坏了:

Removing scope on link wlp1s0, protocol llmnr, family AF_INET
Removing scope on link wlp1s0, protocol llmnr, family AF_INET6
Removing scope on link *, protocol dns, family *

禁用:

sudo systemctl disable systemd-resolved.service

我用建议更新了Ubuntu报告。[/ update]添加:注意:错误报告:https : //bugs.launchpad.net/ubuntu/+source/systemd/+bug/1624317 有一个针对17.04的补丁,用于解决某些问题。请检查错误报告,并尽可能测试补丁。谢谢!

[更新]

请检查上述错误报告,该问题似乎已在17.10中解决,并且可以使用简单的命令来禁用DNS泄漏。

[/更新]


感谢您的详尽报告!我发现路由表中的变化与您不同–我怀疑我的VPN似乎在使用时动态添加了许多路由。但是,禁用systemd-resolved也可以很好地解决我的问题!
aweibell '16

我认为最终路由表中的名称无关紧要,它是systemd解析的,弄乱了DNS解析的方式。我还必须禁用dnsmasq服务,以防止其启动,但现在一切正常。让我们希望有人能够修复软件包之间正确的依赖关系集合,以使其全部正常运行。这是一个令人讨厌的错误。
文森特·格里斯

值得一提的是,我在这一问题上花了整整一天的时间,重新启动systemd-resolved服务对我没有任何帮助,但是完全禁用了它,也没有任何问题!
fd8s0

重申一下,自从16.10升级到17.04以来,我遇到了几天的网络问题,在这里我尝试了大多数答案,大部分工作了一段时间,然后又出现了问题,最后有效的方法是禁用sudo systemctl disable systemd-resolved.service 使用dns设置了systemd-resolved /etc/resolv.conf中的8.8.8.8
Japheth Ongeri-inkalimeva

这条简单的线为我解决了:sudo service systemd-resolved重新启动,谢谢!
塞尔吉奥·阿布雷乌

36

当我遵循关于ubuntuforums 的建议时,OpenVPN连接期间的DNS行为立即得到改善:

  1. /etc/NetworkManager/NetworkManager.conf在具有根权限的编辑器中打开。
  2. 删除(或用散列注释掉#)读取的行dns=dnsmasq
  3. 通过重启网络管理器 sudo service NetworkManager restart

谢谢。现在尝试了一下,但是没有用。实际上,DNS运行正常,除非当我启动Cisco VPN客户端时,它用纯文本文件替换了symlink /etc/resolve.conf。
aweibell '16

1
此修复程序对我有用,我在使用OpenVPN时遇到DNS问题。更改之后,我的/etc/resolve.conf已更改。这很奇怪,因为我什至没有安装dnsmasq。
postfuturist

这可能适用于NM和openvpn的问题,但至少会减慢连接速度。就像在这里猜到的那样。
BairDev

3

遇到同样的问题。不知何故,我必须已经使用某些应用程序安装了DNSmasq。只需删除dnsmasq即可为我解决问题。

sudo apt-get remove dnsmasq 

从那以后,不再断开连接或某些站点无法再加载(我在加载gmail时遇到了问题,即突然间它无法连接到gmail,尽管其他站点也可以正常工作)。


当试图删除的dnsmasq基包,性向告诉我,这是需要网络管理员Ubuntu的风扇,并删除它会导致大量的额外软件包被删除..
aweibell

什么发行版和版本?我在Ubuntu 16.10上,删除它没有任何问题。否则我就不会发布它了:)
Nitai

我也在Ubuntu 16.10上!奇怪。 apt remove dnsmasq-base...The following packages will be REMOVED: account-plugin-ubuntuone checkbox-converged checkbox-gui dnsmasq-base indicator-network network-manager network-manager-gnome network-manager-openconnect network-manager-openconnect-gnome network-manager-openvpn network-manager-openvpn-gnome network-manager-pptp network-manager-pptp-gnome network-manager-vpnc pay-service plainbox-provider-checkbox plainbox-provider-resource-generic ubuntu-desktop ubuntu-fan ubuntu-push-client ....
aweibell '16

与16.10相同。它也希望删除所有其他软件包。
Dave Kincaid

前几天我又断开了连接。以某种方式某个应用程序必须再次重新安装了dnsmasq。无论如何,这次我只是用systemd禁用了它。到目前为止,它不再运行了,我也没有断开连接。
Nitai

1

编辑/etc/nsswitch.conf和更改

hosts:          files mdns4_minimal [NOTFOUND=return] dns

hosts:          files dns mdns4_minimal [NOTFOUND=return]

编辑:

我在相当长的时间内遇到了同样的问题。我可以从vpn解析域名,但无法ping或卷曲域名或在其他应用程序中使用它们。上面描述的更改为我解决了它。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.