CentOS7删除resolv.conf后仍被DHCP覆盖的根治

2025-09-16 21:08:15 142
魁首哥

近期有些网友想要了解CentOS7删除resolv.conf后仍被DHCP覆盖的根治的相关情况,小编通过整理给您分析,根据自身经验分享CentOS7删除resolv.conf后仍被DHCP覆盖的根治有关知识。

CentOS7删除resolv.conf后仍被DHCP覆盖的根治

昨晚刚把CentOS7删除resolv.conf后仍被DHCP覆盖这坑填平,顺手把全过程记下来,谁踩谁省三小时。别急着骂娘,先看完再动手,保准一次到位。

坑是怎么来的

很多人以为直接把/etc/resolv.conf删了,再手写一份就万事大吉,结果重启网卡或者抓个新IP,文件瞬间又被DHCP端下来的DNS冲成渣。CentOS7默认启用NetworkManager,它乖乖听DHCP的话,谁给IP就照单全收,包括DNS。删文件只是掩耳盗铃,源头的DHCP指令没断,resolv.conf永远会被覆盖

治标三板斧(别急着用)

网上流传的chmod +i、chattr +i、把resolv.conf设成空文件,只能算临时止血。NetworkManager一旦检测到接口状态变化,依旧能绕开权限强行写入。锁文件挡不住它,根源在DHCP客户端配置

根治第一步:让网卡别接DNS

1. 找到你正在用的网卡名,ip addr一看就明白,假设叫ens33。

2. 进目录/etc/sysconfig/network-scripts/,编辑ifcfg-ens33,尾部追加两行:

PEERDNS=no

DNS1=114.114.114.114

PEERDNS=no就是告诉DHCP:老子IP照收,DNS别塞给我。DNS1写你自己想用的地址,多写几条也行,DNS2、DNS3依次排。

根治第二步:把NM也绑住

NetworkManager自带dns插件,默认把DHCP给的DNS往resolv.conf里灌。让它闭嘴,新建文件/etc/NetworkManager/conf.d/90-dns-none.conf,内容就三行:

[main]

dns=none

保存后运行:

systemctl restart NetworkManager

这一步等于给NM戴上嚼子,它不再碰resolv.conf。

根治第三步:手写一份干净的resolv.conf

现在你可以放心写自己的/etc/resolv.conf,例如:

nameserver 223.5.5.5

nameserver 8.8.8.8

保存后加把“软锁”防手滑:

chattr +i /etc/resolv.conf

以后谁再改,先要去掉i属性,至少能挡掉脚本误操作。

多网卡环境别漏

服务器要是双网卡、多VLAN,每个ifcfg-*都得加上PEERDNS=no,别只改一个。重启网络后检查:

systemctl restart network

cat /etc/resolv.conf

只要看到的IP是你写的那几行,就宣告胜利。

云主机特别提示

阿里云、腾讯云、AWS这类控制台也能推DNS,它们靠cloud-init或者自己的agent。把控制台的“自动分配DNS”关掉,或者把cloud-init的manage_resolv_conf设为false,双保险更安心。

一句话总结

不让DHCP塞DNS,不让NM写文件,再手动锁resolv.conf,三条红线一起拉,CentOS7就再也翻不了浪。

分享
海报
142
上一篇:CentOS7单用户模式改密码无法保存解决 下一篇:如何切换美式键盘?切换美式键盘的方法

忘记密码?

图形验证码