检查
/etc/NetworkManager/NetworkManager.conf 中 [main] 段是否含 dns=none,若无则添加后重启 NetworkManager,再手动配置 `/etcUbuntu系统DNS配置重启后丢失的详细解决方案
问题现象描述
在Ubuntu系统中手动配置DNS服务器后,重启网络或系统时发现/etc/resolv.conf文件中的DNS配置被重置,导致无法正常解析域名,这是由于系统网络管理工具(如Netplan、NetworkManager)自动覆盖了手动修改的配置。
问题根源分析
| 可能原因 | 详细说明 |
|---|---|
| 网络管理工具自动覆盖配置 | Ubuntu使用Netplan/NetworkManager管理网络,重启时会重写/etc/resolv.conf |
| 未通过正确方式配置DNS | 直接修改/etc/resolv.conf属于临时配置,未被网络管理工具识别 |
系统使用systemdresolved服务 |
该服务会强制管理DNS解析,覆盖手动配置 |
| 配置文件语法错误 | YAML/JSON格式错误导致配置未生效,回退到默认设置 |
解决方案步骤
确认系统网络管理工具
Ubuntu不同版本使用不同的网络管理工具:

- Ubuntu 20.04+:默认使用 Netplan(配置路径
/etc/netplan/) - Ubuntu 18.04及之前:默认使用 NetworkManager(配置路径
/etc/NetworkManager/systemconnections/)
检查当前网络管理工具
# 检查Netplan是否启用 ls /etc/netplan/ # 检查NetworkManager是否运行 systemctl status NetworkManager
通过Netplan配置DNS(Ubuntu 20.04+)
步骤1:编辑Netplan配置文件
sudo nano /etc/netplan/01netcfg.yaml
步骤2:添加DNS配置
# 示例配置(以ens33网卡为例)
network:
version: 2
renderer: networkd
ethernets:
ens33:
dhcp4: yes
# 静态DNS配置(覆盖DHCP分配的DNS)
dns4:
8.8.8.8
8.8.4.4
# 静态IP配置(如需)
addresses: [192.168.1.100/24]
gateway4: 192.168.1.1
步骤3:应用配置
sudo netplan apply
通过NetworkManager配置DNS(Ubuntu 18.04及之前)
步骤1:编辑连接配置文件
sudo nano /etc/NetworkManager/systemconnections/<连接名称>.nmconnection
步骤2:添加DNS服务器
<connection>
...
<ipv4>
<method>auto</method>
<dns>
<dnssearch>[域后缀]</dnssearch>
<dnsservers>
<address>8.8.8.8</address>
<address>8.8.4.4</address>
</dnsservers>
</dns>
</ipv4>
...
</connection>
步骤3:重启NetworkManager
sudo systemctl restart NetworkManager
禁用systemdresolved服务(可选)
如果系统使用systemdresolved服务,需禁用它以避免冲突:
# 停止并禁用服务 sudo systemctl stop systemdresolved sudo systemctl disable systemdresolved # 删除其生成的resolv.conf符号链接 sudo unlink /etc/resolv.conf
验证配置是否生效
方法1:检查/etc/resolv.conf
cat /etc/resolv.conf
# 应显示配置的DNS服务器(如8.8.8.8)
方法2:测试DNS解析
# 测试域名解析
nslookup www.google.com
# 查看当前DNS服务状态
systemdresolve status
常见问题与解答
问题1:为什么/etc/resolv.conf修改后立即生效,但重启后失效?
解答:
/etc/resolv.conf文件由网络管理工具(如Netplan、NetworkManager)或systemdresolved服务自动生成,直接修改该文件属于临时操作,重启后会被系统重新生成,必须通过修改对应网络管理工具的配置文件来永久生效。

问题2:如何恢复默认DNS配置?
解答:
- 通过Netplan恢复:删除
dns4字段后执行sudo netplan apply。
- 通过NetworkManager恢复:删除
<dnsservers>节点后重启服务。
- 启用
systemdresolved:执行sudo systemctl enable systemdresolved并重新创建/etc/resolv.conf的符号链接。
Ubuntu系统的DNS配置需通过对应的网络管理工具(Netplan/NetworkManager)进行持久化设置,避免直接修改/etc/resolv.conf,若需自定义DNS,请按照上述步骤修改配置文件并应用,同时注意关闭可能冲突的服务(如`

来源互联网整合,作者:小编,如若转载,请注明出处:https://www.aiboce.com/ask/203623.html
cat /etc/resolv.conf # 应显示配置的DNS服务器(如8.8.8.8)
方法2:测试DNS解析
# 测试域名解析 nslookup www.google.com # 查看当前DNS服务状态 systemdresolve status
常见问题与解答
问题1:为什么/etc/resolv.conf修改后立即生效,但重启后失效?
解答:/etc/resolv.conf文件由网络管理工具(如Netplan、NetworkManager)或systemdresolved服务自动生成,直接修改该文件属于临时操作,重启后会被系统重新生成,必须通过修改对应网络管理工具的配置文件来永久生效。

问题2:如何恢复默认DNS配置?
解答:
- 通过Netplan恢复:删除
dns4字段后执行sudo netplan apply。 - 通过NetworkManager恢复:删除
<dnsservers>节点后重启服务。 - 启用
systemdresolved:执行sudo systemctl enable systemdresolved并重新创建/etc/resolv.conf的符号链接。
Ubuntu系统的DNS配置需通过对应的网络管理工具(Netplan/NetworkManager)进行持久化设置,避免直接修改/etc/resolv.conf,若需自定义DNS,请按照上述步骤修改配置文件并应用,同时注意关闭可能冲突的服务(如`

来源互联网整合,作者:小编,如若转载,请注明出处:https://www.aiboce.com/ask/203623.html