跳转到主内容
websoft网络软件专家 - 深耕网络技术,打造实用软件!

如何在Linux中修改DNS服务器地址 Linux配置resolv.conf的方法

是常态,不是你操作错了;因现代Linux发行版默认由systemd-resolved、NetworkManager或netplan动态管理DNS,/etc/resolv.conf常为符号链接或自动生成文件,手动修改后会被立即覆盖。 直接改
/etc/resolv.conf
会失效?这是常态,不是你操作错了 大多数现代 Linux 发行版(Ubuntu 18.04+、CentOS 8+、Fedora、Debian 11+)默认用
systemd-resolved
、
NetworkManager
或
netplan
管理 DNS,手动写死
/etc/resolv.conf
会被自动覆盖。这不是权限问题,是服务在“抢着管”。强行
chattr +i /etc/resolv.conf
会阻断网络服务启动,不推荐。 用
nmcli
改 NetworkManager 管理的 DNS(桌面/笔记本最常用) 适用于使用 NetworkManager 的系统(GNOME/KDE 默认),修改立即生效且持久。 查当前连接名:
nmcli connection show --active | awk 'NR==2 {print $1}'
(或看输出里 NAME 列) 设 DNS(覆盖式,不追加):
nmcli connection modify "Your-Connection-Name" ipv4.dns "8.8.8.8 1.1.1.1"
关 DHCP 自动获取 DNS:
nmcli connection modify "Your-Connection-Name" ipv4.ignore-auto-dns yes
重启连接:
nmcli connection down "Your-Connection-Name" && nmcli connection up "Your-Connection-Name"
验证:
resolvectl status
或
nmcli device show | grep DNS
用
resolvectl
配置 systemd-resolved(Server/CLI 环境首选)
systemd-resolved
是 systemd 生态的 DNS 管理器,
/etc/resolv.conf
通常只是它的一个符号链接(指向
/run/systemd/resolve/stub-resolv.conf
)。直接改文件无效,必须走接口。 CentOS Linux 7.9.2009 CentOS Linux 7.9.2009是传统CentOS Linux 7的最后主要版本,也是很多企业历史服务器中仍可能遇到的系统版本。它以稳定、兼容RHEL 7生态、文档丰富和软件支持广泛著称,曾长期用于Web服务、数据库、虚拟化节点和企业内部业务系统。不过CentOS Linux 7已于2024年6月30日停止维护,现在继续使用会面临安全补丁缺失风险。该版本更适合旧业务迁移、历史环境恢复或离线兼容性测试。 下载 临时设置(重启后失效):
resolvectl dns eth0 8.8.8.8 1.1.1.1
(eth0 换成你的网卡名) 永久设置:编辑
/etc/systemd/resolved.conf
,取消注释并修改
DNS=8.8.8.8 1.1.1.1
,再执行
sudo systemctl restart systemd-resolved
注意:
FallbackDNS
是兜底,
DNSSEC
开启可能让某些私有 DNS 失败,调试时可先设为
off
验证:
resolvectl status eth0
,看 “DNS Servers” 行是否更新 Netplan 用户(Ubuntu Server 17.10+)必须改 YAML 文件 Netplan 不读
/etc/resolv.conf
,也不响应
nmcli
或
resolvectl
的 DNS 设置(除非禁用
renderer: networkd
并切回 NetworkManager)。 找到配置文件:
ls /etc/netplan/*.yaml
(常见为
01-network-manager-all.yaml
或
50-cloud-init.yaml
) 在对应 interface 下加
nameservers
块,例如:
network: ethernets: eth0: dhcp4: true nameservers: addresses: [8.8.8.8, 1.1.1.1]
应用:
sudo netplan apply
(失败时用
sudo netplan --debug apply
看具体哪行错) 注意:若启用了
dhcp4-overrides: {use-dns: false}
,DNS 才真正由
nameservers
控制;否则 DHCP 返回的 DNS 仍会覆盖 真正麻烦的不是“怎么填 DNS”,而是搞清谁在管 DNS ——
cat /etc/resolv.conf
第一行写着
# This file is managed by ...
就是线索。跳过这步直接硬改,90% 的“改了没用”都源于此。

相关文章