Это не может быть сделано в Windows без использования дополнительных программ, командных файлов или командной строки. Альтернативой является получение виртуальной (или физической) машины, на которой вы можете запустить VPN.
Кажется странным, что что-то так легко объяснимо, как это так трудно достичь. Насколько сложно было просто перенаправить трафик от одной программы к интерфейсу VPN, а все остальные программы - к интерфейсу сетевого адаптера по умолчанию? Зачем нам нужно настраивать целую виртуальную машину для этого? А с Linux это возможно, но и его решение не очень элегантно.
Это тоже очень востребовано: я наткнулся на десятки тем на эту тему. Поэтому я только надеюсь, что кто-то осознает нелепость этого и что-то с этим сделает. (В Windows 8!)
Это решение взято из неназванного командного файла . Это было немного адаптировано.
Инструкция для Windows 7
Сценарий не будет подключаться к и маршрутизации трафика через VPN до перезагрузки - вы можете заменить route add
с route -p add
на изменение сохранится, но если вы не имеете постоянный IP с VPN, он будет в конечном итоге перестанет работать, когда ваши изменения IP VPN.
- Откройте Центр управления сетями и общим доступом
- Откройте свойства для вашего VPN-подключения
- Нажмите на
Networking
вкладку - Для IPv4 и 6:
- Нажмите
Properties
- Нажмите
Advanced
- Uncheck
Use default gateway[...]
- Закройте все открытые из предыдущих шагов
- Отредактируйте и сохраните пакетный скрипт, найденный ниже
- Запустите его как администратор
Вам необходимо заменить следующее в скрипте:
<VPN>
с именем VPN-соединения, которое вы создали <USER>
с именем пользователя VPN <PASS>
с паролем VPN <TARGET>
с IP-адресом, который вы хотите направить через VPN (если вы хотите направить больше адресов, просто продублируйте три строки, где используется цель)
Примечание: Если вы не хотите, чтобы сохранить пароль в файле, заменить <PASS>
с %password%
и добавить следующее после первой строки сценария: set password= Input password:
.
скрипт
@echo off @echo make sure to be disconnected! rasdial <VPN> /d @echo start to connect to vpn rasdial <VPN> <USER> <PASS> netsh interface ip show config name="<VPN>" | findstr "IP" > ip.dat set /p ip= < ip.dat del ip.dat set ip=%ip:~-12% @echo VPN IP is %ip% set target=<TARGET> @echo Add route for %target% route add %target% mask 255.255.255.255 %ip% timeout /T 3 > nul