Сеть в Linux Linux (NetworkManager, systemd-networkd)

Сеть Linux: Linux: VPN подключён, но запросы DNS уходят мимо туннеля

  • Обновлено
  • Чтение ≈ 3 минуты

Краткий ответ

VPN на Linux подключён, но DNS-запросы к корпоративным именам уходят к обычному DNS-серверу. Нужно проверить назначенный для VPN DNS и маршрутизацию доменов, не отключая защиту или не принуждая весь трафик идти в туннель.

В этой статье
  1. Что происходит и когда это важно
  2. Возможные причины и как их отличить
  3. Пошаговая диагностика и исправление
  4. Команды из инструкции с пояснениями
  5. Как проверить результат
  6. Если проблема не устранена

#Что происходит и когда это важно

IP-адрес корпоративного ресурса доступен, но его внутреннее имя не находится или находится неверно; при отключении VPN симптомы отличаются.

#Возможные причины и как их отличить

Возможная причинаКак узнатьЧто делать
VPN не передал DNSТуннель поднялся, но настройки резолвера не обновлены.resolvectl status не показывает DNS на VPN-интерфейсе.Сверить профиль и политику сервера VPN.
Нет маршрутизируемого доменаDNS доступен, но резолвер выбирает обычный линк для корпоративного имени.Нет домена вида ~corp.example в списке DNS Domains.Согласовать split-DNS именно для внутренней зоны.
Отсутствует маршрут к DNS VPNРезолвер пытается опросить внутренний DNS, но IP недостижим.ip route get к DNS показывает неверный путь.Проверить VPN маршруты без изменения всего default route.

#Пошаговая диагностика и исправление

  1. Уточните допустимый способ проверкиНа рабочем ноутбуке сверьте с администратором имя тестового корпоративного домена и DNS-сервера. Не отправляйте внутренние имена или IP в открытые журналы/форумы. Откройте терминал после подключения VPN.
  2. Посмотрите, какие DNS получил туннельВыполните resolvectl status. Найдите VPN-интерфейс (часто tun0, wg0 и др.) и поля DNS Servers, DNS Domain. Маршрутизируемая зона начинается со знака ~; отсутствие этой зоны может заставлять резолвер выбирать внешний DNS.
  3. Сравните ответы на общедоступное и внутреннее имяВыполните resolvectl query example.com для общего теста, затем resolvectl query ВНУТРЕННЕЕ_ИМЯ, заменив пример проверенным доменом компании. Если внутреннее имя не разрешается, но прямой IP доступен, это указывает на отдельную DNS-проблему.
  4. Определите владельца DNSВыполните nmcli connection show --active при использовании NetworkManager, затем посмотрите настройки вашего VPN-профиля. Если конфигурацией управляет отдельный клиент WireGuard/OpenVPN или администратор предприятия, не меняйте параллельно NetworkManager.
  5. Проверьте путь до назначенного DNSАдминистратор может предложить адрес внутреннего DNS. Выполните ip route get АДРЕС_DNS, подставив только IP-адрес, подтверждённый администратором. Команда покажет интерфейс и выбранный маршрут без передачи пакетов. Если маршрут идёт мимо VPN, проблему нужно решать настройками туннеля, а не отключением брандмауэра.
  6. Настройте split-DNS только для нужной зоныЕсли VPN-профиль управляется вами и корпоративная политика разрешает, в его настройках DNS укажите выданный администратором адрес и маршрутизируемый домен. Для подключения NetworkManager это проверяется через штатные свойства профиля; изменения могут разорвать VPN на время переподключения. Не отправляйте всё разрешение DNS внутрь VPN без необходимости и разрешения.
  7. Проверьте утечки при повторном подключенииПереподключите VPN и заново выполните resolvectl status/query для разрешённого тестового имени. Убедитесь, что рабочее имя разрешается, а доступ к обычным сайтам не пропал. При неуспехе верните сохранённые параметры.

#Команды из инструкции с пояснениями

Linux · Терминал (Bash)Команда
Показывает DNS и домены для каждого соединения.
resolvectl status
Linux · Терминал (Bash)Команда
Контроль разрешения общедоступного домена.
resolvectl query example.com
Linux · Терминал (Bash)Команда
Активные профили, включая управляемый NetworkManager VPN.
nmcli connection show --active

#Как проверить результат

Разрешённое внутреннее имя разрешается через DNS туннеля, общедоступные имена сохраняют предусмотренный маршрут и после переподключения всё повторяется.

#Если проблема не устранена

Если клиент VPN не отдаёт DNS-параметры, обратитесь к его администратору с типом клиента и показаниями resolvectl (без внутренних секретных имён). Не меняйте глобальный resolv.conf вслепую.

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.