- 1 1. 介绍
- 2 2. DNS 基础(关键术语)
- 3 3. 如何在 Ubuntu 上检查当前 DNS 设置
- 4 4. 如何在 Ubuntu Desktop 上更改 DNS 设置(GUI 方法)
- 5 5. Ubuntu 服务器上更改 DNS 设置的方法(Netplan 方法)
- 6 6. 推荐的公共 DNS 提供商(您应该选择哪个?)
- 7 7. 故障排除:DNS 更改未应用或名称解析仍失败
- 8 8. 高级:理解 /etc/resolv.conf 与 systemd‑resolved
- 9 9. 可选:使用 systemd‑resolved 设置后备 DNS(高级)
- 10 10. 常见问题解答 (FAQ)
- 11 11. 总结
1. 介绍
当你在 Ubuntu 上使用互联网时,可能会突然遇到 “网站无法加载”、 “apt update 失败” 或 “内部服务器主机名无法解析” 等问题。
一个出乎意料的常见原因是 DNS(名称解析)配置。
简而言之,DNS 是 将域名(例如 google.com)转换为 IP 地址的系统。
如果 DNS 工作不正常,你仍然可能已连接到网络,但无法访问网站或服务器。
在本文中,围绕主关键词 “ubuntu dns settings”,我们将以初学者友好的方式,清晰地组织并解释如何在 Ubuntu 上检查和更改 DNS 设置。
1.1 本文你将学到的内容
阅读完本文后,你将能够完成以下操作:
- 检查 Ubuntu 上当前的 DNS 设置
- 在 Ubuntu 桌面(GUI)上更改 DNS 设置
- 在 Ubuntu 服务器(CLI)上持久化配置 DNS
- 理解
systemd-resolved与/etc/resolv.conf之间的关系 - 排查 DNS 更改未生效或名称解析失败的情况
1.2 适合阅读本文的对象
以下人群会发现本文特别有用:
- 你是 Ubuntu 新手,对 “DNS” 这个概念仍不太清楚
- 你在 VPS 或家庭服务器上运行 Ubuntu Server
- 网络已连接,但网页和更新都无法正常工作
- 你想固定使用特定 DNS(如 Google DNS、Cloudflare DNS 等)
1.3 Ubuntu DNS 设置可能让人困惑:“到底该在哪里修改?”
Ubuntu 的 DNS 设置常常让人感到困难,因为并不存在唯一的 “输入 DNS” 的位置。
根据不同的使用环境,Ubuntu 可能以不同方式管理 DNS:
- Ubuntu 桌面:通常通过 GUI(网络设置)进行配置
- Ubuntu 服务器:通常通过 Netplan(配置文件)进行管理
- 公共组件:
systemd-resolved可能在后台负责名称解析
此外,/etc/resolv.conf——在许多网络指南中频繁被提及——在不同的 Ubuntu 设置下行为可能不同,某些情况下 直接编辑它并不会生效。
如果不了解这些细节,你很容易陷入以下情形:
- 已更改设置,但没有任何改善
- 设置曾生效,却在重启后恢复原状
- 不知道该相信哪篇文章的指引
为避免上述混乱,本文将 系统化地整理 Ubuntu DNS 设置 并进行清晰解释。
1.4 支持的 Ubuntu 版本
本文主要针对以下常用的 Ubuntu 版本编写:
- Ubuntu 22.04 LTS
- Ubuntu 24.04 LTS
不过,核心的 DNS 概念和验证方法在其他版本中基本相同。
只有少数细节(例如 Netplan 文件名)可能会有所区别。
2. DNS 基础(关键术语)
要在 Ubuntu 上正确配置 DNS,先从宏观上了解 DNS 的作用以及它的管理位置会很有帮助。
下面我们保持初学者友好,只聚焦最核心的内容。
2.1 什么是 DNS?(简要说明即可)
DNS(Domain Name System)是 一种将域名转换为 IP 地址的机制。
例如,你可能在浏览器中访问以下地址:
https://www.google.com
但计算机之间的通信通常使用 IP 地址:
- 类似
142.250.xxx.xxx的数字“地址”
因此 DNS 在后台完成如下转换:
www.google.com→142.250.xxx.xxx
这种转换称为 名称解析,它使系统能够连接到正确的服务器。
换句话说,DNS 就像互联网的 “电话簿” 或 “地址簿”。
2.2 DNS 设置何时重要
在 Ubuntu 上,DNS 配置在以下情形中特别关键:
- 网站无法加载(但 Wi‑Fi/LAN 已连接)
apt update或snap更新失败- 在 Docker 或 Kubernetes 环境中名称解析失败
- 内部主机名(例如
intra-server.local)无法解析 - 仅在 VPN 连接期间,某些域名无法解析
- 想使用广告拦截 DNS 或更快的 DNS
由于 DNS 与网络是否正常工作关系密切,它在故障排除中经常出现。
2.3 什么是 DNS 服务器?(你在向谁询问?)
DNS 转换并不是你的电脑自行计算的。
通常,它 向 DNS 服务器查询 并接收结果。
当 Ubuntu 执行名称解析时,一般遵循以下流程:
- Ubuntu 向 DNS 服务器查询
- DNS 服务器回复:“该域名映射到此 IP”
- Ubuntu 连接到该 IP
常见的 DNS 服务器来源包括:
- 你的路由器(家庭 Wi‑Fi 路由器会分配 DNS)
- 公司/内部 DNS 服务器
- 公共 DNS(Google DNS、Cloudflare DNS 等)
以下是一些知名的公共 DNS 选项:
- Google Public DNS:
8.8.8.8/8.8.4.4 - Cloudflare DNS:
1.1.1.1/1.0.0.1
没有唯一的“正确”选择——关键是挑选适合你环境和需求的。
2.4 为什么在 Ubuntu 上 DNS 设置有点棘手
在 Windows 和某些其他操作系统上,更改 DNS 的位置相对直接。
而在 Ubuntu 上,设置方式可能会因以下因素而不同:
- 通过 GUI(NetworkManager)管理
- 通过 Netplan 管理
systemd-resolved集中处理 DNS/etc/resolv.conf可能是一个链接,而非“真实”文件
因此,当你在网上查阅指南时,可能会看到相互冲突的建议,例如:
- “直接编辑
/etc/resolv.conf” - “不——必须配置 Netplan”
- “应该修改
systemd-resolved设置”
很容易产生困惑。
但别担心。
这并不是“所有东西都错了”,而是 正确的操作步骤取决于你的 Ubuntu 配置。
本文还将解释如何识别哪种方法适用于你的系统。
2.5 Ubuntu DNS 管理中你会看到的关键文件和组件
让我们快速定义在 DNS 配置指南中常出现的术语。
2.5.1 什么是 /etc/resolv.conf?
/etc/resolv.conf 是长期以来在 Linux 中使用的传统 DNS 配置文件。
它的内容通常类似于:
nameserver 8.8.8.8
nameserver 1.1.1.1
然而,在 Ubuntu 上,这个文件并不总是直接使用。
在现代 Ubuntu 中,/etc/resolv.conf 常常是指向其他文件的 符号链接,例如:
- systemd-resolved 自动生成的文件
- NetworkManager 生成的文件
这就是直接编辑会被覆盖的原因。
2.5.2 什么是 systemd-resolved?
systemd-resolved 是 Ubuntu 上管理 DNS 名称解析的服务。
主要特性包括:
- 更容易实现 DNS 配置的集中管理
- 提供 DNS 缓存
- 能处理多个接口(Wi‑Fi、VPN 等)
根据你的环境,这可能就是实际的 DNS 配置“中心”。
2.5.3 什么是 Netplan?
Netplan 是 Ubuntu Server 常用的网络配置系统。
你使用 YAML 文件定义网络设置。
DNS 也可以在 Netplan 配置中指定, alongside:
- IP 地址
- 网关
- DNS 服务器
因为可以将所有内容一起管理,它是服务器使用的标准方法。
2.6 更改 DNS 时最重要的事情:持久化
在 Ubuntu 上设置 DNS 时,最关键的一点——尤其是在服务器上——是:
- 设置是否能在重启后仍然有效?(持久化)
有时你可以临时更改 DNS,但它可能在以下情况下恢复原状:
- 重启系统
- 重新连接网络
- DHCP 续租
- VPN 断开
本文将重点不放在“快速修复”,而是 如何根据你的目标正确持久化 DNS 设置。
3. 如何在 Ubuntu 上检查当前 DNS 设置
在更改 DNS 设置之前,您应先确认 Ubuntu 当前使用的 DNS。
如果跳过此步骤,可能会修改错误的地方,导致问题仍未得到改善。
在本节中,我们将介绍在 Ubuntu(包括桌面版和服务器版)中检查 DNS 设置的可靠方法。
3.1 使用 resolvectl 检查 DNS(推荐)
如果您的 Ubuntu 使用 systemd-resolved,最准确的检查 DNS 方法是 resolvectl。
运行以下命令:
resolvectl status
您将看到类似以下的信息:
- 当前使用的 DNS 服务器
- 哪个接口(Wi‑Fi / 以太网 / VPN)提供 DNS
- 搜索域(如果已配置)
如果输出中出现您未预期的 DNS 服务器(例如路由器的 IP),这可能解释了名称解析缓慢或不稳定的原因。
3.2 检查 /etc/resolv.conf(但需小心)
许多指南会提到检查 /etc/resolv.conf,因为它历史上保存 DNS 设置。
您可以使用以下命令查看:
cat /etc/resolv.conf
典型的输出可能类似于:
nameserver 127.0.0.53
options edns0 trust-ad
search example.local
如果看到 127.0.0.53,通常表示 Ubuntu 正在使用 systemd-resolved,且 /etc/resolv.conf 指向本地存根解析器。
在这种情况下,建议使用 resolvectl status 来确认“真实”的 DNS 服务器。
3.3 确认 /etc/resolv.conf 是否为符号链接
在 Ubuntu 上,/etc/resolv.conf 往往是一个符号链接(symlink)。
如果是这样,直接编辑该文件的更改可能不会持久化。
使用以下命令检查:
ls -l /etc/resolv.conf
如果看到类似下面的内容,则说明它是符号链接:
/etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf
这在现代 Ubuntu 中是正常现象,意味着 DNS 由系统服务管理,而不是直接编辑此文件。
3.4 通过 NetworkManager 检查 DNS(桌面用户)
如果您使用的是 Ubuntu Desktop,DNS 通常由 NetworkManager 管理。
您可以使用以下命令查看活动连接的设置:
nmcli dev show
查找类似以下的行:
IP4.DNS[1]IP4.DNS[2]
这显示了 NetworkManager 当前为您的连接使用的 DNS 服务器。
3.5 快速 DNS 功能测试(名称解析是否正常?)
即使 DNS 服务器已配置,名称解析仍可能因网络或防火墙问题而失败。
因此,运行一个简单的测试会很有帮助。
尝试以下操作:
ping -c 1 google.com
如果能够成功解析并 ping 通,说明 DNS 可能工作正常。
如果出现类似以下的错误:
ping: google.com: Temporary failure in name resolution
则强烈表明 DNS 正在失效。
为了确认网络本身是否可用,您也可以直接 ping 一个公共 IP 地址:
ping -c 1 1.1.1.1
如果 ping IP 正常而域名解析失败,基本可以确定问题出在 DNS 上。
4. 如何在 Ubuntu Desktop 上更改 DNS 设置(GUI 方法)
如果您使用的是 Ubuntu Desktop,最简便且最安全的更改 DNS 设置方式是通过图形界面的网络设置。
此方法对初学者友好,且设置在重启后仍会保留。
4.1 在 Ubuntu Desktop(Wi‑Fi)上更改 DNS
按照以下步骤为 Wi‑Fi 连接更改 DNS:
- 打开 设置
- 进入 网络(或 Wi‑Fi)
- 选择已连接的 Wi‑Fi 网络
- 点击 齿轮图标(连接设置)
- 打开 IPv4 选项卡
- 找到 DNS,将 自动切换为 手动
- 输入您偏好的 DNS 服务器
- 保存设置
您可以输入的示例 DNS 服务器:
- Cloudflare:
1.1.1.1, 1.0.0.1 - Google:
8.8.8.8, 8.8.4.4
保存后,断开并重新连接 Wi‑Fi,或关闭再打开 Wi‑Fi,以确保更改生效。
4.2 在 Ubuntu Desktop(有线以太网)上更改 DNS
对于有线连接,步骤几乎相同:
- 打开 设置
- 转到 网络
- 在 有线 下,点击 齿轮图标
- 打开 IPv4 选项卡
- 将 DNS 从 自动 切换到 手动
- 输入 DNS 服务器
- 保存
这是桌面环境的稳定方法,特别是当您希望在开发工作或远程访问时获得一致的 DNS 行为。
4.3 IPv6 DNS 设置(可选)
如果您的环境使用 IPv6,您可能还想在 IPv6 选项卡下配置 DNS。
IPv6 DNS 服务器示例:
- Cloudflare IPv6:
2606:4700:4700::1111/2606:4700:4700::1001 - Google IPv6:
2001:4860:4860::8888/2001:4860:4860::8844
如果您不使用 IPv6 或不确定,将 IPv6 DNS 保持为自动即可。
4.4 验证更改是否生效
通过 GUI 更改 DNS 后,使用以下方法验证:
resolvectl status
或者如果您更喜欢 NetworkManager 输出:
nmcli dev show | grep DNS
然后再次测试名称解析:
ping -c 1 google.com
如果生效,您的 DNS 设置已成功应用。
4.5 常见错误:“仍然使用路由器 DNS”
有时,即使手动设置 DNS,您仍可能看到路由器 IP 作为 DNS 服务器。
这可能发生在以下情况:
- 连接未正确重新连接
- 另一个网络配置文件处于活动状态
- VPN 正在覆盖 DNS 设置
在这些情况下,尝试断开并重新连接,或临时禁用 VPN,然后使用 resolvectl status 再次检查。
5. Ubuntu 服务器上更改 DNS 设置的方法(Netplan 方法)
在 Ubuntu 服务器上,DNS 配置通常通过 Netplan 管理。
此方法与 Ubuntu 桌面不同,因为您通常编辑 YAML 文件并应用配置。
在本节中,您将学习如何使用 Netplan 安全地更新 DNS 设置,包括如何避免常见的 YAML 错误。
5.1 确认您的网络接口名称
首先,确认您的网络接口名称。
在服务器上,接口名称通常看起来像 ens3、ens160、enp0s3 等。
使用此命令:
ip link
查找处于“UP”状态并用于您的活动连接的接口。

5.2 查找您的 Netplan 配置文件
Netplan 配置文件通常位于 /etc/netplan/ 下。
使用以下命令列出它们:
ls /etc/netplan/
您可能会看到像这样的文件:
00-installer-config.yaml
01-netcfg.yaml
通常有一个主要的 YAML 文件。那是您将要编辑的文件。
5.3 编辑 Netplan YAML 以设置 DNS 服务器
使用如 nano 的编辑器打开文件:
sudo nano /etc/netplan/00-installer-config.yaml
以下是使用 DHCP 的服务器的典型示例,其中我们手动设置 DNS 服务器:
network:
version: 2
ethernets:
ens3:
dhcp4: true
nameservers:
addresses:
- 1.1.1.1
- 1.0.0.1
关键点:
nameservers必须正确对齐(YAML 缩进很重要)。addresses是一个列表,因此为每个 DNS 服务器使用-。
如果您的服务器使用静态 IP,则 DNS 配置将与静态地址配置一起放置。示例:
network:
version: 2
ethernets:
ens3:
dhcp4: false
addresses:
- 192.168.1.50/24
gateway4: 192.168.1.1
nameservers:
addresses:
- 8.8.8.8
- 8.8.4.4
这种设置对于需要可预测网络的服务器很常见。
5.4 安全应用 Netplan 更改
编辑 YAML 后,应用配置。
推荐的最安全方法:
sudo netplan try
netplan try 临时应用更改并要求确认。
如果您丢失网络连接(例如,SSH 断开),更改应在超时后自动回滚。
如果一切正常,您可以永久应用:
sudo netplan apply
5.5 在服务器上验证 DNS 设置
使用以下命令检查当前 DNS:
resolvectl status
然后验证名称解析是否工作:
ping -c 1 google.com
如果解析成功,则 DNS 配置正常工作。
5.6 Netplan 常见错误及其避免方法
Netplan YAML 非常严格。许多问题由于缩进或语法错误而发生。
缩进错误
YAML 使用空格,而不是制表符。一个错误的缩进级别可能会破坏一切。
错误的接口名称
如果您配置了 ens3,但实际接口是 ens160,则 DNS 更改不会生效。
忘记应用配置
如果您编辑了文件但没有运行 netplan apply,则不会发生任何更改。
6. 推荐的公共 DNS 提供商(您应该选择哪个?)
选择 DNS 提供商会影响速度、稳定性、隐私和可靠性。
以下是许多人在 Ubuntu 上使用的常见公共 DNS 服务。
6.1 Cloudflare DNS(快速且流行)
Cloudflare DNS 以速度和强大的全球基础设施而闻名。
- IPv4:
1.1.1.1/1.0.0.1 - IPv6:
2606:4700:4700::1111/2606:4700:4700::1001
6.2 Google 公共 DNS(稳定且广泛使用)
Google DNS 非常知名,并且往往稳定,尤其是在故障排除方面。
- IPv4:
8.8.8.8/8.8.4.4 - IPv6:
2001:4860:4860::8888/2001:4860:4860::8844
6.3 Quad9(注重安全)
Quad9 经常被那些想要阻止恶意软件并注重安全 DNS 解析的用户选择。
- IPv4:
9.9.9.9/149.112.112.112 - IPv6:
2620:fe::fe/2620:fe::9
6.4 您应该选择哪个 DNS?
没有适合所有人的单一最佳选择,但以下是一个简单的指南:
- 速度优先: Cloudflare
- 稳定性/故障排除: Google DNS
- 注重安全: Quad9
如果您不确定,请从 Cloudflare 或 Google DNS 开始,看看您的浏览和更新是否变得更稳定。
7. 故障排除:DNS 更改未应用或名称解析仍失败
您更改了 Ubuntu DNS 设置,但仍然不起作用。
这种情况很常见,原因通常是缓存、冲突设置或 VPN 覆盖等简单问题。
在本节中,我们将逐步介绍在 Ubuntu 22.04/24.04 上效果良好的实用故障排除步骤。
7.1 首先检查:您能否 ping IP 地址?
在仅关注 DNS 之前,确认网络本身是否正常工作。
尝试 ping 公共 IP:
ping -c 1 1.1.1.1
如果成功,则您的网络连接很可能正常。
接下来,测试域名:
ping -c 1 google.com
如果 ping IP 成功但域名失败,则强烈表明是 DNS 问题。
7.2 检查实际使用的 DNS
有时您设置了 DNS,但由于 DHCP、VPN 或其他接口,Ubuntu 仍在使用不同的 DNS 服务器。
使用以下命令检查活动 DNS 服务器:
resolvectl status
查找:
- 哪个接口是“当前 DNS 服务器”
- DNS 服务器是否与您配置的匹配
如果您仍然看到路由器 IP(例如 192.168.1.1),则您的手动 DNS 可能未正确应用。
7.3 刷新 DNS 缓存(systemd-resolved)
Ubuntu 可能会缓存 DNS 结果。即使更改 DNS 后,旧的缓存结果也可能保留。
使用以下命令刷新缓存:
sudo resolvectl flush-caches
然后再次测试:
ping -c 1 google.com
7.4 重启名称解析服务
如果刷新缓存不足,重启解析器服务可能会有帮助。
重启 systemd-resolved:
sudo systemctl restart systemd-resolved
如果您使用 Ubuntu 桌面版,您也可以重启 NetworkManager:
sudo systemctl restart NetworkManager
然后使用以下命令再次检查 DNS:
resolvectl status
7.5 DNS 被 DHCP 覆盖(路由器设置)
在许多家庭网络中,路由器的 DHCP 会自动分配 DNS 设置。
即使您手动设置了 DNS,如果您的连接仍配置为“自动”,它也可能被覆盖。
要修复此问题:
- 在桌面版:确保在 GUI 中将 DNS 设置为 手动
- 在服务器版:确保在 Netplan 的
nameservers下定义 DNS
7.6 VPN 或企业网络覆盖 DNS
VPN 软件通常会自动更改 DNS,以便通过 VPN 隧道进行名称解析。
常见症状包括:
- 仅内部域名在 VPN 连接时能够解析
- 连接 VPN 后公共网站无法访问
- 启用 VPN 时 DNS 服务器发生变化
要确认,请比较连接 VPN 前后的 DNS:
resolvectl status
如果 DNS 意外变化,可能是 VPN 正在覆盖它。
在这种情况下,您可能需要在 VPN 客户端内部配置 DNS 设置,或根据您的 VPN 设置调整 split‑DNS 配置。
7.7 使用 dig 或 nslookup 直接测试 DNS
有时 ping 不够用。直接查询 DNS 会更有帮助。
如果系统中已安装 dig:
dig google.com
如果未安装 dig,可以通过以下方式安装:
sudo apt update
sudo apt install -y dnsutils
您也可以使用 nslookup:
nslookup google.com
如果 DNS 查询超时,通常意味着您配置的 DNS 服务器不可达或被阻塞。
7.8 防火墙或网络限制阻止 DNS
DNS 通常使用 53 端口(UDP,有时也使用 TCP)。
某些网络会阻止外部 DNS,以强制使用它们自己的 DNS 服务器。
在这种情况下,使用公共 DNS(如 1.1.1.1)可能无效,您需要使用网络提供的 DNS。
这在以下环境中尤为常见:
- 企业 Wi‑Fi
- 酒店网络
- 公共网络
8. 高级:理解 /etc/resolv.conf 与 systemd‑resolved
如果搜索 “ubuntu dns settings”,常会看到提到 /etc/resolv.conf。
然而,在现代 Ubuntu 中,该文件的行为可能与旧的 Linux 教程描述的不同。
关键概念如下:
/etc/resolv.conf通常 自动生成- Ubuntu 常使用 systemd‑resolved 来管理 DNS
8.1 为什么直接编辑 /etc/resolv.conf 往往失效
在许多 Ubuntu 系统上,/etc/resolv.conf 是指向系统服务管理的文件的符号链接。
确认该符号链接:
ls -l /etc/resolv.conf
如果看到类似如下内容:
/etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf
则手动编辑不会持久化,因为文件会被自动重新生成。
8.2 127.0.0.53 的含义
如果您的 /etc/resolv.conf 包含:
nameserver 127.0.0.53
这 不代表 “您的 DNS 服务器坏了”。
它通常意味着:
- Ubuntu 正在使用本地存根解析器
systemd‑resolved正在内部处理 DNS 查询
实际的上游 DNS 服务器在其他位置配置,可通过以下方式查看:
resolvectl status
8.3 何时需要直接配置 systemd‑resolved
大多数情况下,您无需手动编辑 systemd‑resolved 配置。
桌面用户应使用 GUI 设置,服务器用户应使用 Netplan。
但在特殊情况下,您可能需要考虑,例如:
- 您希望无论 DHCP 如何,都拥有系统范围的后备 DNS
- 您想为多个接口配置 DNS 行为
- 您正在排查复杂的 VPN split‑DNS 问题
在下一节中,我们将展示如何以安全的方式使用 systemd‑resolved 设置后备 DNS。
9. 可选:使用 systemd‑resolved 设置后备 DNS(高级)
本节为希望对 Ubuntu DNS 行为进行更深层控制的用户提供可选方案。
在多数情况下,您应通过以下方式配置 DNS:
- Ubuntu 桌面:GUI(网络设置)
- Ubuntu 服务器:Netplan YAML
然而,在某些情况下,您可能希望定义 后备 DNS,以便在主 DNS 不可用时仍能解析域名。
9.1 什么是 “后备 DNS”?
后备 DNS 是 Ubuntu 在当前 DNS 配置失效时可以使用的备用 DNS 服务器。
例如,如果您网络提供的 DNS 服务器(路由器或企业 DNS)变得不稳定,备用 DNS 可以防止出现完全的名称解析失败。
9.2 检查当前 systemd-resolved 设置
首先,检查 systemd-resolved 是否已激活:
systemctl status systemd-resolved
如果它正在运行,您可以继续。
9.3 编辑 /etc/systemd/resolved.conf
主配置文件位于:
/etc/systemd/resolved.conf
使用 nano 打开它:
sudo nano /etc/systemd/resolved.conf
在文件内部,您可能会看到类似下面的注释行:
#DNS=
#FallbackDNS=
要设置备用 DNS,添加或修改如下行:
[Resolve]
FallbackDNS=1.1.1.1 1.0.0.1
DNS=
注意:
FallbackDNS可以包含多个服务器,之间用空格分隔。- 如果您只想使用备用行为,可以将
DNS=留空。 - 如果您设置了
DNS=,在某些配置中可能会覆盖每个接口的 DNS,请谨慎操作。
9.4 重启 systemd-resolved
编辑完文件后,重启服务:
sudo systemctl restart systemd-resolved
9.5 确认已识别备用 DNS
检查当前解析器状态:
resolvectl status
如果配置正确,您应该在输出中看到列出的备用 DNS。
10. 常见问题解答 (FAQ)
10.1 在 Ubuntu 上使用 Google DNS 或 Cloudflare DNS 安全么?
是的,通常是安全的,许多用户出于速度和稳定性会使用它们。
不过,DNS 关系到您的网络隐私和路由行为,最佳选择取决于您的偏好和使用环境。
10.2 为什么我的 DNS 设置在重启后会恢复?
这通常是因为 DNS 被临时更改(例如直接编辑 /etc/resolv.conf),而没有使用正确的持久化方法。
持久化 DNS 配置方式:
- Ubuntu Desktop:在 GUI 设置中配置 DNS
- Ubuntu Server:在 Netplan YAML 中配置 DNS
10.3 为什么 /etc/resolv.conf 显示 127.0.0.53?
在现代 Ubuntu 中这是正常现象,表示系统通过 systemd-resolved 使用本地存根解析器。
要查看实际的上游 DNS 服务器,请使用:
resolvectl status
10.4 我的 DNS 在浏览器中正常,但 apt update 失败。为什么?
这可能是代理设置、防火墙规则或针对特定域的临时 DNS 解析问题导致的。
尝试测试 Ubuntu 软件源的 DNS 解析:
nslookup archive.ubuntu.com
如果仓库域名的名称解析失败,调整 DNS 服务器可能会有所帮助。
10.5 如果 DNS 感觉不稳定,是否应该禁用 IPv6?
不一定。IPv6 已被广泛使用,通常可以正常工作。
但如果您的网络只部分支持 IPv6,可能会导致延迟。更安全的做法是先正确设置 IPv4 DNS 并验证性能。
11. 总结
Ubuntu 的 DNS 设置可能让人感到困惑,因为涉及多个系统,如 Netplan、NetworkManager 和 systemd-resolved。
但只要弄清正确的工作流程,故障排除就会变得轻松许多。
11.1 快速检查清单
- 使用
resolvectl status检查 DNS - 桌面用户:通过 GUI 网络设置更改 DNS
- 服务器用户:通过 Netplan YAML 设置 DNS 并应用更改
- 不要直接编辑
/etc/resolv.conf - 如更改未生效,刷新缓存并重启相关服务
遵循这些步骤,您就能快速解决大多数 “Ubuntu 无法打开网站” 或 “DNS 不工作” 的问题。
DNS 问题虽令人沮丧,但好在它们通常可以通过一致的排查流程得到解决。


