应先判断dns控制服务:运行cat /etc/resolv.conf看是否含“generated by networkmanager”,systemctl is-active systemd-resolved查服务状态,再结合网卡配置文件确认;之后按对应服务(nm或resolved)规范配置,而非直接改resolv.conf。

直接改 /etc/resolv.conf 最快,但大概率不持久——它常被 NetworkManager 或 systemd-resolved 覆盖。真要生效,得先看系统用谁管 DNS。
怎么判断谁在控制 DNS?
打开终端,运行这三条命令,结果决定你该走哪条路:
-
cat /etc/resolv.conf—— 如果开头有# Generated by NetworkManager,说明是NetworkManager在写 -
systemctl is-active systemd-resolved—— 返回active表示systemd-resolved已启用且优先级更高 -
ls /etc/sysconfig/network-scripts/ifcfg-*(RHEL/CentOS)或cat /etc/network/interfaces(Debian/Ubuntu 传统方式)—— 存在且含DNS1=或dns-nameservers,说明走底层网卡配置
别跳过这步。硬改 /etc/resolv.conf 却没关覆盖源,5 分钟后就回滚。
NetworkManager 管着 DNS 怎么改?
这是桌面版 Ubuntu、Fedora 和多数云服务器默认方式。用 nmcli 命令最稳,图形界面容易漏掉“禁用自动获取”这步。
- 查连接名:
nmcli connection show,记下当前激活的连接名(比如Wired connection 1或System eth0) - 设 DNS 并关自动获取:
sudo nmcli connection modify "Wired connection 1" ipv4.dns "223.5.5.5 119.29.29.29",再执行sudo nmcli connection modify "Wired connection 1" ipv4.ignore-auto-dns yes - 重启连接生效:
sudo nmcli connection down "Wired connection 1" && sudo nmcli connection up "Wired connection 1"
改完立刻验证:resolvectl dns(systemd-resolved 启用时)或 nmcli device show | grep DNS。别只信 /etc/resolv.conf 里写了啥。
systemd-resolved 启用了,该怎么配?
Ubuntu 20.04+、Debian 11+、Arch 默认走这条路。/etc/resolv.conf 往往只是个软链,指向 /run/systemd/resolve/stub-resolv.conf,直接编辑它没用。
- 编辑主配置:
sudo nano /etc/systemd/resolved.conf - 取消注释并填值:
DNS=223.5.5.5 114.114.114.114;如需 fallback,加一行FallbackDNS=8.8.8.8 - 确保软链正确:
sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf - 重启服务:
sudo systemctl restart systemd-resolved
验证必须用 resolvectl status,它显示的是真实生效的 DNS 列表。注意:如果 resolvectl status 里 Current Scopes 是 none,说明接口没配好,不是 DNS 本身的问题。
临时测试 DNS 连通性,不改任何配置
调试阶段别急着动配置文件。用 dig 或 nslookup 指定服务器查,最快定位是 DNS 问题还是网络问题:
-
dig @8.8.8.8 google.com +short—— 直连 Google DNS 查域名,绕过系统设置 -
nslookup baidu.com 114.114.114.114—— 指定阿里 DNS 解析,看是否超时或无响应 - 如果这些命令能返回 IP,但
ping google.com不行,基本就是系统 DNS 配置没生效或被覆盖
真正麻烦的不是“怎么填”,而是填完谁来读、谁来写、谁来覆盖。很多故障最后发现是 systemd-resolved 和 NetworkManager 在抢 /etc/resolv.conf 的控制权,而用户只盯着文件内容看。











