1. 引言:为什么 Ubuntu 上的 DNS 配置很重要
DNS(域名系统)是将域名转换为 IP 地址的机制。
每次我们打开网站时,操作系统都会在后台悄无声息地执行 DNS 查询。
在使用 Ubuntu 时,您可能会遇到以下情况:
- 页面加载感觉“不知怎的很慢”
- 同一网络比其他设备感觉慢
- 偶尔无法访问局域网(LAN)上的内部 Web 服务
令人惊讶的是,这些问题往往不是由连接质量引起的,而是由 DNS 解析缓慢造成的。
在 Ubuntu 上,即使从 22.04 版本开始,新手的一个困惑点是配置 DNS 有多种方式。特别是,有两种主要方法:
- Netplan(常用于服务器和非 GUI 环境)
- NetworkManager(用于带有 GUI 的桌面环境)
由于程序因使用的方法而异,任何 Ubuntu DNS 配置指南都必须首先识别环境,然后指导您使用合适的方法。
DNS 不仅仅是一个次要设置——它是 Ubuntu 整个网络栈的“入口点”。
例如,简单切换到 Google Public DNS(8.8.8.8)或 Cloudflare(1.1.1.1)就可以明显改善浏览器响应速度。
这种效果在 VPS、云和海外网络环境中尤为明显。
在本文中,我们将明确分开并解释:
- 如何使用 GUI 配置 DNS
- 如何使用 Netplan 配置 DNS
- 如何在事后验证您的设置
在下一节中,我们首先确定您使用的是哪种类型的环境。
2. Ubuntu 上配置 DNS 的两种主要方式
在 Ubuntu 上,即使目标是“DNS 配置”,实际方法也会因使用的网络管理系统而异。
如果您在不了解这种区别的情况下继续操作,可能会遇到设置不生效或重启后恢复原状等问题。
首先,让我们澄清 Ubuntu 上有两种不同的 DNS 配置路径。
Netplan(基于 YAML 的配置)
- 主要用于服务器环境
- 从 18.04 开始在 Ubuntu LTS 版本中标准化
- 配置文件位于
/etc/netplan/*.yaml - 与 systemd-resolved 配合工作
在没有 GUI 的 VPS 实例或物理服务器上,几乎总是假设使用 Netplan。
这在 AWS、Vultr、ConoHa、Oracle Cloud 等类似平台上很常见。
NetworkManager(基于 GUI)
- 主要用于桌面 PC(Ubuntu Desktop)
- 可以通过 IPv4 / IPv6 设置屏幕指定 DNS
- 由于视觉界面而易于理解
如果您使用的是启用 GUI 的环境,这很可能就是设置。
典型情况包括“我每天使用 Ubuntu,只是因为浏览感觉慢而想更改 DNS”。
确定您使用的是哪种环境
最简单的方法是检查 /etc/netplan/ 中是否存在文件。
ls /etc/netplan/
如果您找到了 YAML 文件,则很可能在使用 Netplan。
如果目录为空或您使用的是基于 GUI 的系统,则检查 NetworkManager 设置会更顺畅。
3. 使用 Netplan 配置 DNS(服务器环境)
Netplan 使用 YAML 文件来定义网络配置。
在没有 GUI 的 Ubuntu Server 和 VPS 环境中,这种方法几乎是肯定的。
在这里,我们关注修复 DNS 值的最常见情况,使用最小且实用的示例。
打开 Netplan 配置文件
Netplan 配置文件位于 /etc/netplan/。
文件名因环境而异(例如,00-installer-config.yaml)。
首先,确认文件名:
ls /etc/netplan/
一旦识别出来,就在编辑器中打开该文件。例如:
sudo nano /etc/netplan/00-installer-config.yaml
示例:在 YAML 中添加 DNS 条目
此示例同时设置 Google DNS 和 Cloudflare DNS。
network:
version: 2
ethernets:
ens33:
dhcp4: true
nameservers:
addresses: [8.8.8.8, 1.1.1.1]
接口名称 ens33 会因系统而异。
可使用 ip a 或 ip link 检查它。
应用配置
编辑后,立即应用配置:
sudo netplan apply
如果出现错误,YAML 文件中的缩进问题是最常见的原因。
请仔细检查空格。Tab 不被允许。
DHCP 与固定 DNS 能否一起使用?
这是一个常见问题。答案是肯定的:可以通过 DHCP 获取 IP 地址,同时手动指定 DNS 服务器。
示例:
dhcp4: true
nameservers:
addresses: [9.9.9.9]
在此情况下,IP 地址是自动获取的,而 DNS 是固定的。
4. 使用 NetworkManager(Ubuntu 桌面)
如果你在 Ubuntu 桌面上使用,可以在不打开终端的情况下更改 DNS 设置。
对于 “只有浏览器慢” 或 “我只想切换到公共 DNS” 等常见情形,GUI 方法是最快的。
如何打开设置界面
- 点击右上角的网络图标
- 打开 “设置” 或 “网络设置”
- 选择当前活动的连接(有线或 Wi‑Fi)
- 进入 “IPv4” 选项卡
DNS 输入框就在这里。
具体文字可能因 Ubuntu 版本略有不同,但可以将地址以逗号分隔的形式输入。
示例 DNS 输入(IPv4)
使用 Google DNS 和 Cloudflare DNS 的示例:
8.8.8.8, 1.1.1.1
输入完毕后,点击 “应用” 或 “保存”,并重新连接网络以确保更改生效。
使用 IPv6 时
同一界面还有 “IPv6” 选项卡,提供 DNS 输入框。
在双栈连接中,可能需要同时为 IPv4 和 IPv6 指定 DNS,以保证稳定性。
将 DHCP 与固定 DNS 结合使用
即使在 GUI 中,也可以配置 “自动 IP,手动 DNS”。
这在家庭或办公室 Wi‑Fi 环境下特别有用,因为你不想每次都手动分配固定 IP。
5. 如何验证 DNS 设置已生效
仅仅输入并保存值并不代表 DNS 配置已完成。
验证是确认设置真正生效的关键步骤。
在 Ubuntu 上,你可以通过以下三种方法验证 DNS:
使用 dig 命令查询
dig google.com
在输出中查找标记为 “SERVER:” 的那一行。
它指示当前正在查询的 DNS 服务器。
示例(摘录):
;; SERVER: 8.8.8.8#53(8.8.8.8)
确认显示的是 8.8.8.8(Google)或 1.1.1.1(Cloudflare)等地址。
使用 resolvectl status
此方法通过 systemd‑resolved 提供精确信息。
resolvectl status
每个网络接口对应的 nameserver 会被列出。
在拥有多块网卡的服务器上,这种方式比 dig 更可靠。
为什么不应直接编辑 /etc/resolv.conf
cat /etc/resolv.conf
该文件显示当前使用的 DNS。
但它是 systemd‑resolved 生成的结果文件,任何手动编辑都会在下次更新时被覆盖,因此直接修改是不正确的做法。
6. 常用 DNS 提供商(适合初学者)
DNS 地址不是自己随意编造的。
大多数情况下,使用公共 DNS 服务即可。
如果你想要一个稳定且安全的起点,以下任意一个都是不错的选择:
| Provider | DNS Address |
|---|---|
| Google Public DNS | 8.8.8.8 / 8.8.4.4 |
| Cloudflare | 1.1.1.1 |
| Quad9 | 9.9.9.9 |
| OpenDNS | 208.67.222.222 / 208.67.220.220 |
指定两个 DNS 服务器而不是一个可以提升可靠性。
当其中一个不可用时,系统会自动切换到另一个。
在访问内部企业系统(如 Active Directory)时,需要使用内部 DNS 服务器。
此时,确保内部名称解析的可靠性比公共 DNS 更重要。
7. DNS 常常是隐藏的瓶颈
虽然 DNS 看起来只是另一个设置,但它对感知的网络速度有着巨大的影响。
在以下情形下,这种影响尤为明显:
- 第一次加载页面时感觉异常缓慢
- Ping 很快,但网页加载慢
- 服务器本身轻量,却在首次加载 SPA(React / Vue)时表现沉重
这些症状通常会在多次访问后得到改善,而第一次请求仍然缓慢。
这是因为 DNS 充当了最初的入口网关。
尤其在 VPS 或海外地区(如 us-east、eu-west)时,公共 DNS 往往优于 ISP 默认 DNS。
DNS 是网络拥塞导致的延迟容易显现的节点。
不仅在 Ubuntu 上,对于所有 Web 工程师而言,DNS 优化是首批“入口点”优化之一。
FAQ
Q1: 我直接编辑了 /etc/resolv.conf,但重启后会恢复,为什么?
→ 在 Ubuntu 中,systemd-resolved 会生成 /etc/resolv.conf。
它并不打算被直接编辑。
必须通过 Netplan 或 NetworkManager 来配置 DNS。
Q2: 如果我不知道系统使用的是 Netplan 还是 NetworkManager,怎么办?
→ 首先检查 /etc/netplan/。
ls /etc/netplan/
如果存在 YAML 文件,则很可能使用的是 Netplan。
在图形界面环境下,NetworkManager 是主要候选。
Q3: 我可以在使用 DHCP 获取 IP 的同时手动指定 DNS 吗?
→ 可以。
Netplan 和 NetworkManager 都支持自动获取 IP 并手动指定 DNS。
Q4: 更改 DNS 是否总能让网页更快?
→ 并非总是。
DNS 只处理最初的域名解析。
它通常能加速第一步,但慢速的图片、CDN 或 API 仍可能成为瓶颈。
Q5: 在 WSL2(Windows 上的 Ubuntu)中操作是否相同?
→ 不相同。
WSL2 会按照设计重新生成 resolv.conf。
需要额外设置,例如 generateResolvConf=false。
WSL 有其独特的 DNS 配置注意事项。


