2011-06-07 12:51:27 +0000 2011-06-07 12:51:27 +0000
44
44

Используйте VPN-соединение только для выбранных приложений

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

Например: Если я подключаюсь к VPN, я хочу, чтобы только приложения Opera и Newsbin использовали это VPN-соединение. Все остальные приложения, такие как Outlook, должны использовать обычное соединение с Интернетом (в то время как VPN подключен/открыт).

Afaik это невозможно, но я не совсем уверен. Поэтому мой вопрос: возможно ли это?

Ответы (8)

37
37
37
2013-09-12 01:28:23 +0000

Этого можно добиться, по крайней мере, на Linux (и я думаю также о BSD и OS X). Вы можете сделать это с помощью:

  • Создайте пользователя exra для всего VPN трафика.
  • Создайте дополнительную таблицу маршрутизации с 1 маршрутом по умолчанию через VPN.
  • Настройте Netfilter через Iptables, чтобы использовать другую таблицу маршрутизации для всего трафика, исходящего из определенного идентификатора пользователя.
  • Запустите приложения, которые должны использовать VPN под своим пользователем. Например, с помощью ‘sudo’.

Есть скрипты для выполнения вышеописанных шагов здесь или есть другое руководство здесь .

Вот подробное руководство для маршрутизации передачи через VPN (используя VPN сервер, которым вы владеете.

14
14
14
2011-07-07 16:01:13 +0000

Для этого можно использовать брандмауэр Windows (при условии, что вы используете Win 7 или Vista) - Я написал руководство по этому

  1. Подключайтесь к VPN как обычно.

  2. Откройте Центр Сети и Общего доступа - щелкните правой кнопкой мыши по значку Интернет-соединения на панели задач и выберите “Открыть Центр Сети и Общего доступа” (смотрите ниже)

  3. Вы должны увидеть (по крайней мере) две сети, перечисленные в разделе “Просмотр ваших активных сетей” - ваше VPN соединение и одну под названием “Сеть” - так же известную, как и ваше ISP Соединение. Убедитесь, что ваша VPN - “Общественная Сеть”, а ваше ISP соединение - “Домашняя Сеть”. Если вам нужно изменить любое из этих соединений, щелкните по нему и появится окно с опциями (см. ниже).

  4. Перейдите на Панель управления и нажмите кнопку Система и безопасность (см. ниже). В появившемся окне нажмите Брандмауэр Windows (см. ниже).

  5. В окне Брандмауэр Windows Firewall нажмите кнопку Дополнительные параметры на левой панели (см. ниже). Примечание: Вы должны войти в систему как администратор, чтобы внести изменения в Параметры брандмауэра.

  6. Вы должны увидеть окно под названием Брандмауэр Windows с расширенной безопасностью. В этом окне нажмите Входящие правила (см. ниже).

  7. В правой панели вы увидите опцию Новое правило. Нажмите на нем (см. ниже).

  8. В Мастере создания нового входящего правила (которое должно появиться) сделайте следующее:

  9. Повторите Шаг 9 для Исходящих Правил.

5
5
5
2017-05-29 07:03:30 +0000

Я делал это на Windows. Идея заключается в том, чтобы связать исходящие сетевые пакеты с интерфейсом VPN. Люди предлагают для этого ForceBindIP , но благодаря этот ответ у меня появилась идея использовать прокси. Недостатком этого метода является то, что либо ваши приложения должны иметь поддержку прокси, либо вы должны использовать прокси (смотрите здесь и здесь ). Недостаток в том, что таким образом вы сможете ограничить использование VPN в браузере определенными доменами, используя FoxyProxy или подобные дополнения.

я использую 3proxy в режиме SOCKS и привязываю его внешний интерфейс к IP VPN. OpenVPN используется для VPN-соединения.

В мой .ovpn файл (client, dev tun) я добавил эти строки:

route-nopull
route 0.0.0.0 0.0.0.0 vpn_gateway
pull-filter ignore "dhcp-option DNS "
script-security 2
up 'c:\path\to\up.cmd'
down 'c:\path\to\down.cmd'

route-nopull для игнорирования маршрутов, протолкнутых с сервера. В вашем случае вам может понадобиться прокомментировать out redirect-gateway вместо этого.

route для добавления маршрута для этого интерфейса, без этой строки он не будет использоваться, даже если приложение к нему привязано.

pull-filter для сохранения подталкиваемого DNS, который в противном случае будет обнулен route-nopull вместе с подталкиваемыми маршрутами. Эта опция поддерживается, начиная с OpenVPN 2.4, если вам нужно придерживаться OpenVPN 2.3 (последняя версия для Windows XP), вам придется добавить две строки dhcp-option DNS x.x.x.x с жестко закодированными IP-адресами.

script-security 2 для разрешения скриптинга.

up скрипт:

cd %~dp0
echo auth none> 3proxy-openvpn.conf
echo internal 127.0.0.1>> 3proxy-openvpn.conf
echo external %4>> 3proxy-openvpn.conf
echo socks>> 3proxy-openvpn.conf
start /b 3proxy.exe 3proxy-openvpn.conf

down скрипт:

taskkill /f /im 3proxy.exe

Таким образом, после подключения к VPN с помощью этой конфигурации, будет запущен процесс 3proxy.exe и на порту 1080 будет запущен локальный SOCKS5 прокси с возможностью разрешения DNS, теперь просто настройте ваше приложение на использование localhost:1080 SOCKS прокси.

4
4
4
2017-10-25 10:36:54 +0000

Это можно сделать с помощью сетевых пространств имён в GNU/Linux.

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

Создайте сетевое пространство имён:

ip netns add myvpn

Запустите интерфейс обратной связи в пространстве имён (иначе многие вещи работают не так, как ожидалось…)

Создайте виртуальные сетевые интерфейсы, которые позволят OpenVPN (в пространстве имён) получить доступ к реальной сети, и настроить интерфейс в пространстве имен (vpn1) на использование интерфейса вне пространства имен (vpn0) в качестве шлюза по умолчанию

ip netns exec myvpn ip addr add 127.0.0.1/8 dev lo
ip netns exec myvpn ip link set lo up

Включить маршрутизацию IPv4 и NAT для интерфейса в пространстве имен. Поскольку мой стандартный интерфейс беспроводной, я использую wl+ (который может совпадать с wlan0, wlp3s0 и т.д.). ) в iptables для исходящего интерфейса; если вы используете проводной интерфейс, вы, вероятно, должны использовать en+ (или br+ для bridged interface)

ip link add vpn0 type veth peer name vpn1
ip link set vpn0 up
ip link set vpn1 netns myvpn up
ip addr add 10.200.200.1/24 dev vpn0
ip netns exec myvpn ip addr add 10.200.200.2/24 dev vpn1
ip netns exec myvpn ip route add default via 10.200.200.1 dev vpn1

Настройте сервер имён для использования внутри пространства имён

iptables -A INPUT \! -i vpn0 -s 10.200.200.0/24 -j DROP
iptables -t nat -A POSTROUTING -s 10.200.200.0/24 -o wl+ -j MASQUERADE
sysctl -q net.ipv4.ip_forward=1

Почти готово, Теперь мы должны иметь полный сетевой доступ в пространстве имён

mkdir -p /etc/netns/myvpn
echo 'nameserver 8.8.8.8' > /etc/netns/myvpn/resolv.conf

Наконец-то запустите OpenVPN в пространстве имён

ip netns exec myvpn ping www.google.com

Как только tun0 окажется в пространстве имён, вы готовы запустить нужную программу!

ip netns exec myvpn openvpn --config /etc/openvpn/myvpn.conf

статья SOURCE.

Также есть скрипт обертки в статье исходного текста, который вы можете адаптировать под свои нужды.

1
1
1
2018-07-12 16:19:29 +0000

Если вы на Линуксе и используете openVPN, VPNShift работает прекрасно.

0
0
0
2019-09-12 14:47:21 +0000

Я знаю, что это очень запоздалый ответ, который я только что получил, но в случае, если это когда-нибудь будет иметь отношение к кому-то, у меня было то же самое обстоятельство, когда я хотел пропускать свой рабочий трафик через VPN, но не хотел, чтобы мой личный трафик проходил через их прокси-серверы и так далее. Так что я тогда запускал Win7, но они все еще запускали WinXP на многих своих системах. В конце концов, они просто дали мне 2-й ПК для работы, что решило проблему (коммутатор, подключенный к обоим ПК, мог просто прыгать туда-сюда), но до этого я запустил Virtual XP, который я установил как мою рабочую операционную систему…. Я использовал VPN с упомянутой ВМ для подключения к работе, что оставляло мой личный трафик ОС свободным от рабочих ограничений и шпионажа.

0
0
0
2018-01-16 01:54:06 +0000

Просто получи доступ к VPN через виртуальную машину.

  1. Создайте ВМ, затем изнутри ВМ…
  2. Установите ‘выбранные’ приложения
  3. Настройте VPN

Использовать ‘выбранные’ приложения с ВМ вместо того, чтобы использовать их с главной машины.

P.S. Конечно, вам нужно дать сетевой доступ к ВМ через хост-машину.

-1
-1
-1
2011-06-10 22:32:46 +0000

Нет, это не так. Ну, не используя нормальные средства. Маршрутизация - это маршрутизация. Маршрутизация работает ниже модели OSI. Что вам нужно, так это знать на уровне аппликации (выше), чтобы она могла определить, какую программу вы используете и т.д. НОРМАЛЬНЫЕ маршрутизаторы не позволяют вам настраивать маршруты, основанные на приложениях или номерах портов. Однако, я думаю, что это возможно. Маршрутизаторы могут видеть порты, поэтому вы можете фильтровать их по номерам портов и посылать трафик по разным маршрутам. Я уверен, что некоторое время назад я читал что-нибудь о маршрутизаторах Cisco, которые могут это сделать. Однако они не дешевые, и это маршрутизаторы для бизнеса, которые требуют много настройки, и я думаю, что вам нужно что-то простое для домашнего использования.

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

Похожие вопросы

3
19
3
10
7