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

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

например:


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

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

5
задан user
28.04.2023 14:45 Количество просмотров материала 3308
Распечатать страницу

7 ответов

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

Я думаю, что это возможно. Маршрутизаторы могут видеть порты, поэтому вы можете фильтровать их по номеру порта и отправлять трафик по различным маршрутам. я уверен я прочитал что-то некоторое время назад с маршрутизаторами Cisco, которые могут это сделать. Они не дешевы, хотя и они бизнес-маршрутизаторы, которые требуют много конфигурации, и я предполагаю, что вы хотите что-то простое для домашнего использования.

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

0
отвечен Mucker 2023-04-29 22:33

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

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

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

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

29
отвечен Freeaqingme 2023-04-30 00:50

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

  1. подключение к VPN, как обычно.

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

  3. вы должны увидеть (по крайней мере) две сети перечислены в разделе "Просмотр активных сетей" - VPN-подключение и один называется " Сеть" - a.k.a. подключение к интернет-провайдеру. Убедитесь, что VPN является " общедоступным Сеть" и подключение к провайдеру "домашняя сеть". Если вам нужно измените соединение, нажмите на него и появится окно настроек (смотреть ниже.)

  4. откройте Панель управления и выберите пункт Система и безопасность (см. ниже).

  5. в появившемся окне выберите Брандмауэр Windows (см. ниже.)

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

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

  8. в правой панели, вы увидите опцию для нового правила. Щелкните по нему (см. ниже.)

  9. в окне Мастера (которая должна появиться), сделайте следующее:

    • выберите программа и нажмите Далее.

    • выберите программу, которую вы хотите заблокировать весь трафик, кроме VPN-подключения и нажмите кнопку Далее.

    • выберите блокировать соединение.

    • отметьте домен и частное. Убедитесь, что общественность остается незамеченной.

  10. повторите шаг 9 для исходящих правил.

14
отвечен pramble 2023-04-30 03:07

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

1
отвечен thouliha 2023-04-30 05:24

я сделал это на Windows. Идея состоит в том, чтобы привязать исходящие сетевые пакеты к интерфейсу VPN. Люди советуют ForceBindIP за это, но спасибо ответ у меня есть идея использовать прокси. Недостатком этого метода является то, что либо ваши приложения должны иметь поддержку прокси, либо вам придется использовать proxifier (см. здесь и здесь). Плюс в том, что таким образом, Вы сможете ограничить использование 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 игнорировать маршруты, отправленные с сервера. В вашем случае вам может потребоваться закомментировать redirect-gateway.

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

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

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 процесс будет запущен и локальный ограниченный SOCKS5 прокси с возможностью разрешения DNS будет работать на 1080 порт, теперь просто настроить приложение, чтобы использовать localhost:1080 SOCKS прокси.

0
отвечен user 2023-04-30 07:41

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

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

создать сетевое пространство имен:

ip netns add myvpn

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

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

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

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

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

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

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

ip netns exec myvpn ping www.google.com

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

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

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

while ! ip netns exec myvpn ip a show dev tun0 up; do sleep .5; done
ip netns exec myvpn sudo -u $MYSELF popcorntime

исходная статья.

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

0
отвечен PocketSam 2023-04-30 09:58

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

  1. создать виртуальную машину, затем внутри ВМ...
  2. установки приложений выделен
  3. настройка VPN

использовать приложения выделен из ВМ вместо использования их из хост-машины.

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

0
отвечен drowa 2023-04-30 12:15

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх