Это не может быть сделано в Windows без использования дополнительных программ, командных файлов или командной строки. Альтернативой является получение виртуальной (или физической) машины, на которой вы можете запустить VPN.
Кажется странным, что что-то так легко объяснимо, как это так трудно достичь. Насколько сложно может быть просто перенаправить трафик от одной программы к интерфейсу VPN, а все остальные программы - к интерфейсу сетевого адаптера по умолчанию? Зачем нам нужно настраивать целую виртуальную машину для этого? А с Linux это возможно, но и его решение не очень элегантно.
Это тоже очень востребовано: я наткнулся на десятки тем на эту тему. Поэтому я только надеюсь, что кто-то осознает нелепость этого и что-то с этим сделает. (В Windows 8!)
Это решение взято из неназванного командного файла. Это было немного адаптировано.
Инструкция для Windows 7
Сценарий будет подключаться и маршрутизировать трафик через VPN до перезагрузки - вы можете заменить route add
на route -p add
чтобы изменение сохранялось, но если у вас нет постоянного IP в VPN, он в конечном итоге перестанет работать когда ваш VPN IP-адрес меняется.
- Откройте Центр управления сетями и общим доступом
- Откройте свойства для вашего VPN-подключения
- Нажмите вкладку
Networking
- Для IPv4 и 6:
- Нажмите
Properties
- Нажмите
Advanced
- Снимите флажок
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