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

Używaj połączenia VPN tylko dla wybranych aplikacji

Mam dostęp do VPN i chcę go używać tylko dla niektórych aplikacji, nie dla wszystkich.

Na przykład: Jeśli łączę się z VPN, chcę aby tylko aplikacje Opera i Newsbin używały tego połączenia VPN. Wszystkie inne aplikacje, jak np. Outlook, powinny używać normalnego połączenia internetowego (gdy VPN jest połączony/otwarty).

Afaik to nie jest możliwe, ale nie jestem całkowicie pewien. Więc stąd moje pytanie: czy jest to możliwe?

Odpowiedzi (8)

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

Jest to możliwe do osiągnięcia, przynajmniej na Linuksie (i myślę, że na BSD i OS X również). Możesz to zrobić poprzez:

  • Utworzenie użytkownika exra dla całego ruchu VPN.
  • Utwórz dodatkową tabelę routingu z 1 domyślną trasą przez VPN.
  • Skonfiguruj Netfilter poprzez Iptables, aby używał drugiej tabeli routingu dla całego ruchu pochodzącego z określonego ID użytkownika.
  • Uruchom aplikacje, które powinny korzystać z VPN pod własnym użytkownikiem. Na przykład z ‘sudo’.

Istnieją skrypty do wykonania powyższych kroków tutaj lub jest inny przewodnik tutaj .

Tutaj jest szczegółowy przewodnik do routingu Transmisji przez VPN (używając własnego serwera VPN.

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

Możesz użyć Windows Firewall, aby to osiągnąć (pod warunkiem, że używasz Win 7 lub Vista) - Napisałem poradnik na ten temat

  1. Połącz się z VPN jak zwykle.

  2. Otwórz Centrum sieci i udostępniania - kliknij prawym przyciskiem myszy na ikonę połączenia internetowego na pasku zadań i wybierz “Otwórz Centrum sieci i udostępniania” (patrz poniżej)

  3. Powinieneś zobaczyć (co najmniej) dwie sieci wymienione pod “View Your Active Networks” - Twoje połączenie VPN i jedną o nazwie “Network” - a.k.a. Twoje połączenie ISP. Upewnij się, że Twój VPN jest “Siecią publiczną”, a połączenie ISP jest “Siecią domową”. Jeśli chcesz zmienić któreś z tych połączeń, kliknij na nie, a pojawi się okno opcji (patrz poniżej).

  4. Przejdź do Panelu sterowania i kliknij System i zabezpieczenia (patrz poniżej).

  5. W wyświetlonym oknie kliknij Zapora systemu Windows (patrz poniżej).

  6. W oknie Zapora systemu Windows, kliknij Ustawienia zaawansowane w lewym panelu (patrz poniżej). Uwaga: Musisz być zalogowany jako administrator, aby dokonać zmian w Ustawieniach Zapory.

  7. Powinieneś zobaczyć okno zatytułowane Zapora systemu Windows z zabezpieczeniami zaawansowanymi. W tym oknie należy kliknąć Reguły przychodzące (patrz poniżej).

  8. W prawym panelu pojawi się opcja Nowa reguła. Należy ją kliknąć (patrz poniżej).

  9. W kreatorze Nowa reguła przychodząca (który powinien się pojawić) wykonaj następujące czynności:

  10. Powtórz krok 9 dla Reguł Wychodzących.

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

Zrobiłem to na Windowsie. Chodzi o to, aby powiązać wychodzące pakiety sieciowe z interfejsem VPN. Ludzie sugerują ForceBindIP do tego, ale dzięki ta odpowiedź mam pomysł, aby użyć proxy. Wadą tej metody jest to, że albo twoje aplikacje muszą mieć wsparcie dla proxy, albo będziesz musiał użyć proxy (zobacz tutaj i tutaj ). Plusem jest to, że w ten sposób będziesz w stanie ograniczyć korzystanie z VPN w przeglądarce do konkretnych domen za pomocą FoxyProxy lub podobnych dodatków.

Używam 3proxy w trybie SOCKS i binduję jego zewnętrzny interfejs do IP VPN. OpenVPN jest używany do połączenia VPN.

W moim pliku .ovpn (client, dev tun) dodałem te linie:

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 aby zignorować trasy wypychane z serwera. W twoim przypadku może być konieczne wykomentowanie redirect-gateway zamiast tego.

route aby dodać trasę dla tego interfejsu, bez tej linii nie będzie on używany nawet jeśli aplikacja jest do niego przypisana.

pull-filter aby zachować pchane DNS, które w przeciwnym razie zostaną porzucone przez route-nopull razem z pchanymi trasami. Opcja ta jest obsługiwana od wersji OpenVPN 2.4, jeśli musisz pozostać przy OpenVPN 2.3 (ostatnie wydanie dla Windows XP), będziesz musiał dodać dwie linie dhcp-option DNS x.x.x.x z twardo zakodowanymi IP.

script-security 2 aby umożliwić skryptowanie.

up skrypt:

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 skrypt:

taskkill /f /im 3proxy.exe

W ten sposób, po połączeniu się z VPN przy użyciu tego configu, proces 3proxy.exe zostanie uruchomiony, a na porcie 1080 będzie działało ograniczone do localhost proxy SOCKS5 z możliwością rozwiązywania DNS, teraz wystarczy skonfigurować swoją aplikację do korzystania z localhost:1080 SOCKS proxy.

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

Możesz to zrobić za pomocą sieciowych przestrzeni nazw w systemie GNU/Linux.

Oto jak uruchomić OpenVPN i pojedynczą aplikację w oddzielnej przestrzeni nazw:

Utwórz sieciową przestrzeń nazw net:

ip netns add myvpn

Uruchom interfejs loopback w przestrzeni nazw (w przeciwnym razie wiele rzeczy nie działa zgodnie z oczekiwaniami…)

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

Utwórz wirtualne interfejsy sieciowe, które pozwolą OpenVPN (w przestrzeni nazw) uzyskać dostęp do prawdziwej sieci, i skonfiguruj interfejs w przestrzeni nazw (vpn1), aby używał interfejsu poza przestrzenią nazw (vpn0) jako domyślnej bramy

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

Włącz routing IPv4 i NAT dla interfejsu w przestrzeni nazw. Ponieważ mój domyślny interfejs jest bezprzewodowy, używam wl+ (co może odpowiadać wlan0, wlp3s0, itp. ) w iptables dla interfejsu wychodzącego; Jeśli używasz interfejsu przewodowego, powinieneś prawdopodobnie użyć en+ (lub br+ dla interfejsu zmostkowanego)

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

Skonfiguruj serwer nazw do użycia wewnątrz przestrzeni nazw

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

Prawie gotowe, teraz powinniśmy mieć pełny dostęp do sieci w przestrzeni nazw

ip netns exec myvpn ping www.google.com

W końcu uruchom OpenVPN w przestrzeni nazw

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

Gdy tun0 jest już w przestrzeni nazw, możesz uruchomić program, który chciałeś!

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

ARTYKUŁ ŹRÓDŁOWY

W artykule źródłowym znajduje się również skrypt wrapper, który możesz dostosować do swoich potrzeb.

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

Jeśli jesteś na linuxie i używasz openVPN, VPNShift działa pięknie.

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

Wiem, że jest to późna odpowiedź, na którą właśnie natknąłem się, ale na wypadek, gdyby to było istotne dla kogoś, miałem te same okoliczności, w których chciałem uruchomić mój ruch roboczy przez VPN, ale nie chciałem, aby mój osobisty ruch był kierowany przez ich serwery proxy i takie tam. Więc miałem wtedy Win7, ale oni wciąż używali WinXP na wielu swoich systemach. W końcu dali mi drugi komputer do pracy, co rozwiązało problem (switchbox podłączony do obu komputerów, mogłem po prostu przeskakiwać tam i z powrotem), ale przed tym uruchomiłem Virtual XP, który ustawiłem jako mój roboczy OS… I byłoby VPN w z powiedział VM połączyć się z pracy, która pozostawiłaby mój osobisty ruch OS wolne od pracy ograniczeń i szpiegowania.

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

Wystarczy uzyskać dostęp do VPN poprzez maszynę wirtualną.

  1. Utwórz maszynę wirtualną, a następnie z jej wnętrza…
  2. Zainstaluj ‘wybrane’ aplikacje
  3. Skonfiguruj VPN

Użyj ‘wybranych’ aplikacji z maszyny wirtualnej zamiast używać ich z maszyny głównej.

P.S. Musisz oczywiście zapewnić dostęp do sieci maszynie wirtualnej poprzez maszynę główną.

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

Nie, nie jest. Cóż, nie przy użyciu normalnych środków. Routing to routing. Routing działa niżej w modelu OSI. To, czego potrzebujesz, to świadomość na poziomie aplikacji (wyżej), aby mógł wykryć, jakiego programu używasz itd. NORMALNE routery nie pozwalają na konfigurowanie tras w oparciu o aplikacje lub numery portów.

Myślę jednak, że jest to możliwe. Routery widzą porty, więc możesz filtrować je według numerów portów i wysyłać ruch różnymi trasami. Jestem pewien, że czytałem coś jakiś czas temu o routerach Cisco, które to potrafią. Nie są one jednak tanie i są to routery biznesowe, które wymagają dużo konfiguracji i zgaduję, że chcesz coś prostego do użytku domowego.

Podsumowując jest to router, który będzie potrzebował tej funkcji i twój bog standardowe te do użytku domowego, nawet biznes nie obsługują tych funkcji. Tylko zaawansowane linie Cisco i Sonicwalls oferują takie możliwości.