HCRM博客

CentOS7彻底解决DHCP覆盖resolv.conf问题的终极指南

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

CentOS7彻底解决DHCP覆盖resolv.conf问题的终极指南-图1

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

CentOS7彻底解决DHCP覆盖resolv.conf问题的终极指南-图2

坑是怎么来的

很多人以为直接把/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。

CentOS7彻底解决DHCP覆盖resolv.conf问题的终极指南-图3

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就再也翻不了浪。

本站部分图片及内容来源网络,版权归原作者所有,转载目的为传递知识,不代表本站立场。若侵权或违规联系Email:zjx77377423@163.com 核实后第一时间删除。 转载请注明出处:https://blog.huochengrm.cn/pc/41741.html

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
请登录后评论...
游客游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~