使用 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 发送四个数据包。如果收到响应,说明你的网络连接正常工作。
If you see “Request timed out” or “Network unreachable,” you have a general connectivity problem unrelated to DNS.

如果应用程序能成功连接到互联网,请继续下一个解决方案。
解决方案 2:resolv.conf 文件配置错误
The /etc/resolv.conf 该文件列出了您的系统使用的 DNS 服务器。如果文件中的 IP 地址错误,您将无法连接到网站。
On many Ubuntu systems, this file is a link to a dynamic file managed by systemd-resolved. It often contains a warning: “Do not edit.” However, if you edit this file directly, your changes might only last a few minutes. The system overwrites them when it updates network settings or restarts.
在配置 DNS 设置之前,请确保您的系统用户具有管理员权限。了解如何 将用户添加到 sudoers if needed.
查看当前 DNS 配置
先查看您的 DNS 设置,无需进行任何更改:
cat /etc/resolv.conf
如果看不到有效的名称服务器,那就是问题所在。
Temporary Test
您可以添加 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 Provider | Primary DNS | Secondary DNS | Key Features |
| 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 firewall。您必须在第 53 端口上允许 DNS 流量(UDP 和 TCP 均需允许):
sudo ufw allow 53/udp
sudo ufw allow 53/tcp
DNS 依赖 UDP 处理标准查询,依赖 TCP 处理大型数据传输。
打开这些端口后,重新加载 UFW 以应用更改:

sudo ufw reload
Configure 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 缓存数据可能导致无法访问已更换域名或托管商的网站,引发临时的域名解析错误。
You only 清除 DNS 缓存 当你需要系统请求最新数据时使用。遇到解析错误时执行此步骤。

识别您的 DNS 服务
服务因安装方式而异。检查正在运行的服务以避免「单元未找到」错误:
sudo systemctl is-active nscd
sudo systemctl is-active dnsmasq
Flush nscd
If nscd is active, restart it:
sudo systemctl restart nscd.service
Flush dnsmasq
If dnsmasq is active, restart it:
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 处理 over a trillion 每日查询量,足以说明这项关键互联网服务的规模。
同样,Cloudflare 的 1.1.1.1 resolver 处理 每天处理近 2 万亿次查询。这证明了 DNS 对互联网至关重要。
是什么导致了名称解析临时失败?
要修复 Ubuntu 的临时名称解析失败错误,首先需要找出根本原因。有几个因素可能会引发这个问题。

网络连接问题
网络连接缓慢或中断往往是主要原因。在进行复杂排查前,先确认你的网络连接正常。
DNS 配置问题
DNS 配置错误是导致此问题的最常见原因:
- DNS 服务器无响应:您的系统尝试访问的 DNS 服务器可能暂时不可用
- DNS 分辨率配置错误:DNS 解析机制可能配置不当
- DNS 缓存已过期:旧的或损坏的 DNS 缓存条目可能导致解析失败
Firewall Restrictions
防火墙配置可能会阻止 DNS 请求,即使配置正确也不例外。DNS 查询使用 Port 53,如果防火墙阻止了这个端口,域名解析会失败。
端口 53 同时处理 UDP 和 TCP 协议。DNS 通常使用 UDP 端口 53 进行标准查询,因为速度更快。TCP 端口 53 用于区域传输和超过 UDP 大小限制的较大查询。
服务配置问题
systemd-resolved 服务管理现代 Linux 发行版中的 DNS 解析。该服务可能已停止、被禁用或配置不当。它为系统中的所有应用提供 DNS 解析功能。
名称解析临时失败 Ubuntu 22.04
Ubuntu 22.04 LTS 引入的网络管理变更可能导致 DNS 解析问题,特别是在系统升级后。用户在此版本上可能会更频繁地遇到 Ubuntu 无法解析主机名、名称解析临时失败等错误。
Common Ubuntu 22.04 Issues
从 Ubuntu 20.04 升级到 22.04 的用户经常报告 DNS 解析失败。Ubuntu 22.04 的名称解析临时失败问题通常源于升级过程中 systemd-resolved 服务配置不当。
Ubuntu 22.04 Specific Fix
如果您在 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 问题。
Remote admins often face “SSH could not resolve hostname” errors. This triggers when the system stub resolver at 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 设置。 Note: 服务器通常使用 networkd,而桌面安装则使用 NetworkManager。检查你的接口名称(例如 eth0 or ens3) using ip addr before editing.
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 your-hostname
使用 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)。
- 网站已迁移到新服务器,无法访问。
Conclusion
Linux 系统中的名称解析临时故障通常由网络连接问题、DNS 配置错误、防火墙限制或 DNS 缓存损坏引起。按照本指南逐步排查,你可以找到并解决影响你系统的具体原因。
Ubuntu 22.04 和 24.04 用户必须优先配置 systemd-resolved 该服务管理所有 DNS 查询,单一配置错误会阻止软件包更新和外部连接。验证该服务是否处于活跃状态并正确关联。稳定的 DNS 设置让你的 Linux VPS 能够不中断地执行网络任务。