Почему dig и приложение видят разные адреса: проверяем resolvectl
Как посмотреть DNS-серверы и правила разрешения имён в системе с systemd-resolved, особенно при VPN и нескольких сетевых интерфейсах.

В этой статье
Утилита DNS возвращает ожидаемый адрес, но приложение продолжает подключаться к другому. Причина может быть в том, что они используют разные пути разрешения имён. На системах с systemd-resolved выбор DNS зависит не только от одного общего файла, но и от интерфейсов и доменных правил.
Убедитесь, что этот механизм используется
Инструкция относится к Linux, где установлен и работает systemd-resolved. Если система использует другой резолвер, команды могут быть недоступны или не описывать реальный путь приложения. Не включайте новый сервис только ради выполнения этой инструкции.
resolvectl status
Посмотрите общие настройки и сведения по каждому интерфейсу: DNS-серверы, домены и роль соединения. При активном VPN именно эти различия часто объясняют, почему внутреннее имя должно разрешаться через корпоративную сеть.
Проверьте имя через системный сервис
Введите доменное имя без протокола и пути:
read -r TARGET_HOST
resolvectl query "$TARGET_HOST"
Запрос показывает результат, полученный через systemd-resolved, и сопутствующие сведения. Сравните его с тем, что использует приложение. Прямой запрос dig к конкретному внешнему серверу проверяет другой путь и потому не обязан возвращать тот же результат.
Учтите разделение DNS по доменам
В организации часть имён может обслуживаться внутренним DNS, а остальные — обычным интернет-соединением. После подключения VPN меняется не обязательно весь DNS, а только маршрут запросов для отдельных доменов. Поэтому универсальная замена всех серверов на публичные способна сломать рабочие сервисы.
Пример: публичный сайт открывается, а внутренний портал перестал находиться после переподключения VPN. Сначала сравните настройки соответствующего интерфейса и доменные правила. Если корпоративный DNS исчез из состояния соединения, проблема не решается редактированием записи публичного домена.
Не ограничивайтесь системным резолвером
Браузер может использовать собственный защищённый DNS, а приложение — внутренний кэш или библиотеку с особым поведением. Контейнер тоже способен получать отдельную конфигурацию. Успешный resolvectl query подтверждает конкретный путь разрешения, но не все возможные пути на машине.
Проверьте также точное имя: короткое имя с поисковым суффиксом и полное доменное имя могут приводить к разным запросам. Не исправляйте конфигурацию, пока не установлено, какое имя реально запрашивает проблемное приложение.
Как собрать доказательства
Запишите состояние VPN, интерфейс, DNS-сервер, доменное правило и результат запроса. Если нужно сравнение до и после переподключения, проводите его в понятном порядке и отмечайте время. Не очищайте кэш как первое действие: это может временно изменить симптом, не объяснив причину.
Исправление считается проверенным, когда правильный ответ получает именно нужное приложение в ожидаемой сети. Сохраните различия между системным запросом, прямым DNS-запросом и поведением браузера: они помогают найти уровень ошибки. Один успешный ответ утилиты не заменяет такую проверку.
Если ошибка возникает только после выхода из сна или смены сети, отметьте это в отчёте: важен момент обновления конфигурации соединения.
The DNS utility returns the expected address, but the app continues connecting to another. The cause may be that they use different name resolution paths. On systems with systemd-resolved, DNS selection depends not only on a single global file but also on interfaces and domain rules.
Ensure this mechanism is in use
This guide applies to Linux systems where systemd-resolved is installed and running. If the system uses a different resolver, the commands may be unavailable or may not describe the actual path used by the app. Do not enable the new service solely to follow this instruction.
resolvectl status
View general settings and details for each interface: DNS servers, domains, and connection role. With an active VPN, these differences often explain why an internal name must resolve via the corporate network.
Check the name via the system service
Enter the domain name without protocol and path:
read -r TARGET_HOST
resolvectl query "$TARGET_HOST"
The query shows the result obtained via systemd-resolved and related details. Compare it with what the application uses. A direct query dig to a specific external server checks a different path and therefore does not have to return the same result.
Consider DNS separation by domain
In an organization, some names may be served by internal DNS, while others use a standard internet connection. After connecting to a VPN, not necessarily all DNS changes, but only the routing of requests for specific domains. Therefore, universally replacing all servers with public ones can break working services.
Example: a public site opens, but the internal portal stops resolving after reconnection to the VPN. First, compare the settings of the relevant interface and domain rules. If the corporate DNS disappears from the connection state, the issue cannot be resolved by editing a public domain record.
Do not rely solely on the system resolver
A browser may use its own secure DNS, while an application might use an internal cache or a library with special behavior. A container can also receive a separate configuration. A successful resolvectl query confirms a specific resolution path, but not all possible paths on the machine.
Also check the exact name: a short name with a search suffix and a fully qualified domain name can trigger different queries. Do not modify the configuration until it is confirmed which name the problematic application is actually requesting.
How to gather evidence
Record the VPN state, interface, DNS server, domain rule, and query result. If a before-and-after comparison is needed after reconnection, perform it in a clear order and note the time. Do not clear the cache as the first step: this may temporarily alter the symptom without explaining the cause.
A fix is considered verified only when the correct response is received by the specific application in the expected network. Distinguish between a system query, a direct DNS query, and browser behavior: these differences help identify the error level. A single successful utility response does not replace this verification.
If the error occurs only after waking from sleep or changing networks, note this in the report: the timing of the connection configuration update is critical.

Обсуждение 0
Делись опытом и задавай вопросы. Комментарии без ссылок появляются после проверки редактором.
Пока никто не написал. Начни обсуждение.