Решить проблему можно разными способами, например, временно добавив правила firewall для блокировки 53 порта на всех интерфейсах, кроме интерфейса VPN, либо установить на всех интерфейсах, кроме VPN, DNS в 127.0.0.1. Однако, эти способы вносят изменения, выдерживающие перезагрузку, поэтому, если во время работы VPN у вас случайно отключили электричество или VPN-демон просто упал, вы останетесь с неработающим интернетом. Ничего хорошего в этом нет.
Однако есть способ лучше, который вносит только временные изменения и не оставит пользователя без интернета.
Windows Filtering Platform
Начиная с Windows Vista, на замену устаревшим технологиям обработки трафика вроде NDIS, TDI и LSP приходит WFP — современная, легкая и удобная технология, которая работает как в режиме ядра, так и в пользовательском режиме. Современные версии Брандмауэра Windows как раз используют WFP, как и все сторонние файрволлы и антивирусы с возможностью проверки трафика.Драйвер режима ядра может просматривать, модифицировать и логировать пакеты и просто поток данных, а userspace-фильтры могут пропускать, отбрасывать, задеживать или направлять трафик в ядерный драйвер, основываясь на информации из Ethernet-фрейма или IP-пакета и их заголовков, а также (на уровне ALE) интерфейса источника и назначения, ID процесса, полный путь к exe, и некоторой другой.
WFP-фильтр может добавлять постоянные фильтры, которые выживают после перезагрузки, даже если ПО, установившее их, не было больше запущено, временные фильтры, которые сохраняются после завершения программы, но не после перезагрузки, и сессионные, которые действуют только тогда, когда программа, создавшая их, все еще исполняется.
Фильтра пользовательского режима с сессионными фильтрами вполне достаточно для наших задач, а нам нужно:
- Запретить все исходящие пакеты от всех интерфейсов на порт 53 по UDP/TCP и IPv4/IPv6
- Разрешить любой трафик с TAP-интерфейса (-ов) OpenVPN
Все это вылилось в плагин для OpenVPN, однако исходный код может быть собран и как обычный исполняемый файл:
http://ift.tt/1P9jtIO
Чтобы использовать данный плагин, скачайте .dll-файлы из репозитория, положите их в папку config рядом с конфигурационным файлом, и добавьте в него строку:
plugin fix-dns-leak-32.dll
для 32-битной системы и 32-битной версии OpenVPN, или
plugin fix-dns-leak-64.dll
соответственно для 64-битной системы с 64-битным OpenVPN.
Теперь можно не бояться использовать VPN на Windows 10 через публичный Wi-Fi.
This entry passed through the Full-Text RSS service - if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.
Комментариев нет:
Отправить комментарий