18.04:Bionic Beaver:强制执行static /etc/resolv.conf
以前,在Ubuntu 16.04上,当Ubuntu更新安装了dnsmasq
软件包,配置它并且优先于我自己的超稳定,超快速和自己配置的BIND DNS服务器时,我感到被背叛了。 感觉好像Ubuntu攻击了我的工作站。
由于我碰巧是一名系统管理员,这是非常不可接受的。 这是一个奇怪的电话。 这是当你去解决问题时,在你的一个步骤中你使用dig
或nslookup
,你会惊讶地看到lo
界面回复你。 恐慌
有没有办法不仅可以解决这个问题,还可以保证/etc/resolv.conf
可以防篡改?
对/etc/NetworkManager/NetworkManager.conf
简单编辑并禁用systemd-resolved.service
(如本答案https://askubuntu.com/a/907249/719422 )。 但仅此一点,虽然必不可少,但并不能保证防篡改resolv.conf
。
要真正强制执行静态/etc/resolv.conf
,您知道它将在任何类型的重新启动后继续存在,您需要为其设置immutable属性。 除了上面提到的Bastian Voigt的答案之外,你还可以使用SuperUser:
echo nameserver 8.8.8.8 > /etc/resolv.conf chattr -e /etc/resolv.conf chattr +i /etc/resolv.conf
…将nameserver
更改为您选择的值。 这样,您就可以拥有一个非常静态的/etc/resolv.conf
。
根据文档,您可以将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。 此文件不包含任何搜索域。
存在的文件是另一个文件的符号链接。 删除文件
rm /etc/resolve.conf vim / etc resolve.conf 输入你的数据 :WQ
该文件不再是符号链接而是持久文件。
在/etc/resolv.conf
上使用chattr
将不起作用,因为/etc
上的resolv.conf
文件只是一个符号链接。
执行用户MK解释的内容,但指向/run/resolvconf/resolv.con
。