问题描述:解决CentOS 7.4重启后/etc/resolv.conf被重置的问题

云资源的服务器/etc/resolv.conf文件原先的配置如下:


解决方法:/etc/resolv.conf保存DNS是暂时的,当重新启动network时,/etc/resolv.conf恢复到了初始状态,要想更改,可尝试下边的方法。


一、修改/etc/sysconfig/network-scripts/ifcfg-eth0

在其中的加入你要添加的DNS,如下图

之后保存退出,执行systemctl restart network(service network restart),则在/etc/resolv.conf中会自动添加你刚才在ifcfg-eth0中添加的DNS信息(如下图),且重启仍有效。


二、修改网卡配置,增加“PEERDNS=no”

保存退出,执行systemctl restart network(service network restart),原先的这两个“

search openstacklocal

nameserver 114.114.114.114

”参数没有了,在/etc/resolv.conf中会自动添加只有你刚才在ifcfg-eth0中添加的DNS信息(如下图),且重启仍有效。


三、不需要dns话,只要增加“PEERDNS=no”参数,重启网络卡后resolv.conf文件为空,如下图:

至此结束


番外:

在Linux中,DNS的配置文件位于/etc/resolv.conf,里面主要有三个字段,分别是nameserver, domain, search

我们简单看一下以下例子:

# Generated by NetworkManager
domain example.com
search example.com
nameserver 192.168.1.100

这里domain和search是一个作用,在俩这同时存在时,前者失效。

当访问的域名不能被DNS解析时,resolver会将该域名加上search指定的参数,重新请求DNS,直到被正确解析或试完search指定的列表为止。


peerdns字段的作用域分两种情况:

为yes时:1 如果在网卡(ifcfg-eth0)中设置了DNS地址,或者开启了dhcp client(proto为dhcp)时,此项默认为yes,所以每次NetworkManager进行重写时,

都会获取dhcp client抓到的dns信息对nameserver和search字段进行重写。

为no时: 不会对/etc/resolv.conf进行重写