CentOS7重启后resolv.conf被重置的解决方案

近期在修改一台CentOS7服务器的dns时发现只要重启服务器DNS就会被强制还原,解决方案如下:

1、首先在网卡设置中修改NM_CONTROLLED的值:

修改文件/etc/sysconfig/network-scripts/ifcfg-eth0的内容:

NM_CONTROLLED="no"  //是否允许Network Manager管理,设置为no

默认允许Network Manager管理DNS,所以首先设置为no,然后操作DNS设置

但是!但是!但是!

经过本人亲测,最好还是把Network Manager这个服务彻底关闭,因为这个服务的关系总是会造成一些网卡bug,本人曾经遇到过网卡都启动失败了。

关闭方法如下:

#查看Network Manager服务状态
systemctl status NetworkManager #停止Network Manager服务
systemctl stop NetworkManager #关闭Network Manager开机启动
systemctl disable NetworkManager

2、设置DNS内容:

修改DNS有如下两种方案,推荐第二种,第一种会存在有时当我们采用自建DNS服务时,需要在DNS配置文件设置短域名解析(search 域名),而这个只能在/etc/resolv.conf中进行设置,所以我们推荐第二种方式,直接修改/etc/resolv.conf

2.1 修改网卡设置

/etc/sysconfig/network-scripts/ifcfg-eth0中修改内容:

PEERDNS="yes"
DNS1="xxx.xxx.xxx.xxx"
DNS2="xxx.xxx.xxx.xxx"

这种设置方案是以网卡中设置的DNS为主,resolv.conf中按照网卡设置的DNS内容自动生成,以后想修改DNS,必须修改网卡中的设置才不会在服务器重启之后出现DNS设置失效的问题。

2.2 直接修改/etc/resolv.conf(推荐)

需要注意的是,若要使直接修改的DNS内容不会在服务器重启之后丢失,需要设置网卡中PEERDNS的值为no

nameserver xxx.xxx.xxx.xxx
nameserver xxx.xxx.xxx.xxx

3、修改完毕重启网卡:

systemctl restart network

按照上面任意一种方案修改DNS设置之后都不会出现重启服务器DNS设置复原的情况。

上一篇:解决Ubuntu系统的每次开机重启后,resolv.conf清空的问题


下一篇:18 TaskScheduler任务调度器抽象基类——Live555源码阅读(一)任务调度相关类