51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

修改完dns总是被重置?

目录

介绍 {#i}

出于不同的需要,我们有的时候需要对Linux的dns进行修改,那一般情况下我们都会对/etc/resolv.conf这个文件进行修改,可是过一段时间,或者机器重启后,机器还会恢复原来的dns,这个问题以前也是一直困扰了小白好久。

原因 {#i-2}

这个地方其实已经写的很清楚了,因为我们机器的dns设置已经由resolvconf接管了,我们对/etc/resolv.conf所做的任何修改都会被resolvconf重写。

解决方法 {#i-3}

我们由如下三思路可以解决这个问题。

温和派 {#i-4}

修改resolvconf配置文件,仍然让resolvconf接管dns

nano /etc/resolvconf/resolv.conf.d/base
resolvconf -u

猥琐派 {#i-5}

/etc/resolv.conf加锁,禁止任何进程修改它。

chattr +i /etc/resolv.conf

想要恢复原状的话,上述命令改成-i就好了。

釜底抽薪派 {#i-6}

直接卸载resolvconf

apt remove resolvconf    

可能会遇到的问题 {#i-7}

chattr +i /etc/resolv.conf时可能会提示

Operation not supported while reading flags on /etc/resolv.conf

出现这种情况主要是由于 resolvconf 包阻止resolv.conf的属性被chattr命令修改,于是我们卸载resolvconf,但是对resolv.conf文件的chattr操作依然无法执行。

其实这主要由系统管理resolv.conf文件的方式所导致的,我们通过

ls -l /etc/resolv.conf

查看文件属性会发现如下显示

lrwxrwxrwx 1 root root 29 Apr 11  2020 /etc/resolv.conf -> ../run/resolvconf/resolv.conf

resolv.conf是指向另一个文件的软链接。只有当/etc/resolv.conf是个真实的文件时,系统才会采用该文件里配置的DNS服务器地址,所以我们只需要让resolv.conf是一个真实的文件即可,之久删了或者稳妥一点备份下,然后重建一个真实的resolv.conf文件即可。

mv /etc/resolv.conf /etc/resolv.conf.bak
nano /etc/resolv.conf  

赞(0)
未经允许不得转载:工具盒子 » 修改完dns总是被重置?