Ubuntu DNS 配置详解:从基础到实践
在 Linux 系统管理中,DNS(域名系统)配置是网络管理的重要环节,Ubuntu 作为广泛使用的操作系统,提供了多种 DNS 配置方式,以满足不同场景的需求,本文将详细介绍 Ubuntu 系统中的 DNS 配置方法,包括静态配置、动态更新、安全设置以及故障排查等内容,帮助读者全面掌握 Ubuntu DNS 的管理技巧。

DNS 基础概念与 Ubuntu 中的重要性
DNS 是互联网的核心服务之一,负责将人类可读的域名(如 www.example.com)转换为机器可识别的 IP 地址,在 Ubuntu 系统中,正确的 DNS 配置直接影响网络连接的稳定性和访问速度,无论是家庭用户、企业服务器还是云环境,DNS 配置都是网络管理的基础环节,Ubuntu 默认使用 systemd-resolved 服务管理 DNS,同时支持手动编辑 /etc/resolv.conf 或使用 NetworkManager 进行动态配置。
查看 Ubuntu 当前 DNS 配置
在修改 DNS 之前,首先需要了解当前的配置状态,Ubuntu 提供了多种命令来查看 DNS 设置,最简单的方法是使用 cat 命令查看 /etc/resolv.conf 文件:
cat /etc/resolv.conf
该文件通常会显示当前使用的 DNS 服务器地址,nameserver 8.8.8.8(Google DNS)或 nameserver 192.168.1.1(路由器默认 DNS)。systemd-resolved 的状态可以通过以下命令查看:
resolvectl status
该命令会显示更详细的 DNS 配置信息,包括当前使用的 DNS 服务器、DNSSEC 状态等。
静态 DNS 配置方法
对于需要固定 DNS 服务器的场景,静态配置是最直接的方法,在 Ubuntu 中,静态 DNS 配置可以通过修改 /etc/resolv.conf 或使用 NetworkManager 实现。
1 通过 /etc/resolv.conf 配置
直接编辑 /etc/resolv.conf 文件是最简单的方式,但需要注意该文件可能被 NetworkManager 或 systemd-resolved 覆盖,为了避免冲突,建议在编辑前备份原文件:
sudo cp /etc/resolv.conf /etc/resolv.conf.bak
然后使用文本编辑器(如 nano 或 vim)修改文件:
sudo nano /etc/resolv.conf
添加或修改以下内容:
nameserver 8.8.8.8 nameserver 8.8.4.4
保存后,DNS 配置会立即生效,但重启网络服务后可能被重置。
2 通过 NetworkManager 配置
如果使用 NetworkManager 管理网络连接(如桌面版 Ubuntu),建议通过图形界面或命令行工具配置 DNS,以命令行工具 nmcli 为例:

sudo nmcli connection modify "连接名称" ipv4.dns "8.8.8.8 8.8.4.4" sudo nmcli connection up "连接名称"
这种方法会自动修改 /etc/resolv.conf 并保持配置持久化。
动态 DNS 配置
对于需要动态更新 DNS 的场景(如 DHCP 客户端或云环境),Ubuntu 提供了灵活的配置选项。systemd-resolved 服务是 Ubuntu 18.04 及以后版本默认的 DNS 解析器,支持多种动态配置方式。
1 启用 systemd-resolved
默认情况下,systemd-resolved 服务已启用,可以通过以下命令检查状态:
systemctl status systemd-resolved
如果未启用,使用以下命令启动并设置开机自启:
sudo systemctl enable --now systemd-resolved
2 配置 DNS 转发
如果需要将 DNS 查询转发到特定服务器,可以编辑 resolved.conf 文件:
sudo nano /etc/systemd/resolved.conf
取消注释并修改以下行:
DNS=8.8.8.8 8.8.4.4 DNSStubListener=yes
保存后重启服务:
sudo systemctl restart systemd-resolved
DNS 安全与性能优化
DNS 安全是网络管理的重要议题,Ubuntu 提供了多种工具和选项来增强 DNS 的安全性和性能。
1 启用 DNSSEC
DNSSEC(DNS 安全扩展)可以防止 DNS 欺骗和缓存投毒攻击,在 systemd-resolved 中启用 DNSSEC:
sudo nano /etc/systemd/resolved.conf
取消注释并设置:

DNSSEC=yes
重启服务后,DNSSEC 将自动验证 DNS 响应的完整性。
2 使用公共 DNS 服务
公共 DNS 服务(如 Google DNS、Cloudflare DNS)通常提供更快的解析速度和更好的安全性,在 Ubuntu 中配置公共 DNS 的方法已在前面章节介绍。
DNS 故障排查
配置 DNS 后,可能会遇到无法解析域名或解析速度慢的问题,以下是一些常见的排查方法:
1 测试 DNS 解析
使用 nslookup 或 dig 命令测试 DNS 解析是否正常:
nslookup example.com
或
dig example.com
如果无法解析,检查 DNS 服务器配置或网络连接。
2 清除 DNS 缓存
DNS 缓存可能导致解析错误,清除 systemd-resolved 的缓存:
sudo systemd-resolve --flush-caches
相关问答 FAQs
Q1: Ubuntu 中如何永久修改 DNS 配置?
A1: 要永久修改 DNS 配置,建议使用 nmcli 命令行工具或 NetworkManager 的图形界面,使用 nmcli 命令 sudo nmcli connection modify "连接名称" ipv4.dns "8.8.8.8" 可以将 DNS 服务器设置为 Google DNS 并持久化保存。
Q2: 为什么 Ubuntu 的 /etc/resolv.conf 文件会被自动覆盖?
A2: 在 Ubuntu 中,/etc/resolv.conf 文件可能被 NetworkManager 或 systemd-resolved 服务自动管理,这些服务会根据网络动态更新 DNS 配置,为了避免手动配置被覆盖,建议通过 NetworkManager 或 systemd-resolved 进行配置,而不是直接编辑 /etc/resolv.conf。