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设置复原的情况。