Answers:
一个简单的编辑/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
为您选择的值。这样,您就可以拥有一个真正的 static /etc/resolv.conf
。
我发现的最佳解决方案是阻止NetworkManager更新/etc/resolv.conf,然后使用静态DNS服务器创建新的/etc/resolv.conf文件。有关如何执行此操作,请参见https://www.ctrl.blog/entry/resolvconf-tutorial。
根据文档,您可以将写入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服务器。为了将所有绕过本地DNS API的本地客户端连接到systemd-resolved,可以从/etc/resolv.conf中对该文件进行符号链接。该文件不包含任何搜索域。