在Linux系统中,DNS(域名系统)配置是网络管理的基础环节之一,Ubuntu作为广泛使用的操作系统,提供了灵活且强大的DNS配置方式,无论是家庭网络还是企业环境,正确配置DNS都能显著提升网络访问速度和稳定性,本文将详细介绍Ubuntu系统中DNS配置的多种方法、常见问题及优化技巧。

了解DNS在Ubuntu中的作用
DNS的主要功能是将人类可读的域名(如www.example.com)转换为机器可识别的IP地址,在Ubuntu系统中,DNS配置决定了系统如何解析域名,默认情况下,Ubuntu会从网络管理器(如NetworkManager或systemd-resolved)获取DNS服务器地址,用户也可以手动指定DNS服务器以提高解析效率或增强安全性,常见的公共DNS服务包括Google DNS(8.8.8.8)、Cloudflare DNS(1.1.1.1)等,它们通常比ISP提供的DNS更快且更可靠。
通过Netplan配置DNS(Ubuntu 18.04及更高版本)
Ubuntu 18.04及后续版本推荐使用Netplan进行网络配置,Netplan通过YAML格式的配置文件管理网络设置,包括DNS,找到网络配置文件,通常位于/etc/netplan/目录下,文件名可能为01-network-manager-all.yaml或类似名称,编辑该文件,添加nameservers部分,
network:
version: 2
ethernets:
enp0s3:
dhcp4: no
addresses: [192.168.1.100/24]
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 1.1.1.1]
配置完成后,运行sudo netplan apply使更改生效,这种方法适用于静态IP配置,且会覆盖网络管理器的DNS设置。
通过NetworkManager图形界面配置DNS
对于使用桌面版的Ubuntu用户,可以通过图形界面快速配置DNS,点击右上角的网络图标,选择“有线连接”或“Wi-Fi”,点击“编辑”,在“IPv4”或“IPv6”选项卡中,选择“手动”配置IP地址,并在DNS服务器字段中输入所需的DNS地址(如8.8.8.8),保存后,网络连接会自动重启以应用新配置,这种方法适合不熟悉命令行的用户,操作简单直观。
修改/etc/resolv.conf文件
传统上,/etc/resolv.conf是Linux系统中存储DNS配置的核心文件,在Ubuntu中,该文件通常由systemd-resolved或NetworkManager自动管理,直接编辑可能被覆盖,如果需要手动修改,可以先将文件设为只读:

sudo chattr +i /etc/resolv.conf
然后使用文本编辑器(如nano)添加内容,
nameserver 8.8.8.8
nameserver 1.1.1.1
这种方法适用于临时测试或特定场景,但不推荐长期使用,因为手动管理可能导致配置冲突。
优化DNS解析性能
为了提升DNS解析速度,可以采取以下措施:
- 使用本地DNS缓存:Ubuntu默认启用systemd-resolved服务,它会缓存DNS查询结果,确保该服务正在运行(
systemctl status systemd-resolved),并检查/etc/resolv.conf是否指向0.0.53。 - 启用DNS over HTTPS(DoH):通过加密DNS查询内容,提升安全性和隐私,可以使用
dnscrypt-proxy工具实现。 - 定期刷新DNS缓存:如果DNS更改后未立即生效,可以运行
sudo systemd-resolve --flush-caches清除缓存。
常见问题排查
配置DNS时,可能会遇到无法解析域名或解析速度慢的问题,使用nslookup或dig命令测试DNS解析是否正常:
nslookup example.com
如果解析失败,检查/etc/resolv.conf中的DNS地址是否正确,或尝试更换其他DNS服务器,确保防火墙(如ufw)没有阻止DNS流量(默认端口53)。

相关问答FAQs
Q1:如何检查Ubuntu当前使用的DNS服务器?
A1:可以通过以下命令查看当前DNS配置:
cat /etc/resolv.conf
或使用:
resolvectl status
后者会显示更详细的DNS信息,包括接口和DNS服务器地址。
Q2:为什么Ubuntu的DNS配置会频繁重置?
A2:这通常是因为/etc/resolv.conf文件被网络管理工具(如NetworkManager或systemd-resolved)自动覆盖,建议通过Netplan或NetworkManager的配置文件永久设置DNS,而不是直接编辑/etc/resolv.conf,如果需要手动管理,可以取消文件的只读属性(sudo chattr -i /etc/resolv.conf),但需注意可能导致配置不一致。
来源互联网整合,作者:小编,如若转载,请注明出处:https://www.aiboce.com/ask/311749.html