我正在将生产服务器从 Ubuntu 14.04 升级到 18.04,并注意到systemd-resolved
18.04 中有一个东西运行某种本地 DNS 缓存。[1]
为什么需要这样做?简单地放入nameserver 1.1.1.1
或结束这一切有什么问题?禁用并恢复到更简单的配置是否安全?nameserver 8.8.8.8
/etc/resolv.conf
systemd-resolved
[1] 我之所以注意到这一点,只是因为它随机崩溃并导致所有主机名查找失败,从而严重损坏了我的应用程序 -https://askubuntu.com/questions/1117842/systemd-resolved-crashing-with-failed-to-set-up-mount-namespacing-invalid-argu
答案1
其逻辑是 Ubuntu 有一个内置的 DNS 缓存,在尝试解析任何内容时会首先检查该缓存。在此版本中,默认情况下,NetworkManager 不会更新 /etc/resolv.conf,而是调用名为 resolvconf 的应用程序。
这种方法:
service resolvconf disable-updates
update-rc.d resolvconf disable
service resolvconf stop
可能无法通过重新启动。
为了摆脱这个问题,我们可以更加努力:
systemctl disable systemd-resolved.service
systemctl stop systemd-resolved
将以下几行添加到[主要的]部分网络管理器配置文件:
dns=default
然后重新启动网络管理器:
service network-manager restart
这应该使系统使用经典的 resolv.conf 。
另一个肮脏的伎俩是让服务无法启动,直到你“揭露”它:
systemctl mask systemd-resolved
不安全的部分可能是禁用它可能会破坏某些 VPN 场景中的名称解析。因此,如果您想使用 VPN,请确保在删除 systemd-resolved 后对其功能进行适当的测试。