Как я могу настроить трафик для маршрутизации Windows VPN (по сети назначения)?

Я хочу использовать Windows VPN, но только для конкретной сети, чтобы он не охватывал все мое сетевое соединение.

Например, вместо того, чтобы VPN стал маршрутом по умолчанию, сделайте его только маршрутом для 192.168.123.0/24

(Я вижу, что для Ubuntu в этом вопросе есть решение, но иногда мне приходится делать это и в Windows)

Может ли это быть автоматизировано, так что всякий раз, когда я подключаюсь к VPN, он это делает?

Вы можете отключить все свое соединение, перейдя в свойства VPN, вкладки « Networking », свойства « Internet Protocol (TCP/IP) , « Advanced , «Отключить» Use default gateway on remote network . Это может привести или не оставить маршрут до 192.168.123.0/24 зависимости от настройки VPN-сервера. Если это не так, вам придется вручную добавлять маршрут каждый раз, хотя вы можете поместить его в пакетный файл.

Чтобы вручную добавить маршрут, запустите (как администратор):

 route -p add 192.168.0.12 mask 255.255.255.255 10.100.100.254 

В этом примере будет выполняться постоянный (нет необходимости запускать команду после перезагрузки) маршрут до IP 192.168.0.12 через шлюз VPN 10.100.100.254 .

Подробнее об этом можно узнать по адресу http://technet.microsoft.com/en-us/library/bb878117.aspx

Для этого я успешно использовал технику @ TRS-80 .

Я работаю из дома и получаю VPN в корпоративную сеть для своей электронной почты (я ненавижу веб-почту !!).

В то же время мне нужно постоянно заниматься серфингом для информации, а также вам нужна ваша музыка для моей фоновой музыки … Теперь вы определенно не хотите транслировать youtube с VPN, поскольку это звучит как Robot Singing !!! 🙂

Все, что я сделал, это следовать @ TRS-80:

Свойства VPN, вкладка «Сеть», «Свойства протокола Интернета (TCP / IP)», «Дополнительно», «Отключить» «Использовать шлюз по умолчанию в удаленной сети»,

А затем сделал свое:

Под вкладкой DNS, отметьте «зарегистрируйте эти адреса соединений в DNS»

Все работает без проблем!

Этот ответ не отражает ваш запрос, но я использую виртуальную машину специально для этой цели. Таким образом, только сеть внутри виртуальной машины ограничена маршрутами.

Вы можете найти несколько лучших ответов других людей, но, по крайней мере, это может дать вам что-то, что можно считать простым решением после создания виртуальной машины.

Я обнаружил, что для непосредственного указания интерфейса в команде маршрута необходимо. Без него Windows будет использовать интерфейс основной сетевой карты, а не VPN. В моем случае это выглядит так:

 route -p add 192.168.10.187 mask 255.255.255.255 0.0.0.0 IF 26 :: ^destination ^mask ^gateway ^interface 

Обратите внимание на «IF 26».

Если у вас есть как IPV4, так и IPV6, вы должны снять флажок «Использовать шлюз по умолчанию в удаленной сети» в обоих местах, даже если вы используете только IPV4

Если вы используете CMAK и настроите файл маршрутизации, который клиент может загрузить … Windows загрузит файл маршрутизации и, при необходимости, настроит маршруты. Существуют опции для удаления маршрута по умолчанию … и добавления различных статических маршрутов и т. Д. Это известно как сплит-туннель.

Здесь есть что-то хорошее: http://blogs.technet.com/b/rrasblog/archive/2007/06/11/split-tunnelling-using-cmak.aspx

Немного старый, но я нашел способ сделать это, используя другую машину. У меня есть ноутбук, где я настроил VPN-соединение, и там у меня есть FreeProxy, настроенный с помощью Socks5 ..

Затем я настроил firefox на моей клиентской машине, чтобы использовать прокси-сервер ноутбука. В результате я использую FireFox или что-то, что настроено для использования этого прокси-сервера Socks5, оно будет использовать VPN, иначе оно будет использовать стандартную маршрутизацию.

Не нашел бесплатное решение для моих нужд. И я написал это сам.

Если вы хотите работать с некоторыми VPN-серверами с динамическим IP-адресом клиента и сервера, вы можете попробовать бесплатный инструмент http://www.latestbit.com/winvpnhelper

Вы можете использовать что-то вроде netcatcher – просто добавьте все маршруты, которые вам нужны, и забудьте об этом. Он будет автоматически добавлять и удалять маршруты при подключении или отключении сеанса VPN. Если ваш IP-адрес VPN будет динамически получен (DHCP), netcatcher поймает его и правильно настроит маршруты.

Из форума: http://forum.ixbt.com/topic.cgi?id=14:43549

Сохранить как файл (например: vpn_route.vbs) и после команды vpn connect execute

 cscript vpn_route.vbs 

vpn_route.vbs:

 strComputer = "." strMACAddress = "MAC of VPN interface here (example 00:45:55:00:00:00)" strTarget = "route target here (example 192.168.123.0)" strMask = "mask here (example 255.255.255.0)" Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set colItems = objWMIService.ExecQuery _ ("Select * From Win32_NetworkAdapterConfiguration Where MACAddress = '" & strMACAddress & "'") For Each objItem in colItems strIP = objItem.IPAddress(0) Next Set objShell = CreateObject("WScript.Shell") objShell.Run "route add " & strTarget & " mask " & strMask & " " & strIP 

Это невозможно сделать в Windows без использования дополнительных программ, пакетных файлов или командной строки. Альтернативой является получение виртуальной (или физической) машины, на которой вы можете запустить VPN.

Кажется странным, что так легко объяснить, что это так трудно достичь. Насколько сложно было просто перенаправить трафик с одной программы на VPN-интерфейс и все другие программы на интерфейс NIC по умолчанию? Зачем нам нужно настроить для этого целую виртуальную машину? И с Linux это возможно, но его решение также не очень изящно.

Это очень востребовано: я наткнулся на десятки тем по одной теме. Поэтому я только надеюсь, что кто-то осознает смехотворность этого и что-то с этим поделает. (В Windows 8!)

Это решение из неавтоматизированного командного файла . Он был слегка адаптирован.

Инструкции для Windows 7

Сценарий будет подключаться и маршрутизировать трафик через VPN до перезагрузки – вы можете заменить route add с помощью route -p add для сохранения, но если у вас нет постоянного IP-адреса с вашей VPN, он в конечном итоге прекратит работу Когда ваш IP-адрес VPN изменяется.

  1. Откройте Центр управления сетями и общим доступом
  2. Откройте свойства для VPN-подключения
  3. Перейдите на вкладку « Networking »
  4. Для IPv4 и 6:
    1. Щелкните Properties
    2. Нажмите Advanced
    3. Снимите флажок Use default gateway[...]
  5. Закрыть все, что было открыто с предыдущих шагов
  6. Редактируйте и сохраните приведенный ниже пакетный скрипт
  7. Запустить его как администратора

Вам нужно заменить в скрипте следующее:

  • <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 

Я хочу добавить свое решение в микс. Он работает на оболочке UNIX под управлением Cygwin в Windows 7 или новее, но также должен работать с MSYS2, Bash-on-Windows [WSL] после сборки 14986 или Busybox для Windows). Необходимо запускать с правами администратора.

Он имеет некоторые настройки и пытается обнаружить некоторые из вещей, которые вы явно не задали. Он также явно устанавливает номер интерфейса (IF), чтобы противостоять некоторым проблемам, которые некоторые пользователи (например, я) имели с другими решениями здесь.

 #!/bin/sh # these three settings are required adapter_name='VPN Connection' username= password= # This setting here might be important because it's about the target network # and in some cases it can't be properly determined automatically so this might # be then worth setting. # Format is in CIDR notation with the network address and a forward slash and # the amount of network bits target_network=192.168.0.0/24 # the IP you will get on the target network, also the VPN gateway on your # local machine, you normally don't need to set this as the script tries to # detect it ip= # optional setting for metric which normally shouldn't be necessary, # except in te very rare cases where it should be set to a value lower than all # other routes that might match the target network metric= # experimental setting to delete routes to the target network prior and after # should normally not be needed unless this script fails and you get error # messages like 'The route addition failed: The object already exists.' route_cleanup=F prog_name=${0##*/} msg() { printf '%s: %s\n' "$prog_name" "$*" } die() { msg "$*" >&2 exit 1 } [ "$adapter_name" ] || die "Adapter name not set!" [ "$username" ] || die "Username not set!" [ "$password" ] || die "Password not set!" if [ "$(uname -o)" != 'MS/Windows' ]; then id -G | grep -qE '\<0|544\>' || die 'Not running with admin rights.' fi msg "Disconnecting any existing connection that might exist." rasdial.exe "$adapter_name" /d msg "Connecting" rasdial.exe "$adapter_name" "$username" "$password" if [ ! "$ip" ]; then msg "Getting IP address on target network." ip=$(netsh.exe interface ip show config name="$adapter_name" | grep -a 'IP Address' | awk -F'[: ]+' '{print $4}') [ "$ip" ] || die 'Could not get IP! Exiting.' msg "Detected IP address as '$ip'." fi if [ ! "$target_network" ]; then msg "Getting target network." target_network=$(netsh.exe interface ip show config name="$adapter_name" | grep -a 'Subnet Prefix' | awk -F'[: ]+' '{print $4}') [ "$target_network" ] || die 'Could not get target network! Exiting.' msg "Detected target network as '$target_network'." fi msg "Getting VPN interface number." if=$(ROUTE.EXE print -4 | grep -a "$adapter_name" | awk -F. '{gsub(" ", "");print $1}') [ "$if" ] || die 'Could not get interface number! Exiting.' msg "Detected VPN interface number as '$if'." if [ "$route_cleanup" = T ]; then msg "Deleting any potentially already existing routes for the target network." ROUTE.EXE delete "$target_network" fi msg "Adding route for target network." if [ "$metric" ]; then ROUTE.EXE add "$target_network" "$ip" IF "$if" Metric "$metric" else ROUTE.EXE add "$target_network" "$ip" IF "$if" fi msg "VPN should be up now." msg "Press enter to make it stop." read -r _ if [ "$route_cleanup" = T ]; then msg "Deleting route." ROUTE.EXE delete "$target_network" fi msg "Disconnecting." rasdial.exe "$adapter_name" /d # msg "Press enter to exit." # read -r _ exit 0 

Также стоит отметить, что может потребоваться вручную установить низкую метрику, иначе маршрут по умолчанию будет соответствовать перед трафиком, предназначенным для VPN. Вы делаете это, перейдя к настройке адаптера, где вы открываете пункт меню «… Свойства» для адаптера VPN → вкладка «Сеть»«Свойства протокола IP версии 4 (TCP / IP)»«Дополнительно» → и там вы снимите флажок Флажок «Автоматическая метрика» (в дополнение к «Использовать шлюз по умолчанию …» ) и установить значение в поле «Interface metric:» на значение, меньшее, чем маршрут по умолчанию (см. ROUTE.EXE -4 print ) ,

  • Балансировка нагрузки с несколькими шлюзами
  • Не удалось подключиться к PPTP VPN в Ubuntu: отключен плагин VPN: 1
  • Как заставить Windows 7 использовать определенные сетевые адаптеры для каждой программы?
  • Как определить мой фактический внешний IP-адрес через командную строку Windows во время VPN
  • Перенаправление портов после NAT класса несущей?
  • Может ли VPN увидеть использование веб-браузера?
  • Как вы можете автоматически запускать скрипт после подключения к VPN на OS X?
  • Как заблокировать определенный сайт с помощью файла hosts, даже если я подключен к VPN?
  • Tomato Dual VLAN (где один из них туннелируется VPN)
  • Windows 7 VPN как не туннелировать интернет?
  • Может ли работодатель отслеживать использование IP-адресов на домашних компьютерах через VPN?
  • Давайте будем гением компьютера.