18.04:Bionic Beaver:强制执行静态 /etc/resolv.conf

18.04:Bionic Beaver:强制执行静态 /etc/resolv.conf

之前,在 Ubuntu 16.04 上,当 Ubuntu 更新安装dnsmasq软件包、配置软件包并使其优先于我自己的超稳定、超快速且自行配置的 BIND DNS 服务器时,我感觉受到了背叛。感觉就像 Ubuntu 入侵了我的工作站一样。

由于我当时正担任系统管理员,所以这是极其不可接受的。这是一个令人震惊的电话。当你去解决问题时,在某个步骤中使用dignslookup,你会惊讶地看到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

该文件不再是符号链接,而是持久文件。

相关内容