Как правильно отключить systemd-resolved

На моем ноутбуке Ubuntu Eoan я обнаружил, что системное разрешение спорадически необъяснимым образом не отвечает на запросы локального DNS к 127.0.0.53, даже когда запросы к DNS-серверу моего маршрутизатора все еще работают, поэтому я хочу сохранить простоту и отключить системное разрешение.

(В частности, после того, как WiFi отключается, а затем повторно подключается, локальный DNS-сервер 127.0.0.53, предоставленный systemd-resolved в /etc/resolv.conf, перестает отвечать на запросы до тех пор, пока я вручную 'systemctl не перезапустит systemd-resolved'.)

Я использую беспроводную сеть с DHCP с wicd, обычно контролирую ее с помощью wicd-gtk. Как правильно настроить систему так, чтобы при подключении WiFi через DHCP я использовал DNS-сервер, назначенный DHCP? Я отключил службу с разрешением systemd, но этого оказалось недостаточно. Это просто оставило после /etc/resolv.conf символическую ссылку на несуществующий /run/systemd/resolve/stub-resolv.conf. Даже если я удаляю это, NetworkManager создает файл /etc/resolv.conf, указывающий на бесполезный 127.0.0.53, когда я снова подключаюсь к WiFi. Даже если я удаляю этот файл и останавливаю NetworkManager, а затем снова подключаюсь к WiFi, я не получаю /etc/resolv.conf, поэтому в поисках DNS нет сервера для использования.

Как правильно настроить параметры сети wicd или моей системы, чтобы выполнить обычную настройку DNS-сервера в дополнение к настройке локального IP-адреса, подсети и шлюза под WiFi-DHCP? Я обычно использую wicd-gtk, чтобы вручную выбрать WiFi для подключения. Кроме того, с Wi-Fi нет проблем, так как другие устройства не имеют проблем, и ранее при запуске с разрешением systemd иногда он работал, а иногда и не работал. Кроме того, я пытаюсь избежать использования NetworkManager, потому что я использую xmonad без системного трея, поэтому я не могу легко использовать графический интерфейс SystemManager в системном трее.

Одна вещь, которая выглядит весьма подозрительной для меня в системном журнале после подключения к WiFi, это то, что systemd-resolved не перезагружалась после того, как dhclient получил DHCPACK. systemd-resolved начался незадолго до этого, когда, по-видимому, сеть еще не была готова. Таким образом, кажется, что /etc/dhcp/dhclient-enter-hooks.d/resolved не работает, как предполагалось.

РЕДАКТИРОВАТЬ: Кажется, что, отключив systemd-resolved, я столкнулся с известной ошибкой: https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1745463

3 ответа

Я думаю, что правильный ответ можно найти здесь:https://www.turek.dev/posts/disable-systemd-resolved-cleanly/

Таким образом, чтобы полностью отключить заглушку DNS с помощью systemd-resolved, не отключайте службу systemd-resolved, а правильно настройте ее с помощью DNSStubListener=noи символическая ссылка /run/systemd/resolve/resolv.conf на /etc/resolv.conf.

Чтобы отключить systemd-разрешение:

      sudo systemctl disable systemd-resolved.service
sudo systemctl stop systemd-resolved

Удалите символическую ссылку /etc/resolv.conf, чтобы вы могли ее отредактировать.

      sudo rm /etc/resolv.conf

Создайте новый файл resolv.conf и введите DNS-сервер, который вы хотите использовать.

Если вы используете dhclient, он не будет обновлять /etc/resolv.conf значениями, отправленными сервером (или директивами supersede/prepend в вашей собственной конфигурации клиента!!!) , если вы не удалите следующий файл:

      sudo rm /etc/dhcp/dhclient-enter-hooks.d/resolved

Я пробовал это и могу подтвердить, что это работает в Ubuntu Focal. Обратите внимание, что это касается случая использования dhclient отдельно с ifupdown, а не с Netplan, не с NetworkManager, не с wicd и даже не с resolvconf. Все эти конфигурации требуют различных шагов для работы без разрешения systemd или при отключении других компонентов сетевого стека systemd.

Использованная литература:

эта спасательная запись в блоге

этот спасительный ответ аскубунту

Спорадическая проблема звучит как ошибки 1396379, 1805027 и 1804487. Я обнаружил, что решение моих спорадических сбоев разрешения имен 18.04 заключается в добавлении пакета libnss-resolv. Это изменило строку хостов /etc/nsswitch.conf следующим образом:

hosts:          files mdns4_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] dns myhostname  

Никаких других изменений в установке по умолчанию не потребовалось. Оставьте ссылку /etc/resolv.conf на стандартную заглушку-resolv.conf.

Другие вопросы по тегам