Вопрос или проблема
Почему-то я не могу настроить домены для resolvectl. Либо я совсем не понимаю, что это делает, либо что-то странное происходит у меня.
Как только я устанавливаю домен, например, sudo resolvectl domain enp2s0 example.com
, любой запрос к example.com
или к любым его поддоменам приводит к тайм-аутам и NXDOMAIN для запрашиваемых запросов.
Почему я это испытываю? Разве эта функция не работает просто так же, как search
в файле resolv.conf
, но с пространством имен для сетевого интерфейса? То есть, если я запрашиваю subdomain
, который на самом деле не что иное, как subdomain.example.com
, и у него есть ответы на серверах DNS этого интерфейса, я должен разрешить его успешно, не так ли?
Моя ошибка, это вообще не имело ничего общего с resolvectl, я просто установил DNSOverTLS=yes
в моем /etc/systemd/resolved.conf
, в то время как DNS-сервер не поддерживал DNS через TLS.
Ответ или решение
Понимание проблемы с resolvectl
: тайм-ауты при настройке доменов
Проблема, с которой вы столкнулись, связана с использованием утилиты resolvectl
в системе, использующей systemd-resolved
. Давайте разберём основные аспекты вашей ситуации и разъясним, как правильно настраивать домены и что вызывает тайм-ауты при их использовании.
1. Основы работы с resolvectl
resolvectl
— это инструмент управления именами, который позволяет настраивать разрешение DNS в системах, использующих systemd
. С помощью данной утилиты можно задавать следующие параметры для сетевых интерфейсов:
- DNS-серверы: Указание IP-адресов DNS-серверов, которые будут использоваться для разрешения доменных имён.
- Домен: Настройка домена, который будет использоваться как "по умолчанию" для запросов, если к ним не добавлен явный домен.
Домен можно настроить, используя следующую команду:
sudo resolvectl domain <интерфейс> <домен>
2. Поведение при настройке домена
Когда вы устанавливаете домен для интерфейса, например, с помощью следующей команды:
sudo resolvectl domain enp2s0 example.com
Вы предполагаете, что все запросы к поддоменам, таким как subdomain.example.com
, будут разрешаться корректно, при условии что DNS-серверы на этом интерфейсе способны обрабатывать такие запросы. На первый взгляд, это действительно аналогично директиве search
в файле resolv.conf
, только в данном случае, настроенной для конкретного интерфейса.
3. Причины тайм-аутов и NXDOMAIN
Как вы уже заметили в своем вопросе, возникшие тайм-ауты и ошибки NXDOMAIN
могут возникать по нескольким причинам:
- Проблемы с конфигурацией DNS-сервера: Если ваш DNS-сервер не поддерживает или неправильно настраивает обработку запросов DNS, то вы не получите ожидаемого результата.
- Настройка DNS-over-TLS: Как вы сами упомянули, наличие параметра
DNSOverTLS=yes
в файле/etc/systemd/resolved.conf
, когда ваш DNS-сервер не поддерживает DNS-over-TLS, приведет к тому, что запросы не будут обрабатываться должным образом, и результатом будут тайм-ауты иNXDOMAIN
.
4. Решение проблемы
Чтобы устранить проблему, вам следует выполнить следующие шаги:
-
Проверьте поддержку DNS-over-TLS на вашем DNS-сервере. Если server не поддерживает эту функцию, измените настройку на
DNSOverTLS=no
в файле/etc/systemd/resolved.conf
и перезапустите службуsystemd-resolved
. -
Убедитесь, что DNS-серверы доступны и правильно настроены. Проверьте, указаны ли корректные серверы DNS для интерфейса с помощью:
resolvectl status
-
Проверьте сетевую конфигурацию. Убедитесь, что ваши сетевые настройки, включая IP-адреса, не блокируют разрешение DNS. Это можно сделать с помощью команды
ping
для проверки доступности DNS-сервера.
Заключение
Ваша первоначальная мысль о том, что настройка доменов в resolvectl
должна работать аналогично search
в resolv.conf
, в целом верна. Однако, если возникают проблемы с разрешением, важно проверить не только настройки, но и доступность DNS-серверов. Судя по всему, ваша проблема была связана с функциональностью DNS-over-TLS. Надеюсь, представленные рекомендации помогут вам успешно настроить и использовать resolvectl
без тайм-аутов и ошибок.