使用 Linux 时,如果网络操作需要解析域名(例如访问网站、更新软件包或执行其他需要网络连接的任务),你可能会遇到名称解析临时失败的错误。这个错误表示你的系统无法将域名转换为 IP 地址,导致网络操作无法正常完成。
这个问题通常由网络连接问题或 DNS 配置问题引起。排查和修复此错误很直接明了。本指南将说明如何在不同 Linux 发行版上解决此错误。我们会针对 Ubuntu 22.04 和 24.04 介绍具体的修复方法。
临时名称解析失败是什么意思?
名称解析临时失败导致您的 Linux 系统无法正常连接到互联网。出现这种情况时,您将无法访问网站或使用任何需要互联网连接的应用程序。
这是 DNS 的通用「重试」失败处理。查询在某个环节失败了,可能是本地故障、上游超时或验证问题。
尝试 ping 网站时通常会出现这个错误:

ping google.com
ping: google.com: Temporary failure in name resolution
如何修复名称解析临时失败
导致这个错误的原因有很多,解决方案也因此各不相同。我们来看看主要的几种方法。
方案 1:检查互联网连接
检查你的路由器和网络硬件,确保配置无误。尝试打开其他应用程序,确认你可以通过它们建立互联网连接。
你可以通过直接 ping IP 地址来测试基本连接:
ping -c 4 8.8.8.8
这条命令向 Google 的公网服务器 DNS 发送四个数据包。如果收到响应,说明你的网络连接正常工作。
如果你看到"Request timed out"或"Network unreachable",说明你遇到的是普通网络连接问题,与DNS无关。

如果应用程序能成功连接到互联网,请继续下一个解决方案。
解决方案 2:resolv.conf 文件配置错误
这 /etc/resolv.conf 该文件列出了您的系统使用的 DNS 服务器。如果文件中的 IP 地址错误,您将无法连接到网站。
在许多 Ubuntu 系统上,该文件是一个指向由 systemd-resolved 管理的动态文件的符号链接。它通常包含一条警告:"请勿编辑。"但如果直接编辑此文件,所做的更改可能只会保留几分钟。系统在更新网络设置或重启时会将其覆盖。
在配置 DNS 设置之前,请确保您的系统用户具有管理员权限。了解如何 将用户添加到 sudoers 如果需要的话。
查看当前 DNS 配置
先查看您的 DNS 设置,无需进行任何更改:
cat /etc/resolv.conf
如果看不到有效的名称服务器,那就是问题所在。
临时测试
您可以添加 Google 的 DNS 服务器进行快速测试。
nameserver 8.8.8.8
nameserver 8.8.4.4
或者,你可以使用 Cloudflare 的 DNS 服务器:
nameserver 1.1.1.1
nameserver 1.0.0.1
以下是常见公共 DNS 服务器的对比:

| DNS 提供商 | 主要DNS | 辅助DNS | 主要功能 |
| Google DNS | 8.8.8.8 | 8.8.4.4 | 高可用性,全球覆盖 |
| Cloudflare | 1.1.1.1 | 1.0.0.1 | 隐私优先,不记录 IP 地址 |
| Quad9 | 9.9.9.9 | 149.112.112.112 | 阻止已知恶意域名 |
| OpenDNS | 208.67.222.222 | 208.67.220.220 | 钓鱼网站防护、内容过滤 |
但这只是临时的。系统会清除这些更改。要在 Ubuntu 上获得持久的解决方案,您需要配置 systemd-resolved 或 Netplan。我们在下面的具体部分涵盖了这些步骤。
检查 Systemd-Resolved 服务状态
如果您的名称服务器看起来没问题,但解析仍然失败,请检查 systemd-resolved 服务。该服务在大多数现代 Linux 系统上管理本地 DNS 查询。使用此命令检查它是否正在运行: sudo systemctl status systemd-resolved
如果输出显示服务未运行,你可以立即启动它。
sudo systemctl start systemd-resolved
对于 Ubuntu 用户来说,这一步至关重要,因为服务中断经常会导致名称解析失败。
方案 3:防火墙限制
防火墙可以保护你的 Linux 系统免受恶意软件和安全威胁。但配置不当的防火墙会阻止 DNS 请求,导致域名解析错误。
一种诊断方法是暂时禁用防火墙和安全软件,以确定它们是否导致了问题。如果禁用防火墙解决了问题,你需要重新配置防火墙设置。
配置 UFW 防火墙
大多数 Debian 和 Ubuntu 发行版使用 UFW防火墙。您必须在第 53 端口上允许 DNS 流量(UDP 和 TCP 均需允许):
sudo ufw allow 53/udp
sudo ufw allow 53/tcp
DNS 依赖 UDP 处理标准查询,依赖 TCP 处理大型数据传输。
打开这些端口后,重新加载 UFW 以应用更改:

sudo ufw reload
配置 Firewalld
对于使用 firewalld 的基于 CentOS 和 Red Hat 的系统,请开放必要的端口:
sudo firewall-cmd --add-port=53/udp --permanent
sudo firewall-cmd --add-port=53/tcp --permanent
重新加载防火墙以应用更改:
sudo firewall-cmd --reload
解决方案 4:清空 DNS 缓存
DNS 缓存在本地存储 IP 地址,加速后续的域名查询。但过时或损坏的 DNS 缓存数据可能导致无法访问已更换域名或托管商的网站,引发临时的域名解析错误。
仅你 清除 DNS 缓存 当你需要系统请求最新数据时使用。遇到解析错误时执行此步骤。

识别您的 DNS 服务
服务因安装方式而异。检查正在运行的服务以避免「单元未找到」错误:
sudo systemctl is-active nscd
sudo systemctl is-active dnsmasq
清空 nscd 缓存
If nscd 处于活跃状态,请重启它:
sudo systemctl restart nscd.service
清空 dnsmasq
If dnsmasq 处于活跃状态,请重启它:
sudo systemctl restart dnsmasq.service
在 Ubuntu 上刷新缓存 (systemd-resolved)
对于使用 systemd-resolved 的系统:
sudo systemctl restart systemd-resolved.service
或者使用 resolvectl 命令:
sudo resolvectl flush-caches
理解域名解析
当你在浏览器中输入 cloudzy.com 这样的网址时,你的电脑必须将这个人类可读的域名转换成 IP 地址(比如 172.66.40.212),才能在互联网上找到该网站。这个转换过程叫做域名解析,DNS 服务器负责处理它。
当您的 Linux 系统无法连接到 DNS 服务器来获取网站的对应 IP 地址时,就会出现名称解析临时失败错误。"临时"这个标签表明这不一定是永久性故障。大多数情况下,这是由配置或连接问题引起的,可以解决。
DNS 服务器将域名转换为计算机用于通信的 IP 地址。Google Public DNS 处理 超过一万亿 每日查询量,足以说明这项关键互联网服务的规模。
同样,Cloudflare 的 1.1.1.1 resolver 处理 每天处理近 2 万亿次查询。这证明了 DNS 对互联网至关重要。
是什么导致了名称解析临时失败?
要修复 Ubuntu 的临时名称解析失败错误,首先需要找出根本原因。有几个因素可能会引发这个问题。

网络连接问题
网络连接缓慢或中断往往是主要原因。在进行复杂排查前,先确认你的网络连接正常。
DNS 配置问题
DNS 配置错误是导致此问题的最常见原因:
- DNS 服务器无响应:您的系统尝试访问的 DNS 服务器可能暂时不可用
- DNS 分辨率配置错误:DNS 解析机制可能配置不当
- DNS 缓存已过期:旧的或损坏的 DNS 缓存条目可能导致解析失败
防火墙限制
防火墙配置可能会阻止 DNS 请求,即使配置正确也不例外。DNS 查询使用 端口 53,如果防火墙阻止了这个端口,域名解析会失败。
端口 53 同时处理 UDP 和 TCP 协议。DNS 通常使用 UDP 端口 53 进行标准查询,因为速度更快。TCP 端口 53 用于区域传输和超过 UDP 大小限制的较大查询。
服务配置问题
systemd-resolved 服务管理现代 Linux 发行版中的 DNS 解析。该服务可能已停止、被禁用或配置不当。它为系统中的所有应用提供 DNS 解析功能。
名称解析临时失败 Ubuntu 22.04
Ubuntu 22.04 LTS 引入的网络管理变更可能导致 DNS 解析问题,特别是在系统升级后。用户在此版本上可能会更频繁地遇到 Ubuntu 无法解析主机名、名称解析临时失败等错误。
Ubuntu 22.04 常见问题
从 Ubuntu 20.04 升级到 22.04 的用户经常报告 DNS 解析失败。Ubuntu 22.04 的名称解析临时失败问题通常源于升级过程中 systemd-resolved 服务配置不当。
Ubuntu 22.04 特定修复
如果您在 Ubuntu 22.04 上遇到持续的 DNS 问题,请按照以下步骤操作:
首先,确认 systemd 网络服务已启用:
sudo systemctl unmask systemd-networkd.service
sudo systemctl unmask systemd-resolved.service
检查 systemd-resolved 的状态:

sudo systemctl status systemd-resolved.service
如果服务未运行,启动它:
sudo systemctl start systemd-resolved.service
sudo systemctl enable systemd-resolved.service
检查 /etc/resolv.conf 符号链接是否指向正确的位置:
ls -l /etc/resolv.conf
推荐配置链接到存根解析器:
sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
测试修复
进行这些更改后,测试 DNS 的解决方案:
resolvectl status
此命令显示您当前的 DNS 配置。它也确认 systemd-resolved 正确管理 DNS。
Ubuntu 24.04 名称解析临时失败
Ubuntu 24.04 LTS 是最新的长期支持版本,采用 systemd 255,并包含更新的网络管理组件。虽然比以前的版本更稳定,但仍然可能出现特定的 DNS 问题。
远程管理员经常会遇到"SSH could not resolve hostname"错误。当系统存根解析器在 127.0.0.53 失败。由于 SSH 依赖这个本地服务进行名称转换,如果服务停止 systemd-resolved 该进程会立即阻止所有基于域名的连接尝试。
Ubuntu 24.04 DNS 配置
Ubuntu 24.04 大量依赖 systemd-resolved 进行 DNS 管理。127.0.0.53 上的存根侦听器处理系统的 DNS 查询。
修复 Ubuntu 24.04 中的 DNS 问题
如果在 Ubuntu 24.04 上遇到域名解析失败,请检查 systemd-resolved 是否正在运行:
sudo systemctl status systemd-resolved
使用 resolvectl 验证 DNS 配置:
resolvectl status
这会显示每个网络接口的 nameserver 信息和 DNS 配置。
Ubuntu 24.04 Netplan 配置
Ubuntu 24.04 使用 Netplan 进行网络配置。文件名和渲染器设置取决于你使用的是服务器版本还是桌面版本。
首先,找出你的配置文件:
ls /etc/netplan/
编辑找到的文件(通常是 50-cloud-init.yaml or 00-installer-config.yaml):
sudo nano /etc/netplan/YOUR_FILE_NAME.yaml
验证你的 DNS 设置。 注意: 服务器通常使用 networkd,而桌面安装则使用 NetworkManager。检查你的接口名称(例如 eth0 or ens3使用 ip addr 编辑前
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: yes
nameservers:
addresses: [8.8.8.8, 8.8.4.4]
应用配置:

sudo netplan apply
Stub Listener 问题
某些应用可能会与 systemd-resolved 在端口 53 上的 stub listener 冲突。如果需要禁用 stub listener:
sudo mkdir -p /etc/systemd/resolved.conf.d/
创建一个配置文件:
echo -e "[Resolve]\nDNSStubListener=no" | sudo tee /etc/systemd/resolved.conf.d/noresolved.conf
重启 systemd-resolved:
sudo systemctl restart systemd-resolved.service
其他故障排查提示
如果错误仍然存在,使用这些工具隔离问题。你需要判断问题来自你的网络连接、DNS 服务器本身,还是本地文件冲突。
验证 DNS 服务器可访问性
你应该测试系统是否能够到达配置中列出的特定 DNS 服务器。使用 ping 命令,然后跟上主 nameserver 的 IP 地址:
ping -c 4 <your_dns_server_ip>
如果失败,说明你有网络连接问题。
检查 /etc/hosts 文件
/etc/hosts 文件可以覆盖 DNS 查询。这里的错误条目可能导致解析失败:
sudo nano /etc/hosts
确保至少包含以下内容:
127.0.0.1 localhost
127.0.1.1 你的主机名
使用 dig 命令诊断 DNS
dig 命令有助于诊断 DNS 问题:
dig google.com
这会显示详细的 DNS 查询信息,包括哪个名称服务器响应以及查询耗时。

检查网络接口配置
确保您的网络接口配置正确:
ip addr show
确保您的主网络接口已分配 IP 地址。
防止未来出现 DNS 问题
修复立即出现的错误可以恢复访问,但您需要一个可靠的设置来防止问题重复出现。这些做法在网络配置中构建冗余,使您的系统能够在轻微连接中断时仍然保持名称解析功能。
网络可靠性取决于硬件质量。我们的 Cloudzy Linux VPS 采用高频 AMD Ryzen 9 处理器和 40 Gbps 连接运行。这种原始性能可以最小化延迟和超时,这些通常是导致解析失败的原因,确保您的应用程序保持可访问。
使用可靠的 DNS 服务器
您应该通过 Netplan 或 systemd-resolved 配置多个名称服务器,而不是直接编辑 /etc/resolv.conf 这样您的设置在重启后仍然保持不变。添加一个辅助 IP(如 1.1.1.1 or 8.8.4.4 )可以在您的主提供商失败时创建冗余。
监控系统更新
系统更新后 DNS 配置可能会改变。更新 Linux 发行版后,请验证 DNS 解析仍在正常工作。
记录您的配置
保留 DNS 配置的记录,特别是如果您使用自定义 DNS 服务器。这样有助于在出现问题时进行故障排除。
避免定期刷新
不要作为日常任务的一部分清除 DNS 缓存。这会删除有效数据并降低网页浏览速度。
只在两种特定情况下刷新缓存:
- 您更改了 DNS 提供商(例如,从 ISP 切换到 Go Google DNS)。
- 网站已迁移到新服务器,无法访问。
结论
Linux 系统中的名称解析临时故障通常由网络连接问题、DNS 配置错误、防火墙限制或 DNS 缓存损坏引起。按照本指南逐步排查,你可以找到并解决影响你系统的具体原因。
Ubuntu 22.04 和 24.04 用户必须优先配置 systemd-resolved 该服务管理所有 DNS 查询,单一配置错误会阻止软件包更新和外部连接。验证该服务是否处于活跃状态并正确关联。稳定的 DNS 设置让你的 Linux VPS 能够不中断地执行网络任务。