在 CentOS 或 Red Hat Enterprise Linux (RHEL7)中,/etc/resolv.conf 文件,保存了namaserver的设定。当我们修改/etc/resolv.conf后,重启系统的话,NetworkManager将覆盖掉/etc/resolv.conf的内容。

例如 在VMware上启动CentOS7.9系统后的/etc/resolv.conf的文件内容如下。

# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.3.1
nameserver fe80::1%ens33

现象

当我们修改 /etc/resolv.conf 文件(添加search sys-blog.net行),重启系统发现文件内容被覆盖掉。

# cat /etc/resolv.conf
# Generated by NetworkManager
search sys-blog.net
nameserver 192.168.3.1
nameserver fe80::1%ens33

使用reboot命令重启系统后,发现/etc/resolv.conf文件的内容被覆盖。

解决方法

在 /etc/NetworkManager/NetworkManager.conf 文件,把 dns 的参数设定为 none,具体的设定为如下(注释去掉后)。

# cat /etc/NetworkManager/NetworkManager.conf
[main]
plugins=ifcfg-rh,ibft
dns=none

至此/etc/resolv.conf文件内容在重启系统之后不会被覆盖。

原因

查看 NetworkManager.conf 的man页面。

dns
Set the DNS (resolv.conf) processing mode.

default:The default if the key is not specified.NetworkManager
will update resolv.conf to reflect the nameservers provided by
currently active connections.

dnsmasq:NetworkManager will run dnsmasq as a local caching
nameserver, using a “split DNS” configuration if you are connected
to a VPN, and then update resolv.conf to point to the local
nameserver.

none:NetworkManager will not modify resolv.conf.