CentOS7删除NetworkManager默认DNS防止被覆盖

2025-09-16 21:09:59 143
魁首哥

近期有些网友想要了解CentOS7删除NetworkManager默认DNS防止被覆盖的相关情况,小编通过整理给您分析,根据自身经验分享CentOS7删除NetworkManager默认DNS防止被覆盖有关知识。

CentOS7删除NetworkManager默认DNS防止被覆盖

很多CentOS7系统管理员都遇到过这种情况:明明在/etc/resolv.conf里配置好了DNS服务器,重启网络服务或者机器后,发现DNS设置又被莫名其妙地改回去了😤。这个问题反复出现,确实让人非常头疼。其实,这背后往往是NetworkManager服务在自动覆盖你的手动配置。今天,我们就来彻底解决这个问题,一劳永逸!

NetworkManager为什么会覆盖DNS?

在CentOS7及许多现代Linux发行版中,NetworkManager的设计初衷是为了简化网络管理,特别是为桌面环境和移动设备提供更灵活的网络切换能力。它默认会接管DNS设置,尤其是在使用DHCP时,会自动使用DHCP服务器下发的DNS地址。这种机制在服务器环境中,尤其是需要稳定、自定义DNS配置的情况下,反而成了麻烦的根源。

当你手动修改/etc/resolv.conf后,一旦网络状态发生变动(如重启、网络接口重置),NetworkManager就会认为需要“修复”并覆盖这个文件,以其认为正确的配置为准。所以,仅仅修改/etc/resolv.conf是治标不治本。

如何彻底阻止NetworkManager覆盖DNS?

最根本、最彻底的方法不是禁用NetworkManager(因为在某些场景下它可能仍需工作),而是修改其配置文件,明确告诉它不要管理DNS。下面是详细的操作步骤,请跟随进行:

第一步:编辑NetworkManager的主配置文件

使用你熟悉的文本编辑器(如vim或nano)打开NetworkManager的配置文件:

sudo vim /etc/NetworkManager/NetworkManager.conf

第二步:在[main]部分添加关键配置

找到配置文件中的[main]部分。如果不存在,就在文件顶部添加它。然后,确保其中包含这样一行:

dns=none

这行配置是整个解决方案的核心,它直接指示NetworkManager不要对DNS设置进行任何管理。修改后的[main]部分看起来是这样的:

[main]

dns=none

第三步:重启NetworkManager服务

让刚才的配置修改立即生效:

sudo systemctl restart NetworkManager

放心,重启这个服务通常不会中断你当前的SSH连接,但为了安全起见,建议在物理服务器控制台或有多路径访问的服务器上操作。

手动配置DNS并确保其持久化

现在,NetworkManager已经放手不管DNS了,你可以安心地手动配置了。推荐的方法是编辑/etc/resolv.conf文件:

sudo vim /etc/resolv.conf

添加你需要的DNS服务器,例如:

nameserver 114.114.114.114

nameserver 8.8.8.8

但是,为了防止这个文件在未来被其他进程意外修改,我们给它加上不可变更属性(immutable attribute):

sudo chattr +i /etc/resolv.conf

⚠️ 注意:如果后续你需要再次修改DNS,记得先解除这个属性:sudo chattr -i /etc/resolv.conf

验证与测试:确认方法生效

完成以上步骤后,必须进行验证,确保一切按预期工作。

1. 检查resolv.conf内容:使用cat /etc/resolv.conf确认配置是你设置的,且没有变化。

重启网络服务:执行sudo systemctl restart network后,再次检查/etc/resolv.conf

进行DNS解析测试:使用nslookup baidu.comping google.com来测试DNS解析是否正常工作,并且解析的IP符合预期。

如果一切正常,那么恭喜你!🎉 你已经成功从NetworkManager手中夺回了DNS的控制权。

如果问题依旧?检查这些常见陷阱

极少数情况下,可能还有其他因素在作祟。如果问题依旧,请排查以下两点:

1. DHCP客户端: 如果你使用DHCP,某些DHCP客户端也可能会尝试更新DNS。确保/etc/sysconfig/network-scripts/ifcfg-你的网卡名文件中包含PEERDNS=no,这可以阻止DHCP客户端覆盖DNS。

其他服务或脚本: 检查是否有自定义的运维脚本或第三方服务在管理网络配置。

搞定以上步骤,CentOS7服务器上的DNS覆盖问题基本上就彻底成为历史了。这个方法的好处是既保留了NetworkManager服务的其他功能,又精准地解除了它对DNS的管控,是一种非常优雅的解决方案。

分享
海报
143
上一篇:如何切换美式键盘?切换美式键盘的方法 下一篇:如何申请淘宝达人?申请淘宝达人的方法

忘记密码?

图形验证码