Разрешение DNS в Windows 10 через VPN-соединение не работает

49

В Windows 10 при подключении к VPN с включенным разделенным туннелированием (шлюз отключен) при разрешении DNS всегда используются DNS-серверы локальной сети, игнорируются DNS-серверы и DNS-суффикс, заданный для VPN-подключения.

Ожидаемое поведение - использовать DNS-серверы VPN, в противном случае становится невозможным разрешать записи DNS в удаленной сети (например, в доменных компьютерах).

Это работало должным образом в предыдущей версии Windows.

Это широко обсуждалось в этой ветке ответов Microsoft .

ECC-Dan
источник
Из вашего вопроса непонятно, в чем ваша проблема (хотите ли вы использовать DNS-сервер, указанный VPN?), Пожалуйста, отредактируйте его.
Матэ Юхас,
Отредактировано как предложено.
ECC-Dan
ТБХ: Тогда что-то не так с вашими серверами. Первый DNS-запрос должен ВСЕГДА попадать на локальные серверы. Только если хост неразрешим, система должна пытаться запросить удаленный DNS. Ваша проблема может заключаться в том, что локальные и удаленные сети работают в одних и тех же подсетях, поэтому локальная утверждает, что «может решить запрос», но поставляет «узел не найден»? (Если сервер, настроенный на сервер abcd подсети, не может разрешить хост, дальнейший dns-сервер для этой подсети не запрашивается, если основной не находится в автономном режиме, поскольку они ДОЛЖНЫ быть синхронизированы - следовательно, предполагается, что хост неизвестен)
dognose

Ответы:

55

Я навсегда исправил эту проблему, вручную установив метрику моего подключения к локальной сети выше (15), чем одно окно назначает для моего VPN (11).

Это можно сделать двумя способами:

  • Через графический интерфейс: сетевые подключения, свойства, свойства TCP / IP v4, расширенные настройки, установите для метрики значение 15;
  • Командная строка: netsh int ip set interface interface="LAN CONNECTION NAME" metric=15

Эффект мгновенный (по крайней мере, при использовании командной строки), и DNS-запросы теперь проходят через мой VPN, как и ожидалось.

Это работает с Split Tunneling и является постоянным исправлением при переподключениях и перезагрузках.

Обратите внимание, что вы также можете изменить метрику VPN вместо соединения с локальной сетью, но это не будет постоянным, поскольку Windows сбрасывает метрику, когда соединение установлено.

В зависимости от вашей среды у вас может быть другая метрика по умолчанию для вашей локальной сети и VPN-соединения. Просто настройте соответствующим образом, чтобы у вашей VPN была более низкая метрика, чем у вашей локальной сети.

Кроме того, если вы обнаружите, что не можете редактировать свойства TCP / IP вашей VPN, поскольку они также были повреждены в Windows 10 , вы можете установить большинство свойств через Powershell :

1. Get-VpnConnection
2. Set-VpnConnection -Name "myVPN" -SplitTunneling $True
3. Set-VpnConnection -Name "myVPN" -DnsSuffix yourdomain.local
ECC-Dan
источник
2
Для меня это не работает ... У меня есть две машины с Windows 10, одна работает все нормально, другой проблематично с VPN. Мне удалось разрешить шлюз по умолчанию, включающий SplitTunneling, но DNS VPN все еще не распознает, когда я изменяю метрику ...
ceinmart
3
Это исправило проблему для нас (и мы боролись с ней в течение некоторого времени), сделав один важный дополнительный шаг - отключение IPv6. Наш VPN не поддерживает IPv6, но, насколько я понимаю, любой распознаватель IPv6 будет иметь преимущество перед IPv4. После того, как мы отключили IPv6 на адаптерах, затем настроили метрику разделенного туннеля, DNS возобновил работу. Если ваша VPN поддерживает IPv6, это, вероятно, не требуется, и если настройка метрики сама по себе исправляет DNS, вы должны оставить IPv6 включенным на своем адаптере.
Адам Штрол
Интересный факт: для меня проблема заключалась в «наоборот» - при подключении к VPN Windows не могла разрешить локальные полные доменные имена ... Для параметра «VPN-соединение» была настроена метрика по умолчанию - 1, поэтому я дал локальный соединение меньшего числа, которое решило мою проблему. (Мои локальные серверы настроены правильно, поэтому любое неразрешимое имя будет запрашиваться при подключении «второго предпочтения», что теперь заставляет и локальный, и удаленный днс работать, как положено, пока установлен VPN.)
dognose
Любая идея, почему это исправление необходимо только для меня при подключении через одного провайдера, но не другой (оба коаксиального кабеля подключены)?
Гайя
Каким-то образом я получил перевернутую проблему в первую очередь: мой локальный ноутбук Win10 автоматически использует только DNS в VPN (большую часть времени), и поскольку этот DNS в этой внутренней VPN (пока) не настроен для предоставления службы DNS, я могу не просматривать веб-сайты в Интернете во время периода включения VPN. Таким образом, я использую это решение в обратном направлении, то есть устанавливаю для моего локального LAN-соединения такое же маленькое число 1, которое, похоже, решает проблему на данный момент. Впрочем, я не знаю значения метрики для моего VPN-соединения, потому что во всплывающем окне свойств VPN-соединения нет кнопки «Дополнительно».
RayLuo
11

Я развернул новую установку Windows 10 на виртуальной машине, чтобы протестировать ее, увидев эту проблему на каждой физической машине с Win10, которая у меня есть. Я проверил все ответы в этой теме, и ни один из них не сработал. Я обнаружил, что решение состоит в том, чтобы объединить ответы, опубликованные здесь "Keenans" и "ECC-Dan":

http://answers.microsoft.com/en-us/windows/forum/windows_10-networking/win-10-dns-resolution-of-remote-network-via-vpn/513bdeea-0d18-462e-9ec3-a41129eec736? страница = 1

Панель управления> Центр управления сетями и общим доступом> Изменить настройки адаптера> Щелкните правой кнопкой мыши адаптер Ethernet или Wi-Fi> Свойства>, дважды щелкните IPv4> Дополнительно> Снимите флажок Автоматическая метрика> Введите 15 для метрики интерфейса> ОК> ОК.

На той же странице свойств дважды щелкните IPv6> Дополнительно> Снимите флажок Автоматическая метрика> Введите 15 для метрики интерфейса> ОК> ОК.

Только после изменения обоих этих параметров проблема будет решена. Я тестировал смену одного обратно, и он снова ломается. После изменения обоих я запустил nslookup из командной строки, и он вернул DNS-сервер в удаленной сети, к которой подключен VPN, где в противном случае он вернул бы локальный DNS-сервер. Затем я использовал перехват Wireshark на интерфейсе Ethernet, сделал несколько запросов на случайные веб-сайты и убедился, что не было перехваченных пакетов DNS. Это доказывает, что после внесения изменений DNS-запросы отправляются ТОЛЬКО через VPN-соединение, а не одновременно по всем соединениям (что известно как утечка DNS в Win10). Так что это также часть решения для утечки DNS Win10:

https://medium.com/@ValdikSS/beware-of-windows-10-dns-resolver-and-dns-leaks-5bc5bfb4e3f1#.7ppsn1nda

Обратите внимание, что для устранения утечки DNS вам сначала необходимо выполнить действия, описанные выше. Затем вам нужно установить два значения реестра. Связанные статьи содержат только одну статью, которая сама по себе не решает проблему в более новых сборках Win10. Установите эти значения реестра:

Key: HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows NT\DNSClient
Value:  DisableSmartNameResolution
Data:  1

Key: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters
Value: DisableParallelAandAAAA
Data:  1

Только после всего этого поведение вашего DNS-клиента вернется к тому, что было в Win7. Вы должны задаться вопросом, как это прошло через QA в Microsoft.

LikeARock47
источник
1

Это не работает, даже если я изменил метрики как для IPv4, так и для IPv6 и использовал реестр DisableSmartNameResolution и DisableParallelAandAAAA с текущей Windows 10 Edu (по состоянию на декабрь 2018 года), когда клиент подключен с помощью кабеля UTP и протокол IPv6 поддерживается в локальной сети (т.е. клиент имеет публичный / глобальный адрес IPv6).

Достаточно отключить протокол IPv6 на интерфейсе UTP / LAN, используемом для VPN, чтобы он работал (чтобы удалить / not_use глобальный адрес IPv6 на клиенте).

Это работает без проблем, когда клиент подключен к Интернету по Wi-Fi и IPv6 доступен (клиент имеет глобальный адрес IPv6 и не имеет соединения UTP / LAN).

Милан Керслагер
источник