Автор Тема: Отключение кэширующего DNS-сервера в systemd  (Прочитано 3243 раз)

0 Пользователей и 1 Гость просматривают эту тему.

vovka

  • Global Moderator
  • Про
  • *****
  • Сообщений: 787
    • Просмотр профиля
    • www.nixzeya.ru.net
Отключение кэширующего DNS-сервера в systemd
« : Понедельник, 29 Июня, 2020, 08:51:34 »
    По работе приходится частенько отстраивать доменную систему имён и использовать утилиты типа dig и  nslookup. После проверок и работы в современных Linux-системах, результат внутреннего резолвера очень часто не совпадает с результатами утилит. Виной всему - кэширующий DNS-сервис, встроенный в систему инициализации systemd. Надоело каждый раз переинициализировать кэш сервиса и, с недавних пор, на рабочих машинах его просто отключаю, чтобы не мешал проводить тесты.

Посмотреть статус работы резолвера можно с помощью команды:
@ systemd-resolve --status
Остановить и отключить сервис можно так:
# systemctl stop systemd-resolved
# systemctl disable systemd-resolved

После отключения сервиса, network manager всё-равно будет прописывать адрес DNS-сервера 127.0.0.1 после каждой перезагрузки и, без дополнительных настроек, этот процесс не отключается. Далее у пользователя есть два варианта, отличающихся логикой работы менеджера:

Вариант 1.
/etc/resolv.conf не управляется и не перезаписывается network manager`ом, конфигурация в нём полностью под контролем пользователя.

Останавливаем network manager:
# systemctl stop NetworkManager.service

Затем необходимо в файле /etc/NetworkManager/NetworkManager.conf внести изменения - добавить в секцию "main" строку "dns=none" :
[main]
dns=none

Затем прописать в /etc/resolv.conf адрес своего DNS-сервера, например:
nameserver 192.168.1.1

Запустить network manager:
# systemctl start NetworkManager.service

Убедиться, что в /etc/resolv.conf содержатся корректные настройки:
# cat /etc/resolv.conf
Если в /etc/resolv.conf затёрлись пользовательские настройки и снова появилась запись с адресом сервера 127.0.0.1, значит настройка не сработала и нужно глянуть логи.


Вариант 2.
/etc/resolv.conf перезаписывается network manager`ом - последний записывает адрес DNS-сервера исходя из настроек пользователя в графическом окружении.

Останавливаем network manager:
# systemctl stop NetworkManager.service

В файле /etc/NetworkManager/NetworkManager.conf добавляем в секцию "main" строку systemd-resolved=false :
[main]
systemd-resolved=false

Запускаем network manager:
# systemctl start NetworkManager.service

Убеждаемся, что в /etc/resolv.conf содержатся те настройки, которые сделаны в графическом окружении:
# cat /etc/resolv.conf

Некоторые опции настройки network manager`а можно посмотреть здесь.
« Последнее редактирование: Четверг, 02 Июля, 2020, 04:08:04 от vovka »
*nix - свобода мысли, свобода творчества!