为什么需要“systemd-resolved”?

为什么需要“systemd-resolved”?

我正在将生产服务器从 Ubuntu 14.04 升级到 18.04,并注意到systemd-resolved18.04 中有一个东西运行某种本地 DNS 缓存。[1]

为什么需要这样做?简单地放入nameserver 1.1.1.1或结束这一切有什么问题?禁用并恢复到更简单的配置是否安全?nameserver 8.8.8.8/etc/resolv.confsystemd-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 后对其功能进行适当的测试。

相关内容