/etc/resolv.conf
文件添加nameserver条目,或通过Netplan管理网络配置实现直接编辑 /etc/resolv.conf
文件
这是最基础且常用的手动配置方式,适合临时或简单需求场景。
操作步骤:
- 打开终端,使用管理员权限编辑文件:
sudo nano /etc/resolv.conf
- 添加/修改
nameserver
行,指定目标DNS服务器IP(例如Google公共DNS):nameserver 8.8.8.8 # Google Public DNS nameserver 8.8.4.4 # 备用节点
⚠️ 注意:若网络由NetworkManager管理(如桌面版),此文件可能被自动覆盖,此时需通过图形界面固定设置。
- 保存并退出(按
Ctrl+O
→ 回车确认 →Ctrl+X
)。 - 验证生效性:执行命令查看当前使用的DNS列表:
cat /etc/resolv.conf
潜在问题与限制:
- Systemdresolved服务会定期重置该文件内容,导致手动更改失效,可通过停止该服务解决:
sudo systemctl stop systemdresolved && sudo systemctl disable systemdresolved
- 此方法不持久化于重启后,建议结合下文其他方案使用。
通过Netplan实现持久化配置(推荐用于服务器环境)
Netplan是Ubuntu官方推荐的网络配置工具,尤其适用于云服务器和自动化部署场景。
配置文件路径: /etc/netplan/*.yaml
(通常为 01netcfg.yaml
)
示例模板:
network: version: 2 renderer: networkd # 使用传统network管理器而非NetworkManager ethernets: ens33: # 根据实际网卡名称调整(ifconfig a查看) dhcp4: no # 关闭DHCP自动获取IP addresses: [192.168.1.100/24] # 静态IP设置(可选) gateway4: 192.168.1.1 # 默认网关 nameservers: addresses: [192.168.1.10, 223.5.5.5] # 主辅DNS服务器
应用更改:
sudo netplan apply # 立即生效新配置 ip addr list # 检查IP是否分配正确
📌优势:完全脱离图形依赖,重启后仍保持设置;支持多网卡绑定与复杂拓扑结构。
图形界面工具 NetworkManager(桌面用户适用)
对于非服务器版本的Ubuntu(如Desktop版),可通过GUI快速完成配置:
- 打开系统设置 → “网络”选项卡 → 选择已连接的网络接口 → 点击齿轮图标进入详情页。
- 切换至IPv4标签页 → 将方法改为“手动”,然后在“DNS服务器”栏中输入所需地址(如
114.114.114
)。 - 保存设置后会自动写入到
/run/systemd/resolve/resolv.conf
,无需手动干预文件。
高级场景扩展——搭建本地BIND DNS服务
若需自定义域名解析规则(如内网服务发现),可部署权威DNS服务器:
- 安装BIND软件包:
sudo apt install bind9
- 编辑主配置文件
/etc/bind/named.conf.local
,定义正向解析区域:zone "internal.lan" { type master; file "/etc/bind/db.internal.lan"; # 数据存储路径 };
- 创建数据库文件
/etc/bind/db.internal.lan
,写入具体记录:; BIND data for internal.lan $TTL 604800 @ IN SOA ns1.internal.lan. root.internal.lan. (2025090101 ; Serial) IN NS ns1.internal.lan. ns1 IN A 192.168.1.100 # DNS服务器自身IP web IN A 192.168.1.200 # Web应用主机名映射
- 重启服务使配置生效:
sudo systemctl restart bind9
✅ 此方案适用于企业级私有云环境,支持动态更新、负载均衡等高级功能。
常见问题排查手册
现象 | 可能原因 | 解决方案 |
---|---|---|
DNS修改后未生效 | Systemdresolved干扰 | 禁用服务:sudo systemctl stop systemdresolved |
部分域名无法解析 | 缓存污染或过时条目 | 清除缓存:sudo systemdresolve flushcaches |
Netplan应用失败 | YAML语法错误 | 使用在线校验工具检查缩进与键值对格式 |
BIND启动报错 | 端口被防火墙阻止 | 开放UDP/TCP端口53:sudo ufw allow 53 |
相关问题与解答
Q1: 为什么手动修改 /etc/resolv.conf
后总是被还原?
A: Ubuntu默认启用了 systemdresolved
服务来动态管理DNS解析流程,该服务会定期覆盖用户对 /etc/resolv.conf
的直接编辑,有两种解决方法:①彻底禁用该服务(见第一节);②通过Netplan或NetworkManager进行标准化配置,确保变更持久化。
Q2: Netplan配置中的 renderer: networkd
有什么作用?
A: 它指定使用传统的 network
daemon而非默认的NetworkManager守护进程,这一设置能避免图形界面工具对配置文件的潜在覆盖,特别适用于无头服务器环境,若省略此项,可能出现配置冲突导致网络不稳定。
通过以上方法,您可以灵活应对不同场景下的DNS配置需求,对于生产环境,推荐优先使用Netplan实现声明式配置管理;而桌面