resolvconf


resolvconf — пакет, используемый в современных операционных системах, отвечающий за автоматическое назначение DNS серверов и разрешение имён в ip адреса.



Другие имена пакета systemd-resolve и resolvectl. Через resolvectl можно выполнять команды в консоли вручную.


Например:

root@server:~# resolvectl query ya.ru

ya.ru: 77.88.55.242 -- link: ens3
5.255.255.242 -- link: ens3

-- Information acquired via protocol DNS in 4.1ms.
-- Data is authenticated: no


Сервис называется systemd-resolved.service. Им можно управлять как любым сервисом systemd:

resolvconf в Debian


resolvconf в Debian и настройки DNS на сервере


resolvconf представляет собой базу с данными по именам, пакет используется службами сети при поднятии интерфейсов и других операциях с сетью сервера.

У администратора или пользователя обычно возникает необходимость взаимодействовать с resolvconf в случае если есть какие-то проблемы с разрешением DNS записей. Например, результаты DNS запросов с сервера и с других машин разные.



Локально проверку можно выполнять с помощью запроса query, с опциональными ключами. Пример приведен ниже.


root@server:~# resolvectl --legend=no -t MX query ya.ru

ya.ru IN MX 10 mx.yandex.ru -- link: ens3


При отсутствии пакета то, какие DNS сервера использовать для резолвинга определяется содержимым файла /etc/resolv.conf

less /etc/resolv.conf

nameserver 192.168.1.2
domain example.com




Как система использует resolvconf


Рассмотрим как выглядят настройки сети на Debian сервере, в частности файл /etc/network/interfaces


less /etc/network/interfaces

allow-hotplug eth0
iface eth0 inet static
address 192.168.11.13
netmask 255.255.255.0
gateway 192.168.11.1
dns-domain example.com
dns-nameservers 192.168.1.2



Когда ядро определяет наличие физического интерфейса eth0 allow-hotplug дает сигнал ifup поднять интерфейс.

iface указывает ifup, что нужно использовать статический IP адрес.


Последние две строки определяют настройки DNS. Они нужны только если установлена служба resolvconf

Проверить установлена ли служба можно так:

root@server:~# dpkg -l | grep resolvconf

ii resolvconf 1.82 all name server information handler




Если DNS запросы разрешаются неправильно


В случае если результат разрешения DNS запросов с сервера не такой как результат разрешения DNS запросов с других серверов можно попробовать следующее:


  • проверить /etc/hosts. Файл используется системой и обрабатывается по умолчанию до DNS. Если в /etc/hosts есть строки задающие для определенного домена ip адрес имя будет преобразовываться в этот адрес без запроса к DNS


  • сброс кэша DNS. Он выполняется командой resolvectl flush-caches. При её выполнении в консоль не происходит никакого вывода


  • перезапуск службы через systemctl restart systemd-resolved.service


Проверять в какой адрес происходит преобразование можно с помощью утилит host и dig. Также можно выполнять ping до домена (ping example.com) и смотреть какой ip адрес будет в ответе.



Сетевые настройки также могут задаваться не статически, а за счет DHCP или формироваться скриптами или за счет Network Manager.

Сказать спасибо