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