之前,在 Ubuntu 16.04 上,当 Ubuntu 更新安装dnsmasq
软件包、配置软件包并使其优先于我自己的超稳定、超快速且自行配置的 BIND DNS 服务器时,我感觉受到了背叛。感觉就像 Ubuntu 入侵了我的工作站一样。
由于我当时正担任系统管理员,所以这是极其不可接受的。这是一个令人震惊的电话。当你去解决问题时,在某个步骤中使用dig
或nslookup
,你会惊讶地看到lo
界面回复了你。恐慌
有没有办法不仅可以解决这个问题,而且还能保证/etc/resolv.conf
防篡改?
答案1
一个简单的编辑/etc/NetworkManager/NetworkManager.conf
和禁用systemd-resolved.service
(如在这个答案中https://askubuntu.com/a/907249/719422)。但是,仅凭这一点虽然很重要,却不能保证防篡改resolv.conf
。
为了真正执行静态/etc/resolv.conf
,并且您知道它将在任何类型的重启后继续存在,您需要设置不可变的归因于它。除了上面提到的 Bastian Voigt 的回答之外,您还可以以超级用户身份执行此操作:
echo nameserver 8.8.8.8 > /etc/resolv.conf
chattr -e /etc/resolv.conf
chattr +i /etc/resolv.conf
...将更改为nameserver
您选择的值。这样,您就可以真的静止的/etc/resolv.conf
。
答案2
根据文档,您可以将您的写入resolv.conf
到/usr/lib/systemd/resolv.conf
,这是一个可以从 链接的静态文件/etc/resolv.conf
。不应重写。
sudo ln -sf /usr/lib/systemd/resolv.conf /etc/resolv.conf
http://manpages.ubuntu.com/manpages/bionic/man8/systemd-resolved.service.8.html#contenttoc3
/ETC/RESOLV.CONF
支持四种处理 /etc/resolv.conf 的模式(参见 resolv.conf(5)):
...
提供了静态文件 /usr/lib/systemd/resolv.conf,其中将 127.0.0.53 DNS 存根(见上文)列为唯一 DNS 服务器。此文件可以从 /etc/resolv.conf 进行符号链接,以便将所有绕过本地 DNS API 的本地客户端连接到 systemd-resolved。此文件不包含任何搜索域。
答案3
我发现的最佳解决方案是阻止 NetworkManager 更新 /etc/resolv.conf,然后使用静态 DNS 服务器创建新的 /etc/resolv.conf 文件。请参阅https://www.ctrl.blog/entry/resolvconf-tutorial如何做到这一点。
答案4
当前文件是另一个文件的符号链接。删除该文件
rm /etc/resolve.conf vim /etc/resolv.conf 输入你的数据 :wq
该文件不再是符号链接,而是持久文件。