Назад | Перейти на главную страницу

Почему требуется «systemd-resolved»?

Я занимаюсь обновлением своего производственного сервера с 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

Логика заключается в том, что 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

добавьте следующие строки в [основной] раздел NetworkManager.conf:

dns=default

Затем перезапустите сетевой менеджер:

service network-manager restart

Это должно заставить систему использовать классический файл resolv.conf.

Альтернативный трюк состоит в том, чтобы сделать сервис не запускаемым, пока вы его не «разоблачите»:

systemctl mask systemd-resolved

Небезопасная часть этого может заключаться в том, что его отключение может нарушить разрешение имен в некоторых сценариях VPN. Поэтому, если вы хотите использовать VPN, обязательно проведите надлежащее тестирование их функциональности после избавления от systemd-resolved.