Ubuntu 17.04 systemd解析的DNS查找随机失败


38

我已升级到Ubuntu 17.04,现在似乎已经在Ubuntu 16.10中首次引入了新的DNS解析器机制

我现在有50%的时间遇到​​DNS查找失败。 对nslookup的所有其他调用均失败,其中一半的调用可以解决问题,一半的调用可以解决此问题:

watch -n 1 nslookup google.com

Server:     127.0.0.53
Address:    127.0.0.53#53

** server can't find google.com: SERVFAIL

据我了解,DNS服务器IP地址现在用于表示systemd-resolved,它会进行某种元查找以避免较慢的DNS查询(或其他)。我在过去一周升级到17.04的两台计算机上看到了完全相同的行为。

知道这里存在什么问题以及解决该问题的正确方法吗?

升级之前一切正常(从16.04或16.10起,抱歉,我不记得是哪个)。我认为17.04是LTS发行版,但现在我看到我跳枪了,直到4月份才被认为是稳定的。所以...我在这里。

还要注意的是...浏览器似乎没有出现问题,但是nslookup,ping,git等确实存在问题。


2
未来的提示:Ubuntu版本是.它发布的月份。(因此,根据您的情况,它将位于04/ 17
timotree

听起来像是系统解决的问题被吓到了发行版,也给其他人带来麻烦
moodboom

Answers:


46

截至2017-04-18,Ubuntu 17.04无法解析具有DNSSEC支持的DNS服务器。使用此守护程序禁用DNSSEC:

sudo mkdir -p /etc/systemd/resolved.conf.d
printf "[Resolve]\nDNSSEC=no\n" | sudo tee /etc/systemd/resolved.conf.d/no-dnssec.conf

如果您对resolvconf感到困惑,可以选择重新配置它(说“是”以准备/etc/resolve.conf以进行动态更新?):

sudo dpkg-reconfigure resolvconf

重新启动systemd-resolved:

sudo systemctl restart systemd-resolved

您的DNS应该开始工作。您可以尝试systemd-resolve www.google.com并查看响应来进行检查。


谢谢您的回答-您能解释一下它的作用吗?
bertieb

Ubuntu 17.04无法(直到此处)解析具有DNSSEC支持的DNS服务器。我使用此守护程序禁用DNSSEC。
Sajad Bahmani

谢谢,您可以将说明修改为答案吗?:)
bertieb

此解决方案对我不起作用-设置此设置后,仍然可以在任何时候第一次进行查找时,经过几次尝试成功后都会得到SERVFAIL错误,然后将结果缓存。
古斯

1
@SamuelL。关于T恤,这只是一种花哨的方式,可以同时打印某些内容并将其发送到文件中。通常,您可以使用> [大于字符]将输出重定向到文件,但是看不到输出。Tee让它可以同时到达两个地方。Resolvconf“配置解析”。
moodboom

12

我一直在systemd-resolved和手动/etc/resolv.conf管理之间来回切换,但尚未发现systemd DNS解析器机制稳定。

显然在Ubuntu 16.10 中至少存在一个libnss错误,并且显然仍在17.04中。自从Ubuntu 16.10开启systemd-resolved以来,有很多人遇到DNS问题,是一种分析,而是另一个人的解决方法。在我手动用Google的DNS服务器改写/etc/resolv.conf之前,它们对我都不起作用。

nameserver 8.8.8.8   << or another if you don't trust google
nameserver 8.8.4.4

如果您不需要动态DNS配置,这是一个非常有效的解决方案。只要确保您停止并禁用systemd-resolved:

sudo systemctl disable systemd-resolved.service
sudo service systemd-resolved stop

更改为resolveconf并没有解决我的问题,如何返回使用systemd-resolved?(感谢)
爱德华·莫菲特

1
试试:systemctl enable systemd-resolved.service && systemctl start systemd-resolved.service
moodboom

1
杜德,您刚刚保存了系统!!BRAVO
革命性的

在18.04的罚款
安德烈·M.法里亚

4

Ubuntu 17.04和其他发行版正在拥抱systemd,其中包括systemd-resolved,该问题使用户受到相当苛刻的DNS解析。

  • 如SjB回答中所述,DNSSEC支持可能会引起问题。
  • systemd解析会ping通所有DNS解析器,以便它可以使用最快的解析器。在更复杂的环境中,这可能会导致VPN等问题。
  • DNS服务器证书已通过验证,如果我的时钟偏斜,我会出错。

我认为这不一定是一个坏的变化,只是很多变化。当我了解更多信息时,我将尝试更新和扩展此答案。



1

只需添加名称服务器/etc/systemd/resolved.conf DNS = 194.109.xxx.xxx(在您的路由器上,外部名称服务器)

systemctl重新启动systemd-resolved

无需将rand从3更改为2,无需将dnssec设置更改为off


不幸的是,仅此一项并不能解决我的“其他所有请求失败”的问题。
moodboom

同意@moodboom,这对我也没有解决。
安德烈·M.法里亚
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.