在Ubuntu系统中,DNS(域名系统)配置是网络管理的重要环节,它决定了域名如何解析为IP地址,本文将详细介绍Ubuntu系统中与DNS相关的命令、配置方法及常见问题解决,帮助用户高效管理DNS设置。

查看当前DNS配置
在Ubuntu中,首先需要确认当前的DNS配置状态,常用的命令包括resolvectl和cat /etc/resolv.conf。resolvectl是systemd-resolved服务提供的工具,能显示更详细的DNS信息,执行resolvectl status会显示当前使用的DNS服务器、域名搜索列表等信息,而cat /etc/resolv.conf则直接显示解析器配置文件的内容,但需注意该文件可能由网络管理工具(如NetworkManager或systemd-networkd)动态管理,直接修改可能不会生效。
临时修改DNS配置
如果需要临时更改DNS服务器(如测试特定DNS服务),可以使用resolvectl命令,将DNS服务器设置为8.8.8.8和8.8.4.4,可执行:
sudo resolvectl dns eth0 8.8.8.8 8.8.4.4
其中eth0是网卡名称,可通过ip a命令查看,此方法仅在当前会话有效,重启系统或网络服务后配置会恢复。
永久修改DNS配置
使用Netplan(Ubuntu 18.04及以后版本默认)
Netplan是Ubuntu的网络配置工具,通过YAML文件管理网络设置,编辑/etc/netplan/01-netcfg.yaml文件:
network:
version: 2
ethernets:
eth0:
dhcp4: no
addresses: [192.168.1.100/24]
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 8.8.4.4]
search: [example.com]
保存后执行sudo netplan apply使配置生效。
使用NetworkManager(桌面版Ubuntu默认)
通过图形界面或nmcli命令行工具修改,使用nmcli:
sudo nmcli connection modify "连接名称" ipv4.dns "8.8.8.8 8.8.4.4" sudo nmcli connection up "连接名称"
手动修改/etc/resolv.conf(不推荐)
直接编辑/etc/resolv.conf并添加:
nameserver 8.8.8.8 nameserver 8.8.4.4
但需确保文件不被网络管理工具覆盖,可通过sudo chattr +i /etc/resolv.conf锁定文件。

DNS缓存管理
Ubuntu默认使用systemd-resolved服务管理DNS缓存,查看缓存信息:
resolvctl statistics
清空缓存:
sudo systemd-resolve --flush-caches
常见DNS问题排查
域名解析失败
使用nslookup或dig命令测试域名解析:
nslookup example.com dig example.com
若无法解析,检查DNS服务器配置或防火墙规则。
DNS缓存问题
若解析结果不正确,尝试清空DNS缓存并重启网络服务:
sudo systemctl restart systemd-resolved
多网卡DNS冲突
当系统有多个网卡时,可能导致DNS配置冲突,可通过resolvectl指定特定网卡的DNS服务器,或确保网络管理工具优先级设置正确。
DNS配置工具对比
以下为常用DNS配置工具的对比:
| 工具名称 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| Netplan | 服务器版Ubuntu(18.04+) | 配置灵活,支持YAML | 桌面版不默认使用 |
| NetworkManager | 桌面版Ubuntu | 图形界面友好,动态更新 | 服务器端功能较少 |
| systemd-resolved | 系统级DNS缓存管理 | 高效缓存,支持本地域名 | 配置相对复杂 |
高级DNS配置
使用自定义DNS服务器
如需使用私有DNS服务器(如BIND),可安装bind9服务并配置正向/反向解析区域,安装命令:

sudo apt install bind9
配置文件位于/etc/bind/目录下,需根据实际需求修改named.conf.local文件。
启用DNS over HTTPS(DoH)
为提高安全性,可通过dnscrypt-proxy启用DoH,安装步骤:
sudo apt install dnscrypt-proxy sudo systemctl enable --now dnscrypt-proxy
编辑/etc/dnscrypt-proxy/dnscrypt-proxy.toml,选择服务器列表后重启服务。
相关问答FAQs
Q1: 为什么修改了/etc/resolv.conf后DNS配置仍然无效?
A: 在Ubuntu 18.04及以后版本中,/etc/resolv.conf文件通常由systemd-resolved或NetworkManager动态管理,直接修改可能被覆盖,建议使用Netplan或NetworkManager工具进行永久配置,或通过sudo chattr +i锁定文件(需谨慎操作)。
Q2: 如何在Ubuntu中测试DNS解析速度?
A: 可使用dig命令结合时间戳测试解析速度,执行dig +time=1 example.com会显示查询耗时,或使用dnsperf工具进行批量测试(需先安装dnsperf)。resolvectl statistics也能提供缓存命中率等性能数据。
来源互联网整合,作者:小编,如若转载,请注明出处:https://www.aiboce.com/ask/248870.html