Verwenden Sie die VPN-Verbindung nur für ausgewählte Anwendungen


39

Ich habe Zugriff auf ein VPN und möchte es nur für einige Anwendungen verwenden, nicht für alle.

Beispiel:
Wenn ich eine Verbindung zu einem VPN herstelle, sollen nur die Anwendungen Opera und Newsbin diese VPN-Verbindung verwenden. Alle anderen Anwendungen, wie z. B. Outlook, sollten die normale Internetverbindung verwenden (während das VPN verbunden / geöffnet ist).

Afaik das ist nicht möglich, aber ich bin nicht ganz sicher. Also deshalb meine Frage: ist es machbar?


3
Verwandte
Themen

Antworten:


-1

Nein, ist es nicht. Nun, nicht mit normalen Mitteln. Routing ist Routing. Das Routing wird weiter unten im OSI-Modell ausgeführt. Was Sie tun müssen, ist, dass es auf der Anwendungsebene (höher) erkennt, welches Programm Sie verwenden usw. NORMAL-Router erlauben es Ihnen nicht, Routen basierend auf Anwendungen oder Portnummern zu konfigurieren.

Ich denke aber, dass es möglich ist. Router können Ports sehen, sodass Sie sie nach Portnummer filtern und den Datenverkehr über verschiedene Routen senden können. Ich bin sicher, ich habe vor einiger Zeit etwas mit Cisco-Routern gelesen, die dies können. Sie sind jedoch nicht billig und es handelt sich um Business-Router, die viel Konfiguration erfordern, und ich nehme an, Sie möchten etwas Einfaches für den Heimgebrauch.

Zusammenfassend ist es der Router, der diese Funktion benötigt, und Ihre Standard-Router für den Heimgebrauch, selbst Unternehmen unterstützen diese Funktionen nicht. Nur die fortschrittlichen Produkte von Cisco und Sonicwalls bieten diese Funktionen.


36

Dies ist zumindest unter Linux möglich (und ich denke auch an BSD und OS X). Sie können dies tun, indem Sie:

  • Erstellen Sie einen exra-Benutzer für den gesamten VPN-Verkehr.
  • Erstellen Sie eine zusätzliche Routingtabelle mit 1 Standardroute über das VPN.
  • Konfigurieren Sie Netfilter über Iptables so, dass die andere Routingtabelle für den gesamten Datenverkehr verwendet wird, der von einer bestimmten Benutzer-ID stammt.
  • Führen Sie die Anwendungen, die das VPN verwenden sollen, unter ihrem eigenen Benutzer aus. Zum Beispiel mit 'sudo'.

Es gibt Skripte , um die obigen Schritte zum Erreichen hier oder es gibt einen anderen Führer hier .

Hier finden Sie eine detaillierte Anleitung zum Routing der Übertragung über ein VPN (mit einem VPN-Server, den Sie besitzen).


Viel einfacher unter Linux: Erstellen Sie einen Netzwerk-Namespace, verbinden Sie VPN mit diesem Namespace, und führen Sie Anwendungen aus, die den Namespace im VPN verwenden sollen. Sie können sogar zwei Kopien derselben Anwendung ausführen, eine über das VPN und eine über die direkte Verbindung.
12.

15

Sie können die Windows-Firewall verwenden, um dies zu erreichen (vorausgesetzt, Sie verwenden Win 7 oder Vista). Ich habe eine Anleitung dazu geschrieben

  1. Stellen Sie wie gewohnt eine Verbindung zu Ihrem VPN her.

  2. Öffnen Sie das Netzwerk- und Freigabecenter - klicken Sie mit der rechten Maustaste auf das Internetverbindungssymbol in der Taskleiste und wählen Sie "Netzwerk- und Freigabecenter öffnen" (siehe unten).

  3. Sie sollten (mindestens) zwei Netzwerke unter "Aktive Netzwerke anzeigen" sehen - Ihre VPN-Verbindung und eines mit dem Namen "Netzwerk" - auch bekannt als Ihre ISP-Verbindung. Stellen Sie sicher, dass Ihr VPN ein "öffentliches Netzwerk" ist und Ihre ISP-Verbindung "Heimnetzwerk" ist. Wenn Sie eine der Verbindungen ändern müssen, klicken Sie darauf, und ein Optionsfenster wird angezeigt (siehe unten).

  4. Gehen Sie zur Systemsteuerung und klicken Sie auf System und Sicherheit (siehe unten).

  5. Klicken Sie im daraufhin angezeigten Fenster auf Windows-Firewall (siehe unten).

  6. Klicken Sie im Fenster der Windows-Firewall im linken Bereich auf Erweiterte Einstellungen (siehe unten). Hinweis: Sie müssen als Administrator angemeldet sein, um Änderungen an den Firewall-Einstellungen vornehmen zu können.

  7. Es sollte ein Fenster mit dem Titel "Windows-Firewall mit erweiterter Sicherheit" angezeigt werden. Klicken Sie in diesem Fenster auf Eingehende Regeln (siehe unten).

  8. Im rechten Bereich sehen Sie eine Option für eine neue Regel. Klicken Sie darauf (siehe unten).

  9. Führen Sie im Assistenten für neue eingehende Regeln (der angezeigt werden sollte) die folgenden Schritte aus:

    • Wählen Sie Programm und klicken Sie auf Weiter.

    • Wählen Sie das Programm aus, für das Sie den gesamten Datenverkehr mit Ausnahme der VPN-Verbindung blockieren möchten, und klicken Sie auf Weiter.

    • Wählen Sie Verbindung blockieren.

    • Kreuzen Sie Domain und Private an. Stellen Sie sicher, dass die Option "Öffentlich" deaktiviert ist.

  10. Wiederholen Sie Schritt 9 für ausgehende Regeln.


11
Beantwortet dies tatsächlich die Frage? Ja, dies verhindert, dass die App funktioniert, wenn sie nicht mit dem VPN verbunden ist. Der gesamte Datenverkehr wird jedoch weiterhin über das VPN geleitet.
Jason Coyne

3
@pramble Geht der gesamte Datenverkehr noch über den VPN?
nsij22

Scheint zu funktionieren. Ich habe es gerade getestet.
Faiz

Dies behebt es nicht. Dies ist ein sehr einfaches Szenario. Ich möchte, dass alle meine arbeitsbezogenen Daten über das VPN übertragen werden (SQL Server-Verbindungen, Slack usw.), aber ich möchte, dass mein Webbrowser (Facebook, Soundcloud usw., im Grunde genommen der gesamte Datenverkehr von Port 80) NICHT über das VPN übertragen wird . Windows ist zum Kotzen, wenn dies nicht möglich ist.
Triynko

@Triynko Ihr Szenario unterscheidet sich erheblich von dem Szenario, für das Sie ein OP beantragt haben. Nach dem Herstellen der Verbindung zum VPN können Sie einfach die entsprechenden Routen für Ihre Arbeitsaufgaben festlegen, dh das VPN-Gateway für alle Arbeits-Subnetze oder IPs verwenden. Das Routing von Verkehr aus bestimmten Anwendungen ist schwieriger zu erreichen.
25.

4

Sie können dies mit Netzwerk-Namespaces unter GNU / Linux tun.

So führen Sie OpenVPN und eine einzelne Anwendung in einem separaten Namespace aus:

Erstellen Sie den Net Network Namespace:

ip netns add myvpn

Starten Sie das Loopback-Interface im Namespace (sonst funktionieren viele Dinge nicht wie erwartet ...)

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

Erstellen Sie virtuelle Netzwerkschnittstellen, über die OpenVPN (im Namespace) auf das reale Netzwerk zugreifen kann, und konfigurieren Sie die Schnittstelle im Namespace (vpn1), um die Schnittstelle außerhalb des Namespace (vpn0) als Standardgateway zu verwenden

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

Aktivieren Sie IPv4-Routing und NAT für die Schnittstelle im Namespace. Da es sich bei meiner Standardschnittstelle um eine drahtlose Schnittstelle handelt, verwende ich in iptables für die ausgehende Schnittstelle wl + (das möglicherweise mit wlan0, wlp3s0 usw. übereinstimmt). Wenn Sie eine kabelgebundene Schnittstelle verwenden, sollten Sie wahrscheinlich en + (oder br + für eine überbrückte Schnittstelle) verwenden.

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

Konfigurieren Sie den Nameserver für die Verwendung im Namespace

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

Fast fertig, jetzt sollten wir vollen Netzwerkzugriff im Namespace haben

ip netns exec myvpn ping www.google.com

Starten Sie schließlich OpenVPN im Namespace

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

Sobald sich tun0 im Namespace befindet, können Sie das gewünschte Programm starten!

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

QUELLE Artikel.

Außerdem gibt es im Quellartikel ein Wrapper-Skript, das Sie an Ihre Bedürfnisse anpassen können.


3

Ich habe das unter Windows gemacht. Die Idee ist, die ausgehenden Netzwerkpakete an die VPN-Schnittstelle zu binden. Die Leute schlagen ForceBindIP dafür vor, aber dank dieser Antwort habe ich eine Idee, einen Proxy zu verwenden. Der Nachteil dieser Methode ist, dass entweder Ihre Apps Proxy-Unterstützung haben müssen oder Sie einen Proxifier verwenden müssen (siehe hier und hier ). Der Vorteil ist, dass Sie auf diese Weise die Verwendung von VPN im Browser mithilfe von FoxyProxy oder ähnlichen Add-Ons auf bestimmte Domänen beschränken können.

Ich verwende 3proxy im SOCKS-Modus und binde seine externe Schnittstelle an die IP des VPN. OpenVPN wird für die VPN-Verbindung verwendet.

In meiner .ovpn-Datei ( client, dev tun) habe ich folgende Zeilen hinzugefügt:

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-nopullum vom Server übertragene Routen zu ignorieren. In Ihrem Fall müssen Sie stattdessen möglicherweise das Redirect-Gateway auskommentieren.

route Um eine Route für diese Schnittstelle hinzuzufügen, wird sie ohne diese Zeile nicht verwendet, auch wenn die App daran gebunden ist.

pull-filterum Push-DNS beizubehalten, die andernfalls route-nopullzusammen mit den Push-Routen gelöscht werden . Diese Option wird ab OpenVPN 2.4 unterstützt. Wenn Sie sich an OpenVPN 2.3 (neueste Version für Windows XP) halten müssen, müssen Sie dhcp-option DNS x.x.x.xstattdessen zwei Zeilen mit fest codierten IP-Adressen hinzufügen .

script-security 2 Scripting zu ermöglichen.

up Skript:

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

taskkill /f /im 3proxy.exe

Nachdem Sie mit dieser Konfiguration eine VPN-Verbindung 3proxy.exehergestellt haben, wird der Prozess gestartet und auf dem 1080Port wird ein SOCKS5-Proxy mit lokaler Host-Beschränkung und DNS-Auflösung ausgeführt. Konfigurieren Sie nun Ihre App für die Verwendung von localhost:1080SOCKS-Proxy.


Ich bekomme Options error: option 'route' cannot be used in this context ([PUSH-OPTIONS])und Options error: option 'redirect-gateway' cannot be used in this context ([PUSH-OPTIONS]). Trotzdem funktioniert diese Lösung. Wenn Sie die Apostrophe für das Abwärts- und Aufwärtsskript überspringen, verwenden Sie doppelte c:\\path\\to\\script
umgekehrte

1

Wenn Sie unter Linux arbeiten und openVPN verwenden, funktioniert VPNShift hervorragend .


Bitte posten Sie nicht die gleiche Antwort auf mehrere Fragen. Wenn dieselben Informationen tatsächlich beide Fragen beantworten, sollte eine Frage (normalerweise die neuere) als Duplikat der anderen geschlossen werden. Sie können dies anzeigen, indem Sie abstimmen, um es als Duplikat zu schließen, oder, wenn Sie nicht genug Reputation dafür haben , ein Flag setzen, um anzuzeigen, dass es sich um ein Duplikat handelt. Passen Sie andernfalls Ihre Antwort auf diese Frage an und fügen Sie dieselbe Antwort nicht an mehreren Stellen ein.
DavidPostill

4
Ist die Tatsache, dass es "die gleiche Antwort auf mehrere Fragen" ist, so wichtig? Die Frage existiert, sie ist (noch) nicht als Duplikat gekennzeichnet, und sie ist eine gute Antwort. Sie verdient es also zu existieren. Vielen Dank @ Thouliha 🙂.
Ronan Jouchet

0

Greifen Sie einfach über eine virtuelle Maschine auf das VPN zu.

  1. Erstellen Sie eine VM, dann aus dem Inneren der VM ...
  2. Installieren Sie die 'ausgewählten' Anwendungen
  3. Konfigurieren Sie das VPN

Verwenden Sie die 'ausgewählten' Anwendungen von der VM, anstatt sie vom Hostcomputer zu verwenden.

PS Sie müssen der VM natürlich über den Host-Computer Netzwerkzugriff gewähren.


Dies erwähnt nur einen Ansatz, der bereits in anderen Antworten ausführlich beschrieben wurde.
Fixer1234

1
@ fixer1234: Niemand erwähnte virtuelle Maschinen.
Drowa

Können Sie Ihre Antwort auf etwas Handlungsfähigeres erweitern (erklären Sie das Wie)? In den anderen Antworten im Thread finden Sie eine Vorstellung von der Detailstufe. Nur einen Hinweis für eine Richtung zu geben, die verfolgt werden soll, würde in einen Kommentar einfließen, der etwas mehr Wiederholung erfordert.
Fixer1234

Ich habe zuerst einen Kommentar versucht, aber das System hat es mir nicht erlaubt, weil ich weniger als 50 Punkte habe. Ich werde dann versuchen, die Antwort zu erweitern.
Drowa

Dies ist die Idee, die ich mir ausgedacht habe, und sie funktioniert ohne komplizierte Routing-Konfiguration auf der Sysadmin-Seite.
Mittwoch,

0

Ich weiß, dass dies eine viel zu späte Antwort ist, auf die ich gerade gestoßen bin, aber für den Fall, dass sie für jemanden relevant ist, hatte ich den gleichen Umstand, in dem ich meinen Arbeitsverkehr über das VPN ausführen wollte, aber nicht wollte, dass mein persönlicher Verkehr über das VPN geleitet wird Proxy-Server und so weiter. Also habe ich damals Win7 ausgeführt, aber sie haben immer noch WinXP auf vielen ihrer Systeme ausgeführt. Irgendwann gab man mir nur noch einen zweiten PC für die Arbeit, wodurch das Problem behoben wurde (eine Switchbox, die an beide PCs angeschlossen war, konnte einfach hin und her springen), aber vorher ließ ich ein virtuelles XP laufen, das ich als mein Arbeitsbetriebssystem eingerichtet hatte. Ich würde ein VPN von der besagten VM einbauen, um eine Verbindung zur Arbeit herzustellen, wodurch mein persönlicher Betriebssystemverkehr frei von Arbeitsbeschränkungen und Spionage wäre.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.