Linux命令行错误信息:名称解析临时失败。

82

我在尝试ping一个域名,如网站时,会收到“临时名称解析失败”的错误信息。但是,当我ping一个明确的IP地址时,ping命令正常工作。

ping: google.com: Temporary failure in name resolution

这个问题只在尝试ping域名而不是IP时发生,因此似乎是DNS问题。

我的/etc/resolve.conf指定了DNS服务器127.0.0.57。添加了nameserver 8.8.8.8并重新启动服务后,问题似乎得到了解决。但是这可能只是短期的,它可能会再次出现问题,所以我需要一个长期的解决方案。 如果有人有解决这个问题的方法,那就太棒了。


8
1)停用systemd-resolved服务:sudo systemctl disable systemd-resolved.service 2)停止该服务:sudo systemctl stop systemd-resolved.service 3)手动删除配置文件:sudo rm /etc/resolv.conf 4)现在重新创建该文件:sudo nano /etc/resolv.conf 5)输入下面这行内容并保存:nameserver 8.8.8.8 6)启用服务:sudo systemctl enable systemd-resolved.service 7)重新启动服务:sudo systemctl start systemd-resolved.service解决方案来源 - MC Naveen
@MCNaveen 首先,我建议在操作时备份/etc/resolv.conf以防出现问题。 - alper
1
@MCNaveen:谢谢,你的解决方案对我很有帮助。 - Amir
我很惊讶,当我将/etc/resolv.conf文件更改为8.8.8.8时,问题就被解决了,而不需要禁用服务等操作,但为什么要写那么多代码呢? - DaWe
2个回答

189

我曾经遇到过完全相同的问题,但我用了另一种方法解决了它。

使用Ubuntu 18.04,首先禁用systemd-resolved服务。

sudo systemctl disable systemd-resolved.service

停止该服务

sudo systemctl stop systemd-resolved.service

然后,在/etc/resolv.conf中删除指向/run/systemd/resolve/stub-resolv.conf的链接。

sudo rm /etc/resolv.conf

/etc/中添加一个手动创建的resolv.conf文件。

sudo vim /etc/resolv.conf

在其中添加您喜欢的DNS服务器

nameserver 208.67.222.222

我已成功测试过。


1
根据Archlinux关于Systemd-resolved的维基页面,看起来这是正确的方法之一(至少是其中一个正确的方法 :) )。 - Antony Hatchkins
19
好的,这样做是有效的......直到我重新启动,然后它就会改回去,所以每次启动时我都需要运行这些命令。 - Mike1982
8
只有我觉得还是systemd制造了很多不必要的问题吗? - pdwalker
5
对我而言,通过head间接地修改resolv.conf有效。请参考pchelp.ricmedia.com/set-custom-dns-servers-linux-network-manager-resolv-conf/ @Mike1982 - Ferroao
3
有没有其他额外的步骤可以使这更加持久?正如其他人所说,重新启动会使这个问题再次出现,必须再次执行上述步骤。我本来以为systemd在启动时禁用服务已足够。 - Tito Valentin
显示剩余11条评论

6

如果您从DHCP服务器获取IP地址,您还可以设置服务器发送DNS服务器。或将 nameserver 8.8.8.8 添加到 /etc/resolvconf/resolv.conf.d/base 文件中。即使没有配置接口,该文件中的信息也会包含在解析器配置文件中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接