修改 /etc/resolv.conf 文件,更新 DNS
Ubuntu系统修改DNS不重启的详细指南
在Ubuntu系统中修改DNS配置时,通常可以通过多种方式实现无需重启系统即可生效,本文将详细介绍不同场景下的DNS修改方法,包括命令行操作、图形界面配置以及配置文件修改技巧,并提供常见问题的解决方案。
基础概念与原理
方法类型 | 作用范围 | 是否需要重启 | 配置持久化 |
---|---|---|---|
直接修改resolv.conf |
当前会话 | 否 | 否(可能被覆盖) |
NetworkManager配置 | 所有NM管理的连接 | 否 | 是 |
Netplan配置 | 系统级网络配置 | 否 | 是 |
systemdresolved服务 | 全局解析服务 | 需重载服务 | 是 |
注意:不同Ubuntu版本可能使用不同的网络管理工具:
- 桌面版:通常使用
NetworkManager
- 服务器版:通常使用
Netplan
- 容器环境:可能使用
systemdresolved
快速修改DNS的四种方法
直接修改/etc/resolv.conf
文件
sudo nano /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4
特点:
- 立即生效(无需重启)
- 仅影响当前会话
- 可能被其他进程覆盖(如NetworkManager)
适用场景:临时测试或快速验证DNS配置
通过NetworkManager修改(适用于桌面版)
命令行方式
# 查看当前连接 nmcli connection show # 修改指定连接的DNS(例如ID为"Wired connection 1") nmcli connection modify "Wired connection 1" ipv4.dns "8.8.8.8 8.8.4.4" # 应用到当前激活的连接 nmcli connection up "Wired connection 1"
图形界面方式
- 打开
设置 > 网络
- 选择对应网络连接 > 点击齿轮图标进入配置
- 在
IPv4设置
中调整DNS服务器 - 应用更改(无需重启)
特点:
- 自动持久化配置
- 支持多个DNS服务器
- 需要网络连接处于激活状态
通过Netplan修改(适用于服务器版)
修改配置文件
sudo nano /etc/netplan/01netcfg.yaml
添加或修改DNS配置:
network: version: 2 renderer: networkd ethernets: ens33: dhcp4: no addresses: [192.168.1.100/24] gateway4: 192.168.1.1 nameservers: addresses: [8.8.8.8, 8.8.4.4]
应用配置
sudo netplan apply
特点:
- 立即生效且持久化
- 支持YAML格式配置
- 需要正确语法(可通过
netplan try
测试)
使用systemdresolved服务
修改配置文件
sudo nano /etc/systemd/resolved.conf
[Resolve] DNS=8.8.8.8 8.8.4.4
重载服务
sudo systemctl restart systemdresolved
特点:
- 影响全局DNS解析
- 支持加密DNS协议(如DNSoverTLS)
- 需要重启服务而非整个系统
验证DNS配置是否生效
查看当前DNS解析配置
# 查看systemdresolved状态 systemdresolve status # 查看NetworkManager配置 nmcli connection show "YourConnectionName" # 直接查看resolv.conf内容 cat /etc/resolv.conf
测试DNS解析
# 测试Google公共DNS nslookup www.google.com 8.8.8.8 # 测试本机DNS配置 dig www.baidu.com
特殊场景解决方案
WSL/LXD/容器环境
在Windows Subsystem for Linux或容器中,需要修改:
sudo nano /etc/resolv.conf
注意:某些容器环境会自动重置此文件,建议通过宿主机配置全局DNS。
WiFi网络环境
对于无线网络,需特别注意:
- 修改
/etc/NetworkManager/systemconnections/YourWiFi.nmconnection
文件 - 在
[ipv4]
部分添加dns=8.8.8.8,8.8.4.4
- 断开/重连WiFi或执行
nmcli connection up "YourWiFi"
常见问题与故障排除
问题现象 | 可能原因 | 解决方案 |
---|---|---|
修改后DNS未生效 | 缓存未刷新/服务未重载 | sudo systemdresolve flushcaches |
resolv.conf被自动覆盖 | NetworkManager/systemdresolved冲突 | 禁用其中一个服务(不推荐) |
仅部分应用受影响 | 应用使用独立DNS解析库 | 检查应用配置或使用全局DNS设置 |
无法保存配置文件 | 权限不足或语法错误 | 使用sudo 编辑,验证YAML/INI语法 |
相关问题与解答
Q1:如何设置永久性DNS配置?
A:根据系统网络管理工具选择:
- 桌面版:通过
nmcli
或图形界面修改NetworkManager配置 - 服务器版:使用
netplan apply
应用YAML配置 - 所有系统:编辑
/etc/systemd/resolved.conf
并重启systemdresolved
服务
Q2:修改DNS后出现网络中断怎么办?
A:执行以下排查步骤:
- 恢复原始DNS配置:
nmcli connection edit "YourConnection" set ipv4.dns "原DNS"
- 检查配置文件语法:
netplan try
测试Netplan配置 - 清除DNS缓存:
sudo systemdresolve flushcaches
- 重启网络服务:
sudo systemctl restart NetworkManager