Вопрос: Как я могу настроить трафик на основе VPN VPN (по сети назначения)?


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

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

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

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


125
2017-07-24 09:33


Источник


Есть ли связанный вопрос для фильтрации кучи сайтов через VPN? Похоже, что ответы здесь будут работать только для случая, когда для VPN существует один сайт. Я в Китае, и около половины сайтов, которые я хотел бы использовать, блокируются, поэтому нужно пройти через VPN, но другие сайты быстрее / плавнее без VPN. - hippietrail
Я пошел вперед и задал новый вопрос: superuser.com/questions/925947 - hippietrail


Ответы:


Вы можете отключить захват всего вашего соединения, перейдя в свойства 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


124
2017-07-24 11:11



«Вам придется вручную добавить маршрут» ... как? Как кто-то заставляет, скажем, «192.168.10.123» пройти через vpn, но ничего больше? - Timothy Khouri
Лично я обнаружил, что достаточно отключить флажок. Мне не нужно было добавлять маршруты. Я проверил, что все идет туда, где я ожидаю, что это произойдет через многочисленные трагедии. - eidylon
То же самое, этот флажок был всем, что было необходимо. - Luk
Просьба уточнить. Какой трафик маршрутизируется через VPN? Это просто трафик на IP-адрес VPN-сервера? Например, если VPN-соединение переходит на «my.domain.com», значит, это означает, что весь трафик на клиенте на «my.domain.com» проходит через VPN, а все остальное переходит к шлюзу по умолчанию? - Triynko
Я использовал команду «print print» и подтвердил, что маршруты, созданные Windows 7, были неверными. Он не отправлял трафик, адресованный IP-адресу VPN в VPN ... вместо этого он отправлял его на мой локальный шлюз. В таблице также было несколько круговых записей. Я удалил маршрут, созданный Windows, а затем вручную добавил правильный маршрут, чтобы запись IP-адреса моего VPN-сервера использовала шлюз VPN и локальный IP-адрес клиента для интерфейса. Трафик на мой VPN-сервер затем был успешно маршрутизирован через туннель VPN, и весь другой трафик не был затронут, как ожидалось. Работает хорошо. - Triynko


Я успешно использовал @ TRS-80для достижения этой цели.

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

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

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

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

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

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

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


18
2018-02-28 16:05





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

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


8
2017-07-24 10:09



Это хорошее решение, при условии, что ваше оборудование может справиться с этим хорошо. - Enigma


Я обнаружил, что для непосредственного указания интерфейса в команде маршрута необходимо. Без него 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».


7
2017-09-25 05:41



Это сработало и для меня. Чтобы узнать, какой интерфейс вам нужен, просто выполните команду «print print» и проверьте первые строки, отображающие список доступных интерфейсов (найдите там свою VPN и проверьте его IF - он будет в первом столбце). - Funbit
В этом есть блестящая статья: ссылка, Использование 0.0.0.0, поскольку IP-адрес шлюза по умолчанию, похоже, тоже хорошо работает, поэтому его нельзя корректировать при изменении. Было бы здорово включить в этот ответ, так как imo намного полезнее верхней. - lpd


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


4
2017-07-29 09:03





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

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


3
2018-03-28 18:32





Я хочу добавить свое решение в микс. Он работает на оболочке 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-адаптера → «Сеть» вкладка → «Протокол Интернета версии 4 (TCP / IP)» Недвижимость → "Advanced" → и снимите флажок «Автоматическая метрика» флажок (в дополнение к «Использовать шлюз по умолчанию ...» конечно) и установить значение в «Метрика интерфейса:» поле к значению, меньшему, чем маршрут по умолчанию (см. ROUTE.EXE -4 print вывод).


2
2017-10-26 15:29





использование Надстройка VpnConnectionRoute командлет в Windows 8+.

Add-VpnConnectionRoute -ConnectionName 'My VPN Connection' -DestinationPrefix 192.168.123.0/24

2
2018-01-26 07:11



Это отлично работало для меня в Windows 10. - x-ray


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

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


1
2018-04-20 19:46





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

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


1
2017-12-14 12:41