Короткий ответ
Сначала отделите «нет маршрута до DNS 10.0.10.10» от «запрос уходит на бытовой резолвер». Для Windows 11 смотрите NRPT и DNS-суффикс подключения, не только ipconfig /flushdns. Для Linux — resolvectl / resolv.conf после wg-quick или OpenVPN dhcp-option DNS. Имя fileserver.contoso.example не появится из воздуха, если клиент спрашивает публичный DNS, а суффикс contoso.example не добавляется к короткому имени.
Не прописывайте 8.8.8.8 единственным DNS на NIC доменной машины. Не отключайте Windows Firewall, чтобы «починить DNS».
Симптомы и как отличить
Test-NetConnection 10.0.10.10успешен,Resolve-DnsName fileserver.contoso.example— NXDOMAIN или таймаут.- Короткое имя
fileserverне дополняется суффиксом. - Браузер открывает внешние сайты, внутренние порталы — нет (split tunnel + DNS leak).
Другие проблемы:
- Нет ping даже по IP — LAN или маршруты.
- Хотите проверить утечку на ISP DNS — утечка DNS.
- RDP ругается на имя/NLA при живом IP — RDP.
Возможные причины
- DNS-сервер
10.0.10.10недоступен (нет маршрута, нет FORWARD, DNS слушает только LAN NIC без VPN). - Клиент не получил DNS через VPN: нет
DNS =в WireGuard, нетpush "dhcp-option DNS", Windows не регистрирует NRPT. - NRPT/суффикс не покрывают
contoso.example, запросы идут на DHCP бытовой сети. - Split tunnel + «умный» DNS (DoH в браузере) обходит Nic.
- Поиск только коротких имён без Connection-specific DNS suffix.
- OpenVPN 2.6 на Linux без
update-resolv-conf/resolvedscript — push DNS игнорируется. - Windows error 868: имя
vpn.example.comсамо не резолвится ещё до туннеля — это endpoint, не внутренний DNS.
Диагностика
1. IP жив, имя нет
Test-NetConnection 10.0.10.10 -Port 53
Resolve-DnsName fileserver.contoso.example -Server 10.0.10.10
Resolve-DnsName fileserver.contoso.example
Get-DnsClientServerAddress -AddressFamily IPv4
Get-DnsClientNrptPolicy
Get-DnsClientGlobalSetting | Select-Object SuffixSearchList
Get-VpnConnection | Format-List Name, ConnectionStatus, DnsSuffixЕсли -Server 10.0.10.10 работает, а без -Server нет — резолвер Nic не тот. Если и с -Server таймаут — сеть/firewall до DNS, не суффикс.
Linux:
ip route get 10.0.10.10
dig @10.0.10.10 fileserver.contoso.example +short
resolvectl status
resolvectl query fileserver.contoso.example2. Куда уходит запрос
На шлюзе:
tcpdump -n -i wg0 port 53
tcpdump -n -i eth1 port 53На клиенте без VPN-DNS пакеты на 192.168.1.1:53 (домашний роутер) при открытии внутренней ссылки — leak/split.
Get-NetUDPEndpoint -LocalPort 53 -ErrorAction SilentlyContinue
# захват:
pktmon filter add -p 53Достаточно tcpdump на VPN-интерфейсе и бытовом NIC параллельно.
3. Суффикс и короткое имя
Get-VpnConnection -Name 'Office' | Format-List DnsSuffix, SplitTunneling
ipconfig /allНужен Connection-specific DNS Suffix contoso.example либо NRPT namespace .contoso.example → 10.0.10.10.
OpenVPN server:
push "dhcp-option DNS 10.0.10.10"
push "dhcp-option DOMAIN contoso.example"WireGuard (wg-quick):
DNS = 10.0.10.10, contoso.exampleБез script/resolved на systemd это поле может не примениться — проверьте resolvectl status после wg-quick up.
Решение
Сценарий A. DNS недоступен по сети
Верните маршрут к 10.0.10.0/24 и FORWARD, разрешите 53/udp и 53/tcp к 10.0.10.10 с 10.8.0.0/24. Служба DNS на Windows Server должна слушать соответствующий интерфейс (не только «только localhost»).
Сценарий B. Windows без NRPT при split
Add-DnsClientNrptRule -Namespace '.contoso.example' -NameServers '10.0.10.10'
Set-VpnConnection -Name 'Office' -DnsSuffix 'contoso.example'Проверьте, что правило не перекрыто более широким . с публичными DNS. GPO NRPT может перезаписывать ручное правило — тогда правьте GPO, не «гонку» на клиенте.
Сценарий C. Linux OpenVPN 2.6 не применяет DNS
Используйте поддерживаемый hook (openvpn-systemd-resolved или update-resolv-conf), не копируйте resolv.conf руками в обход resolved. После коннекта:
resolvectl dns tun0 10.0.10.10
resolvectl domain tun0 ~contoso.exampleПостоянно — через dhcp-option и скрипт, не одноразовую команду.
Сценарий D. WireGuard DNS в wg-quick
Убедитесь, что wg-quick вызывает resolvconf/resolved. Если Table = off, DNS в конфиге может примениться, а маршрута к 10.0.10.10 нет — получите таймаут. Добавьте AllowedIPs для LAN.
Сценарий E. DoH в браузере
Для корпоративных имён отключите «Secure DNS» в политике браузера на рабочих местах или включите DoH на внутреннем резолвере. Иначе NRPT для системного резолвера не поможет Chrome.
Стенд: Windows 11 + WireGuard + NRPT
На клиенте Windows 11 после wg-quick/GUI туннель с DNS = 10.0.10.10 часто не пишет NRPT. Тогда Get-DnsClientServerAddress показывает бытовой DHCP, а Resolve-DnsName fileserver.contoso.example -Server 10.0.10.10 зелёный. Это не «сломанный DNS сервера», а отсутствие политики имени.
Get-DnsClientNrptRule | Format-List Namespace, NameServers, Comment
Add-DnsClientNrptRule -Namespace '.contoso.example' -NameServers '10.0.10.10' -Comment 'vpn-office'
ip route 2>$nullНа Linux тот же смысл через routing domain resolved: ~contoso.example только на wg0. Если повесить ~. на туннель при недоступном рекурсоре — умрут внешние сайты и заявка превратится в «интернет пропал».
Проверьте TCP 53: часть контроллеров режет UDP-фрагменты. Test-NetConnection 10.0.10.10 -Port 53 проверяет TCP. Для UDP смотрите tcpdump -n port 53 на DC и на wg0.
Не используйте nslookup fileserver как единственный критерий: на Windows он может взять другой сервер, чем Resolve-DnsName. В заявке приложите оба вывода и Get-VpnConnection.
Как проверить, что проблема устранена
Resolve-DnsName fileserver.contoso.example
Resolve-DnsName fileserver
Test-NetConnection fileserver.contoso.example -Port 445
Get-DnsClientNrptPolicyLinux:
resolvectl query fileserver.contoso.example
dig fileserver.contoso.example +shortНа tcpdump интерфейса туннеля видны запросы к 10.0.10.10:53, на бытовом NIC — нет внутренних зон. Короткое имя резолвится за счёт суффикса.
Если не помогло
- Только один клиент: кэш, hosts-файл, старый NRPT.
Get-Content C:\Windows\System32\drivers\etc\hosts. - Весь сайт: зона на DC, forwarding, условные зоны — не VPN.
- Имя VPN-сервера
vpn.example.comне резолвится с улицы — это публичный DNS, почините A-запись, иначе клиент не подключится (868). - Есть DNS, нет Kerberos — время и SPN, не эта статья.
Профилактика
- Шаблон клиента: DNS
10.0.10.10, суффиксcontoso.example, NRPT только на внутренние зоны. - Мониторинг: резолв тестового имени с канарейки в туннеле.
- Не смешивать публичный DNS как единственный на доменных ПК.
- Документировать split DNS vs full DNS через VPN.
FAQ
Почему nslookup показывает 8.8.8.8 после коннекта?
Потому что Nic/NRPT не перехватили запрос. nslookup без указания сервера берёт системный список; на Windows это не всегда VPN-DNS первым.
Нужно ли flushdns после каждого коннекта?
Нет как ритуал. После смены NRPT — один раз. Постоянный flush скрывает, что резолвер не тот.
Можно ли пустить все имена на 10.0.10.10?
Да, это full DNS. Тогда резолвер должен рекурсировать интернет. Если DC без рекурсии наружу — внешние сайты умрут. Лучше NRPT на contoso.example.
Linux ping по имени работает, браузер нет
Браузер DoH. Проверьте настройки DNS-over-HTTPS, не resolv.conf.
Get-VpnConnection без DnsSuffix
Задайте -DnsSuffix или NRPT. RAS не угадает AD-зону по ServerAddress vpn.example.com.