По работе приходится частенько отстраивать доменную систему имён и использовать утилиты типа 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`а можно посмотреть
здесь.