Краткое руководство для таких нубов, как я, которые мало знают о сетях. Не много нового здесь, но краткое изложение всех хороших вариантов, описанных в предыдущих ответах и в других связанных темах. Вся процедура состоит из 3 основных этапов:
1) Сделайте так, чтобы весь трафик НЕ проходил через VPN. Для этого необходимо снять Use default gateway on remote network
флажок в настройках VPN. Обязательно снимите этот флажок для IPv4 и IPv6. Обычно я просто полностью отключаю протокол IPv6 для VPN-подключения.
(!) (Иногда) возможно, что снятия этого флажка будет достаточно для нормальной работы - по моему опыту, необходимые маршруты (которые будут направлять необходимый трафик через VPN) могут быть добавлены автоматически после установления VPN-соединения. Я не знаю точно, где и как эти правила настроены, но такой сценарий существует - возможно, это какая-то магия, сделанная администраторами сети VPN.
2) Сделать только необходимый трафик, идущий через VPN. Для этого вам нужно определить маршруты. Здесь у вас есть 3 варианта:
2.1) Добавить постоянный маршрут через VPN-шлюз:
route -p add a.b.c.d/<CIDR> w.x.y.z
или же route -p add a.b.c.d mask e.f.g.h w.x.y.z
где «VPN-шлюз» = «ваш IP в сети VPN» = w.x.y.z
и целевой адрес / сеть = a.b.c.d
. Вы можете найти w.x.y.z
, выполнив ipconfig
и найдя имя вашего VPN-соединения, или, если вы используете PowerShell, вы можете получить компактный вывод, выполнив ipconfig | grep -A5 PPP
(который будет выводить 5 строк после нахождения каждого PPP-соединения).
Минусы: вам придется заново создавать маршруты, если ваш VPN IP изменится.
2.2) Добавить постоянный маршрут через сетевой интерфейс VPN:
route -p add a.b.c.d/<CIDR> 0.0.0.0 IF <interface number>
где a.b.c.d
целевой адрес / сеть и interface number
идентификатор вашего VPN-соединения. Этот идентификатор может быть найден путем выполнения netstat -rn
, или, для более компактного вывода, netstat -rn | grep -A10 'Interface List'
.
Плюсы: не нужно ничего менять, если изменится ваш VPN-адрес ( w.x.y.z
).
Минусы: необходимо заново создавать маршруты с новым идентификатором, если вы удаляете VPN-соединение.
2.3) Используйте командлет PowerShell:
Add-VpnConnectionRoute -ConnectionName '<VPN connection name>' -DestinationPrefix a.b.c.d/<CIDR>
Плюсы: необходимые маршруты добавляются каждый раз, когда VPN-соединение устанавливается и удаляется каждый раз, когда оно отключается.
Минусы: нет Get-VpnConnectionRoutes
командлета, поэтому может быть сложно управлять этими правилами.
3) Проверьте и убедитесь, что маршрутизация работает как положено!
Если вы добавили постоянные маршруты, вы можете проверить их, выполнив netstat -rn | grep -A10 'Persistent Routes'
.
И, наконец, выполните несколько tracert
команд для обоих IP-адресов, к которым предполагается доступ через VPN, и для тех, которые должны работать без VPN.