Не работает DNS через VPN в Windows 10 (РЕШЕНО)

DNS-серверы и суффиксы, настроенные для VPN-подключений, используются в Windows 10 для разрешения имён с помощью DNS в режиме Force Tunneling (принудительного туннелирования) (включён параметр Use default gateway on remote network («Использовать шлюз по умолчанию в удаленной сети»)), если ваше VPN-подключение активно. В этом случае вы не можете преобразовать DNS-имена в своей локальной сети или получить доступ в Интернет через внутреннюю локальную сеть.

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

Я нашёл несколько рекомендаций по отключению протокола IPv6 для вашего локального (LAN) интерфейса, и это поможет, если вы хотите использовать режим Force-Tunneling.

Если вы используете Split Tunneling (раздельное туннелирование) (опция Use default gateway on remote network («Использовать шлюз по умолчанию в удаленной сети») не отмечена) для вашего VPN-соединения, вы можете получить доступ к Интернету из своей локальной сети, но вы не можете разрешать DNS-адреса в удалённой сети VPN (отключение IPv6 здесь не поможет).

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

Проверьте значения всех метрик сетевого интерфейса из PowerShell:

Get-NetIPInterface | Sort-Object Interfacemetric

На приведённом выше снимке экрана показано, что локальное соединение Ethernet имеет более низкую метрику (25), чем интерфейс VPN (100). Таким образом, трафик DNS проходит через интерфейс с меньшим значением метрики. Это означает, что ваши DNS-запросы отправляются на ваши локальные DNS-серверы, а не на DNS-серверы для VPN-подключения. В этой конфигурации вы не можете разрешать имена в подключённой внешней сети VPN.

Кроме того, здесь следует упомянуть новую функцию DNS-клиента для Windows 8.1 и Windows 10. В эти версии ОС было добавлено Smart Multi-Homed Name Resolution (SMHNR) (интеллектуальное разрешение многодомных имён) для более быстрого ответа на запросы DNS. По умолчанию SMHNR отправляет одновременные запросы DNS ко всем DNS-серверам, известным системе, и использует ответ, полученный первым (запросы LLMNR и NetBT также отправляются). Это небезопасно, поскольку внешние DNS-серверы (указанные для вашего VPN-соединения) потенциально могут видеть ваш DNS-трафик (утечка ваших DNS-запросов). Вы можете отключить SMHNR в Windows 10 через GPO: Конфигурация компьютера → Административные шаблоны → Сеть → DNS-клиент → Отключить интеллектуальное многосетевое разрешение имен = Включено.

В английской версии: Computer Configuration → Administrative Templates → Network → DNS Client → Turn off smart multi-homed name resolution = Enabled.

Или вы можете отключить SMHNR, используя следующие команды (в Windows 8.1):

Set-ItemProperty -Path "HKLM:\Software\Policies\Microsoft\Windows NT\DNSClient" -Name DisableSmartNameResolution -Value 1 -Type DWord

Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters" -Name DisableParallelAandAAAA -Value 1 -Type DWord

В Windows 10 Creators Update (1709) и новее запросы DNS отправляются на все известные DNS-серверы один за другим (не параллельно). Вы можете повысить приоритет определённого DNS-сервера, если снизите его значения метрики.

Таким образом, изменение метрики интерфейса позволяет вам отправлять DNS-запросы через соединение (LAN или VPN), где разрешение имён является для вас самым приоритетным.

Таким образом, чем ниже значение метрики интерфейса, тем выше приоритет соединения. Windows автоматически назначает метрики интерфейсов IPv4 в зависимости от их скорости и типа. Например, соединение LAN со скоростью > 200 Мбит/с имеет значение метрики, равное 10, а соединение Wi-Fi со скоростью 50-80 Мбит/с имеет значение 50 (смотрите таблицу https://docs.microsoft.com/en-us/troubleshoot/windows-server/networking/automatic-metric-for-ipv4-routes).

Вы можете изменить метрику интерфейса из графического интерфейса Windows, PowerShell или с помощью команды netsh.

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

Перейдите в Панель управления → Сеть и Интернет → Центр управления сетями и общим доступом → Изменение параметров адаптера (либо используйте путь «Панель управления\Сеть и Интернет\Сетевые подключения»). Затем откройте свойства вашего Ethernet-соединения, выберите «IP версии 4 (TCP/IPv4)». На вкладки «Общие» нажмите кнопку «Дополнительно». Снимите флажок «Автоматическое назначение метрики» и измените метрику интерфейса на 120.

Вы можете сделать то же самое с помощью следующей команды PowerShell (используйте индекс вашего интерфейса LAN, который вы можете получить с помощью командлета Get-NetIPInterface):

Set-NetIPInterface -InterfaceIndex 11 -InterfaceMetric 120

Или с помощью netsh (укажите имя вашего LAN-соединения):

netsh int ip set interface interface="Ethernet0" metric=120

Таким же образом вы можете уменьшить значение метрики в свойствах вашего VPN-соединения.

Также вы можете изменить настройки своего VPN-подключения, изменив режим на Split Tunneling и указав DNS-суффикс для подключения с помощью PowerShell:

Get-VpnConnection
Set-VpnConnection -Name "VPN_work" -SplitTunneling $True
Set-VpnConnection -Name "VPN_work" -DnsSuffix yourdomainname.com

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

wp-puzzle.com logo