目录
介绍 {#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