介绍
当系统无法将网站名称转换为 IP 地址时,会出现“Temporary failure in name resolution”错误。虽然错误有时是由于互联网连接丢失而出现的,但它可能会出现在你的系统上的原因有多种。
本教程将指导你排除故障并修复Temporary failure in name resolution错误。
先决条件
- Sudo 或 root 权限
- 有效的互联网连接
当用户尝试使用诸如ping 之类的命令与网站通信时,会出现该错误:
ping lsbin.com
系统无法与 DNS 服务器通信并返回错误。
此错误的最常见原因是resolv.conf
网络配置文件和错误配置的防火墙。下面给出了在这两种情况下修复错误的步骤。
方法 1:错误配置的 resolv.conf 文件
resolv.conf
是用于在 Linux 系统上配置 DNS 服务器的文件。
Temporary failure in name resolution解决办法:首先,在文本编辑器(例如 nano)中打开文件。
sudo nano /etc/resolv.conf
确保该resolv.conf
文件至少包含一个名称服务器。列出名称服务器的行应如下所示:
nameserver 8.8.8.8
如果文件中没有列出名称服务器,请至少添加一个。8.8.8.8
并且8.8.4.4
是 Google 拥有的流行名称服务器,但你可以将任何功能性 DNS 服务器添加到此列表中。
保存文件并退出。
然后,重新启动 DNS 解析器服务。
sudo systemctl restart systemd-resolved.service
如果成功,上面的命令不返回任何输出。通过 ping 网站来测试你的新名称服务器是否已正确配置:
ping lsbin.com
如果你看到ping 命令发送和接收数据,则你的 DNS 服务器工作正常。
权限配置错误
修复Temporary failure in name resolution:如果你的resolv.conf
文件包含有效的 DNS 服务器,但错误仍然存在,则可能是由于文件权限配置错误。使用以下命令将文件的所有权更改为 root 用户:
sudo chown root:root /etc/resolv.conf
修改用户权限,允许系统上的所有人读取文件:
sudo chmod 644 /etc/resolv.conf
再次ping一个网站。
ping lsbin.com
如果错误的文件权限导致错误,则上述命令成功解决。
方法二:防火墙限制
“Temporary failure in name resolution”错误的另一个原因可能是防火墙阻止了以下一个或两个端口:
- 端口 43,用于whois 查询
- 53端口,用于域名解析
在 UFW 防火墙中打开端口
Temporary failure in name resolution解决办法:键入以下命令以允许使用UFW 防火墙的端口 43 上的流量:
sudo ufw allow 43/tcp
UFW 确认规则已成功更新。
对端口 53 重复该命令。
sudo ufw allow 53/tcp
使用以下命令重新加载 UFW:
sudo ufw reload
输出确认操作成功。
在 firewalld 中打开端口
修复Temporary failure in name resolution:某些 Linux 发行版(例如CentOS)使用 firewalld作为其默认防火墙。在 firewalld 中打开端口 43 的语法是:
sudo firewall-cmd --add-port=43/tcp --permanent
firewalld 输出单词success
.
对端口 53 重复该命令。
sudo firewall-cmd --add-port=53/tcp --permanent
重新加载防火墙。
sudo firewall-cmd --reload
通过 ping 网站来测试连接。
ping lsbin.com
结论
本文提供了对 Linux 上的“Temporary failure in name resolution”错误进行故障排除和修复的方法。要了解有关诊断 DNS 相关问题的更多信息,请阅读如何使用 Linux dig 命令。