修改云服务器规格的时候,会修改/etc/resolv.conf 文件和网卡配置,用户不希望/etc/resolv.conf 被修改。
此问题为Linux本身问题
与产品无关,从Centos5.6就存在,Centos重新启动网络服务自动使用/etc/sysconfig/network-scripts/ifcfg-eth0中重新置/etc/resolv.conf,导致修改/etc/resolv.conf内容,
dhclient -> dhclient-scripts -> resolve.conf
[root@iv-yckhnozvhskrke7qy7lw ~]# cat /etc/resolv.conf
options timeout:5 attempts:3 rotate single-request-reopen
; generated by /usr/sbin/dhclient-script
options rotate
nameserver 100.96.0.2
nameserver 100.96.0.3
[root@iv-yckhnozvhskrke7qy7lw ~]#
用户需求:修改云服务规格、重启网络或机器不重置/etc/resolv.conf
文件。
方案一:使用chattr +i 命令将resolv.conf文件变成只读,则dhclient无法修改resolv.conf文件
sudo chattr +i /etc/resolv.conf #锁定/etc/resolv.conf
sudo chattr -i /etc/resolv.conf #解除锁定
**持久化:**可以将sudo chattr +i /etc/resolv.conf加到/etc/rc.local里
方案二:在网卡里设置DNS,以Centos 7.6为例
vim /etc/sysconfig/network-scripts/ifcfg-eth0 #注意备份ifcfg-eth0信息
增加自定义DNS服务器,如示例DNS1=8.8.8.8 #谷歌dns服务器
systemctl restart network
#重启网络服务使配置生效,会影响 DNS 解析,请评估后操作。
执行后查看/etc/resolv.conf,就会把原来DNS覆盖为eth0网卡下配置,如下所示
[root@iv-yckhnozvhskrke7qy7lw network-scripts]# cat /etc/resolv.conf
options timeout:5 attempts:3 rotate single-request-reopen
options rotate
; generated by /usr/sbin/dhclient-script
nameserver 8.8.8.8 #会被8.8.8.8覆盖
方案三:eth0网卡配置PEERDNS=no
其中网卡上有一项配置为**PEERDNS
,其含义为:
PEERDNS:是否指定DNS,如果使用DHCP协议
,默认为yes**。
- yes:如果DNS设置,修改/etc/resolv.conf中的DNS
- no:不修改/etc/resolv.conf中的DNS
DNS{1, 2}:DNS地址,当PEERDNS为yes时会被写入/etc/resolv.conf中。
自定义的nameserver依旧在/etc/resolv.conf里配置,当PEERDNS=no
时,重启网络服务或者机器时不会重写/etc/resolv.conf文件。
具体使用哪种方案,视业务自身使用情况和习惯而定,这里暂不做推荐。