解决 Linux 中的 "Temporary Failure in Name Resolution" 错误

简介
Linux 用户在尝试访问网站或执行网络命令时,可能会遇到 "Temporary failure in name resolution" 错误。 此错误表明系统无法将域名转换为其对应的 IP 地址。 导致此错误的因素有多种,包括网络连接问题、resolv.conf 文件配置不正确以及防火墙限制。 在本指南中,我们将探讨此错误的常见原因,并提供解决方案来帮助您解决此问题。
常见原因和解决方案
网速慢或无网络连接在进一步进行故障排除之前,务必检查您的网络连接。 网速慢或断开的网络连接可能是 "Temporary failure in name resolution" 错误的根本原因。
解决方案
确认您的系统具有稳定且正常工作的网络连接。 如果您的网络连接速度慢或已断开,请尝试先修复连接问题,然后再继续。
resolv.conf 文件配置错误resolv.conf 文件负责在 Linux 系统上配置 DNS 服务器。 如果此文件未正确设置,系统可能无法解析域名。
解决方案
首先,在文本编辑器(如 nano)中打开 resolv.conf 文件
sudo nano /etc/resolv.conf
确保在 resolv.conf 文件中定义了至少一个 nameserver。 有效的 nameserver 条目应如下所示
nameserver 8.8.8.8
如果文件中未定义任何 nameserver,请添加一个。 Google 拥有的一些众所周知的 nameserver 是 8.8.8.8
和 8.8.4.4
。 更改后,保存文件并重新启动 DNS 解析器服务
sudo systemctl restart systemd-resolved.service
通过 ping 网站来验证 DNS 服务器是否正常工作
ping example.com
如果与网站建立了通信,则 DNS 服务器工作正常。
resolv.conf 文件权限配置错误
如果 resolv.conf 文件包含有效的 DNS 服务器,但错误仍然存在,则可能是由于文件权限不正确。
解决方案
将 resolv.conf 文件的所有权更改为 root 用户
sudo chown root:root /etc/resolv.conf
修改文件权限,以允许系统上的所有用户读取该文件
sudo chmod 644 /etc/resolv.conf
再次尝试 ping 网站,以检查问题是否已解决。
防火墙限制防火墙限制可能会阻止对必要端口的访问,从而导致错误。 端口 43(用于 whois 查找)和端口 53(用于域名解析)对于 DNS 查询至关重要。
解决方案
通过运行以下命令,在 Uncomplicated Firewall (UFW) 中打开必要的端口
sudo ufw allow 43/tcp sudo ufw allow 53/tcp
注意:如果默认情况下未启用 UFW,请使用 sudo ufw enable
启用它。
允许端口后,重新加载 UFW 防火墙以应用更改
sudo ufw reload
结论
"Temporary failure in name resolution" 错误可能由多种因素引起,包括网络连接问题、resolv.conf 文件配置错误以及防火墙限制。 通过解决这些常见原因,您可以解决该错误,并在 Linux 系统上成功访问网站和执行网络命令。