在 Linux 中更改 DNS 主要有临时修改和永久修改两种方式,具体方法取决于你的发行版和网络管理工具(如 NetworkManager、systemd-resolved 或手动配置),以下是最常见的几种场景:

1. 临时修改(仅当前会话生效,重启后丢失)
直接编辑/etc/resolv.conf 文件:
sudo vim /etc/resolv.conf
替换为(例如使用 Google DNS 和 114DNS):
nameserver 8.8.8.8 nameserver 114.114.114.114
保存后立即生效。
>注意:许多现代系统(如 Ubuntu 18.04+、使用 NetworkManager 的系统)会自动覆盖此文件,临时修改可能很快被还原。

2. 使用 NetworkManager(常见桌面版、Ubuntu、Fedora、CentOS 8+)
查看当前连接名称:
nmcli connection show
修改指定连接的 DNS(例如连接名为Wired connection 1):
sudo nmcli con mod "Wired connection 1" ipv4.dns "8.8.8.8 114.114.114.114" sudo nmcli con mod "Wired connection 1" ipv4.ignore-auto-dns yes sudo nmcli con down "Wired connection 1" && sudo nmcli con up "Wired connection 1"
- 打开“设置” → “网络” → 点击当前连接旁的齿轮图标
- 切换到“IPv4”选项卡,将“DNS”改为“自动(仅地址)”或手动输入 DNS 服务器地址

3. 使用 systemd-resolved(Ubuntu 18.04+、Debian 11+、Fedora)
修改配置文件/etc/systemd/resolved.conf:
sudo vim /etc/systemd/resolved.conf
去掉DNS= 前面的注释,并写入:
[Resolve] DNS=8.8.8.8 114.114.114.114 FallbackDNS=1.1.1.1 9.9.9.9
重启服务:
sudo systemctl restart systemd-resolved
或者使用resolvectl 临时更改(重启后失效):
sudo resolvectl dns eth0 8.8.8.8 # eth0 替换为实际网卡
Debian / Ubuntu(使用 /etc/network/interfaces)
编辑配置文件:
sudo vim /etc/network/interfaces
在对应的网卡(如eth0)下添加:
auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 8.8.8.8 114.114.114.114重启网络:
sudo systemctl restart networking # 或 sudo ifdown eth0 && sudo ifup eth0
RHEL / CentOS 7/8(使用 /etc/sysconfig/network-scripts/ifcfg-*)
编辑对应网卡文件(如ifcfg-eth0):
sudo vim /etc/sysconfig/network-scripts/ifcfg-eth0
添加或修改:
DNS1=8.8.8.8 DNS2=114.114.114.114
重启网络:
sudo systemctl restart network # CentOS 7 或 sudo nmcli connection reload # CentOS 8+使用NetworkManager
Ubuntu 17.10+ 使用 netplan
编辑/etc/netplan/*.yaml 文件(例如01-netcfg.yaml):
network:
version: 2
ethernets:
eth0:
addresses:
- 192.168.1.100/24
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 114.114.114.114]应用配置:
sudo netplan apply
方法1:查看当前 DNS 设置 resolvectl status 方法2:测试域名解析 nslookup google.com 或 dig google.com +short
明明改了 /etc/resolv.conf,重启后又变回原样
这是因为 NetworkManager 或 systemd-resolved 接管了 DNS 管理,请使用对应的工具(如nmcli 或systemd-resolved)进行永久修改。
多网卡/多连接时需注意
每个连接独立维护 DNS 设置,请确保修改的是当前正在使用的连接。
选择最适合你系统的办法即可,通常桌面版推荐使用NetworkManager,服务器推荐使用systemd-resolved 或静态配置文件。
文章摘自:https://idc.huochengrm.cn/dns/27680.html
评论