我们一般通过修改 \etc\resolv.conf
来修改Linux系统的DNS。但是在大厂的服务器上,重启服务器,查看DNS服务器配置文件 \etc\resolv.conf
,里面的内容会变回原来的样子。出现这种情况的原因是 resolv.conf
文件被系统程序自动维护。
为了防止该文件被更改,可以为其添加独占权限,即执行
sudo chattr +i /etc/resolv.conf
但是一般情况下会出现提示:Operation not supported while reading flags on /etc/resolv.conf
, 从而无法执行。由于 resolvconf
包阻止 resolv.conf
的属性被 chattr
命令修改,因而可执行
sudo chattr +i /etc/resolv.conf
以删除该软件包。
但是对 resolv.conf
文件的 chattr
操作依然无法执行。这其实是由系统管理 resolv.conf
文件的方式所导致的。用 ls -l /etc/resolv.conf
查看文件属性,会发现 resolv.conf
是指向另一个文件的软链接。只有当 /etc/resolv.conf
是个真实的文件时,系统才会采用该文件里配置的DNS服务器地址。因此解决问题的办法就是将软链接型的 resolv.conf
删除或重命名,然后创建新的 resolv.conf
文件并将DNS服务器的地址写进去, 即执行以下操作:
sudo mv /etc/resolv.conf /etc/resolv.conf.link
sudo vim /etc/resolv.conf
mv
用来重命名, vim
用来创建和写入内容。