“Короткий” путеводитель для таких, как я, которые мало что знают о сетях. Здесь не много нового, но краткое изложение всех хороших вариантов, описанных в предыдущих ответах и в других смежных темах. Вся процедура состоит из 3 основных шагов:
1) Сделайте так, чтобы all traffic НЕ проходил через VPN. Для этого вы должны снять галочку с Use default gateway on remote network
в настройках VPN. Убедитесь, что вы сняли этот флажок для IPv4 и IPv6. Обычно я просто полностью отключаю протокол IPv6 для VPN соединения.
(!) Возможно (иногда), что снятия флажка будет достаточно для нормальной работы - по моему опыту, необходимые маршруты (которые будут направлять необходимый трафик через VPN) могут быть добавлены автоматически после установки VPN соединения. Я не знаю точно, где и как настроены эти правила, но такой сценарий существует - возможно, это какое-то волшебство делают администраторы VPN сети.
2) Сделайте только necessary трафик, проходящий через 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 соединения. Этот ID можно найти, выполнив netstat -rn
, или, для более компактного вывода, netstat -rn | grep -A10 'Interface List'
.
Плюсы: не нужно ничего менять, если ваш VPN адрес (w.x.y.z
) изменится.
Против: нужно воссоздавать маршруты с новым ID, если вы удаляете VPN соединение.
- 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.