- Предотвращаем утечку DNS при использовании VPN в Windows 10 и 8.1
- Windows 8 и 8.1
- Windows 8 и Windows 10 (редактор локальной групповой политики)
- Не работает разрешение имен DNS при активном VPN подключении в Windows 10
- Windows 10 DNS resolution via VPN connection not working
- 5 Answers 5
- Connect to a VPN in Windows 10
- Create a VPN profile
- Connect to a VPN
Предотвращаем утечку DNS при использовании VPN в Windows 10 и 8.1
Один из самых популярных способов защиты ваших персональных данных в сети заключается в использовании VPN-сервиса. Однако, иногда недостаточно просто установить службу и надеяться на лучшее. Данное руководство поможет вам убедиться, что VPN не раскрывает ваши DNS-запросы.
В поисковой системе Google можно найти много статей по отключению Smart Multi-Homed Name Resolution или улучшенное многоадресное разрешение имен, но что это за функция? Еще в Windows 8 Microsoft представила новую функцию, которая ускоряет DNS-запросы за счет использования всех доступных в системе сетевых адаптеров для возврата самого первого результата. Это означает, что даже если вы используете VPN-сервис для работы в Интернете, но в вашей системе установлено несколько сетевых адаптеров, DNS-запрос может быть передан вне вашего защищенного VPN соединения.
Приведенные ниже шаги позволяют отключить данную функцию в Windows 8.1 и Windows 10 в системах с несколькими сетевыми адаптерами, например, при использовании нескольких беспроводных подключений или беспроводного и проводного подключений.
Windows 8 и 8.1
Следующий твик реестра можно применить только в системах Windows 8 и 8.1, в Windows 10 он не работает.
Если вы не любите работать с реестром, то можете пропустить данный способ и отключить функцию с помощью редактора групповых политик.
Примечание: Некорректное изменение реестра может привести к серьезным проблемам. Рекомендуется создать резервную копию реестра Windows перед тем, как выполнить данные шаги. В меню редактора реестра выберите Файл > Экспорт для сохранения резервной копии.
- Откройте редактор реестра: нажмите клавишу Windows, затем введите regedit.exe и нажмите Enter. Появится запрос службы контроля учетных записей, подтвердите его.
- Перейдите по пути: HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows NT\DNSClient .
- Если параметр DisableSmartNameResolution уже существует, убедитесь, что его значение равно 1.
- В противном случае щелкните правой кнопкой мыши по директории DNSClient и в меню выберите Создать > Параметр DWORD (32 бита).
- Назовите параметр DisableSmartNameResolution .
- Установите значение, равное 1. Вы сможете в любой момент снова включить функцию, просто установив значение, равное 0 или просто удалив параметр.
- Перейдите по пути: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters .
- Если параметр DisableParallelAandAAAA уже существует, убедитесь, что его значение равно 1.
- В противном случае щелкните правой кнопкой мыши по директории Parameters и в меню выберите Создать > Параметр DWORD (32 бита).
- Назовите параметр DisableParallelAandAAAA .
- Установите значение, равное 1. Вы сможете в любой момент снова включить функцию, просто установив значение, равное 0 или просто удалив параметр.
После этого можно закрыть редактор реестра и перезагрузить Windows, чтобы применить изменения.
Windows 8 и Windows 10 (редактор локальной групповой политики)
Следующий способ работает во всех версиях Windows 10, а также в Windows 8 и 8.1.
Обратите внимание, что редактор групповых политик доступен только в версиях Windows 10 Pro. Если вы используете Windows 10 Домашняя, то можете использовать бесплатное приложение с открытым исходным кодом Policy Plus для редактирования групповых политик и отключения функции Smart Multi-Homed Name Resolution.
- Откройте редактор локальной групповой политики: нажмите клавишу Windows, затем введите gpedit.msc и нажмите Enter.
- Перейдите по пути: Конфигурация компьютера > Административные шаблоны > Сеть > DNS-клиент > Отключить улучшенное многоадресное разрешение имен.
- Установите статус политики Включено для отключения данной функции в системе.
Перезагрузите Windows, чтобы применить изменения.
Данная метод ни в коем случае не является верным способом защиты вашей конфиденциальности в Интернете, многие другие факторы также играют важную роль. Если у вас есть собственный лайфхак, который вы используете, чтобы поддерживать безопасность в сети, поделитесь им ниже в обсуждениях. Давайте сделаем серфинг снова безопасным вместе!
Не работает разрешение имен DNS при активном VPN подключении в Windows 10
В Windows 10 при активном VPN подключении в режиме Force Tunneling (включена опция “Use default gateway on remote network”/ “Использовать основной шлюз в удаленной сети”) для разрешения имен через службу DNS используются DNS сервера и суффиксы, настроенные для VPN подключения. Соответственно, вы теряете возможность резолвить DNS имена в своей локальной сети и пользоваться Интернетом через внутреннюю LAN.
При этом с Windows 10 можно выполнить ping до ресурсов в вашей LAN сети (пропингуйте ваш шлюз, соседний компьютер или принтер), но по имени они не доступны, т.к. Windows пытается разрешить имена в локальной сети через DNS сервера, указанные для VPN соединения.
В Google я нашел рекомендации по отключению IPv6 на локальном (LAN) подключении и это работает (если вы хотите использовать Force-Tunneling).
Если для VPN подключения используется режим Split Tunneling (снята галка “Use default gateway on remote network”), вы можете пользоваться интернетом через свою локальную сеть, но не можете резолвить DNS адреса в удаленной VPN сети (в этом случае не помогает отключение IPv6).
Нужно понимать, что Windows отправляет DNS запрос с сетевого интерфейса, у которого высший приоритет (меньшее значение метрики интерфейса). Допустим, ваше VPN подключение работает в режиме Split Tunneling (вы хотите пользоваться интернетом через свою LAN и корпоративными ресурсами через VPN подключение).
С помощью PowerShell проверьте значение метрик всех сетевых интерфейсов:
Get-NetIPInterface | Sort-Object Interfacemetric
На картинке выше видно, что у локального Ethernet подключения указана более низкая метрика (25), чем у VPN интерфейса (в этом примере 100). Соответственно, DNS трафик идет через интерфейс с более низким значением метрики. Это значит, что ваши DNS запросы отправляются на ваши локальные DNS сервера, а не на DNS сервера VPN подключения. Т.е. в такой конфигурации вы не можете резолвить адреса во внешней VPN сети.
Кроме того, нужно обязательно упомянуть новую фичу DNS клиента в Windows 8.1 и Windows 10. В этих версиях ОС для максимально быстрого получения ответов на DNS запросы был добавлен функционал DNS релолвера под названием Smart Multi-Homed Name Resolution (SMHNR). При использовании SMHNR система по умолчанию отправляет DNS запросы на все известные системе DNS сервера параллельно и использует тот ответ, который пришел быстрее. Это не безопасно, т.к. потенциально внешние DNS сервера (которые указаны в вашем VPN подключении) могут видеть ваши DNS запросы (утечка ваших DNS запросов вовне). Вы можете отключить SMHNR в Windows 10 с помощью групповой политики:
Computer Configuration -> Administrative Templates -> Network -> DNS Client-> Turn off smart multi-homed name resolution = Enabled.
Или командами (для 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://support.microsoft.com/en-us/help/299540/an-explanation-of-the-automatic-metric-feature-for-ipv4-routes).
Вы можете изменить метрику интерфейса через графический интерфейс, PowerShell или команду netsh.
Например, вы хотите, чтобы DNS запросы отправлялись через VPN подключение. Вам нужно увеличить метрики ваших локальных LAN подключений, чтобы они стали больше 100 (в моем примере).
Откройте Панель управления -> Сеть и Интернет -> Сетевые подключения, откройте свойства вашего Ethernet подключения, выберите свойства протокола TCP/IPv4, перейдите на вкладку “Дополнительные параметры TCP/IP”. Снимите галку “Автоматическое назначение метрики” и измените метрику интерфейса на 120.
Тоже самое можно сделать командами PowerShell управления сетью (используйте индекс вашего LAN интерфейса, полученный с помощью командлета Get-NetIPInterface ):
Set-NetIPInterface -InterfaceIndex 11 -InterfaceMetric 120
Или netsh (нужно указать имя вашего LAN подключения)
netsh int ip set interface interface=»Ethernet 3″ metric=120
Аналогично вы можете уменьшить значение метрики в свойствах VPN подключения.
Также вы можете изменить настройки вашего VPN подключения, изменив режим на SplitTunneling и указать DNS суффикс для подключения c помощью PowerShell:
Windows 10 DNS resolution via VPN connection not working
In Windows 10, when connected to a VPN with Split Tunneling enabled (Gateway disabled), DNS resolution always uses the LAN DNS servers, ignoring the DNS servers and the DNS Suffix set on the VPN connection.
The expected behavior is to use the VPN’s DNS servers, otherwise it becomes impossible to resolve DNS entries on the remote network (such as domain computers).
This was working properly in previous version of Windows.
5 Answers 5
I have fixed this problem permanently by manually setting the metric of my LAN connection to be higher (15) than the one windows assigns to my VPN (11).
This can be done two ways:
- Through the GUI: Network connections, Properties, TCP/IP v4 Properties, Advanced, Set Metric to 15;
- Command line: netsh int ip set interface interface=»LAN CONNECTION NAME» metric=15
The effect is immediate (at least when using the command line) and DNS lookups now go through my VPN as expected.
This works with Split Tunneling and is a permanent fix across reconnections and reboots.
Note that you could also change the metric of the VPN instead of the LAN connection, but this wouldn’t be permanent as Windows resets the metric when the connection is established.
Depending on your environment, you may have a different default metric for your LAN and VPN connection. Simply adjust accordingly so that your VPN has a lower metric than your LAN connection.
Furthermore, if you find that you cannot edit your VPN’s TCP/IP properties because that was also broken in Windows 10, you can set most properties through Powershell:
I spun up a fresh install of Windows 10 in a VM to test on after seeing this issue on every physical Win10 machine I have. I tested all of the answers in this thread and none of them worked. I discovered that the solution is to combine the answers posted here by «Keenans» and «ECC-Dan»:
Control Panel > Network and Sharing Center > Change adapter settings > Right click your Ethernet or Wifi adapter > Properties > double click IPv4 > Advanced > Uncheck Automatic Metric > Enter 15 for interface metric > OK > OK.
On that same Properties page, double click IPv6 > Advanced > Uncheck Automatic Metric > Enter 15 for interface metric > OK > OK.
Only after changing both of those settings is the issue resolved. I tested changing either one back and it breaks again. After changing both I ran nslookup from command line and it returned the DNS server on the remote network where the VPN is connected to, where as otherwise it would return the local DNS server. I then used Wireshark capturing on the Ethernet interface, did some pings to random websites, and verified that there were no DNS packets captured. This proves that after making the changes, DNS queries are being sent ONLY over the VPN connection, and not simultaneously over all connections (which is known as the Win10 DNS leak). So this is also part of the solution for the Win10 DNS leak:
Note that fix the DNS leak, you first need to do the steps above. Then you need to set two registry values. The linked articles only list one, which by itself, does not fix the issue in newer builds of Win10. Set these registry values:
Only after doing all of that, will your DNS client behavior be back to the way it was in Win7. You have to wonder how this got through QA at Microsoft.
Connect to a VPN in Windows 10
Whether it’s for work or personal use, you can connect to a virtual private network (VPN) on your Windows 10 PC. A VPN connection can help provide a more secure connection and access to your company’s network and the internet, for example, when you’re working from a coffee shop or similar public place.
Create a VPN profile
Before you can connect to a VPN, you must have a VPN profile on your PC. You can either create a VPN profile on your own or set up a work account to get a VPN profile from your company.
Before you start:
If it’s for work, look for VPN settings or a VPN app on your company’s intranet site while you’re at work, or contact your company’s support person.
If it’s for a VPN service you subscribe to for personal use, visit the Microsoft Store to see if there’s an app for that service, then go to the VPN service’s website to see if the VPN connection settings to use are listed there.
Select the Start button, then select Settings > Network & Internet > VPN > Add a VPN connection.
In Add a VPN connection, do the following:
For VPN provider, choose Windows (built-in).
In the Connection name box, enter a name you’ll recognize (for example, My Personal VPN). This is the VPN connection name you’ll look for when connecting.
In the Server name or address box, enter the address for the VPN server.
For VPN type, choose the type of VPN connection you want to create. You’ll need to know which kind of VPN connection your company or VPN service uses.
For Type of sign-in info, choose the type of sign-in info (or credentials) to use. This might be a username and password, one-time password, certificate, or a smart card if you’re connecting to a VPN for work. Enter your username and password in the respective boxes (if required).
If you need to edit the VPN connection info or specify additional settings, such as proxy settings, choose the VPN connection and then select Advanced options.
Connect to a VPN
When you have a VPN profile, you’re ready to connect.
On the far right of the taskbar, select the Network icon (either or ).
Select the VPN connection you want to use, then do either of the following depending on what happens when you select the VPN connection:
If the Connect button displays under the VPN connection, select Connect.
If the VPN section in Settings opens, select the VPN connection there, then select Connect.
If you’re prompted, enter your username and password or other sign-in info.
When connected, the VPN connection name will display Connected underneath it. To see if you’re connected to the VPN while you’re doing things on your PC, select the Network icon (either or ) on the far right of the taskbar, then see if the VPN connection says Connected.