it-swarm.com.de

Befreien Sie Programme von der Verwendung einer aktiven VPN-Verbindung

Wenn ich eine Verbindung zu einem VPN herstelle, wird der gesamte Netzwerkverkehr automatisch durch das VPN geleitet. Gibt es eine Möglichkeit, dem Ausnahmen hinzuzufügen? Ich weiß nicht, ob das Hinzufügen von Ausnahmen etwas mit dem VPN-Protokoll zu tun hat, aber das von mir verwendete VPN ist das OpenVPN-Protokoll.

Wo wir gerade von OpenVPN sprechen, warum ist es bei Ubuntu-Installationen nicht standardmäßig installiert, im Gegensatz zu PPTP?

Ich konnte die Liste der IRCHighWay-Server nicht abrufen. Dies ist das Ergebnis, das ich beim Versuch, eine Verbindung mit XChat herzustellen, erhalte, wenn das Bash-Skript ausgeführt wird:

* Looking up irc.irchighway.net
* Connecting to irc.irchighway.net (65.23.153.98) port 6667...
* Connected. Now logging in...
* You have been K-Lined.
* *** You are not welcome on this network.
* *** K-Lined for Open proxies are not allowed. (2011/02/26 01.21)
* *** Your IP is 173.0.14.9
* *** For assistance, please email [email protected] and include everything shown here.
* Closing Link: 0.0.0.0 (Open proxies are not allowed. (2011/02/26 01.21))
* Disconnected (Remote Host closed socket).

Die IP 173.0.14.9 ist die aufgrund meines VPN. Ich hatte vergessen, ip route list vor dem Ausführen des Skripts zu überprüfen, und dies ist derjenige nach dem Ausführen:

~$ ip route list
99.192.193.241 dev ppp0  proto kernel  scope link  src 173.0.14.9 
173.0.14.2 via 192.168.1.1 dev eth1  proto static 
173.0.14.2 via 192.168.1.1 dev eth1  src 192.168.1.3 
192.168.1.0/24 dev eth1  proto kernel  scope link  src 192.168.1.3  metric 2 
169.254.0.0/16 dev eth1  scope link  metric 1000 
default dev ppp0  proto static

Oh und das Ausführen des Skripts gab diese Ausgabe zurück:

~$ Sudo bash irc_route.sh
Usage: inet_route [-vF] del {-Host|-net} Target[/prefix] [gw Gw] [metric M] [[dev] If]
       inet_route [-vF] add {-Host|-net} Target[/prefix] [gw Gw] [metric M]
                              [netmask N] [mss Mss] [window W] [irtt I]
                              [mod] [dyn] [reinstate] [[dev] If]
       inet_route [-vF] add {-Host|-net} Target[/prefix] [metric M] reject
       inet_route [-FC] flush      NOT supported

Ich habe das Skript ausgeführt, nachdem ich mich mit dem VPN verbunden habe.

8
Oxwivi

Erstellen Sie eine Datei, irc_route.sh, die Folgendes enthält:

#!/bin/bash
# script to make connections to irc.irchighway.net go via DEV.
DEV=eth0 
GW=$(ip route list | sed "s/.* via \([0-9.]*\) dev $DEV.*/\1/;t;d"|head -1)
route add -Host irc.irchighway.net gw $GW $DEV

Ändern Sie DEV als die Schnittstelle, über die Sie Ihre Internetverbindung erhalten (wlan0, eth1, eth0, ppp0). Führen Sie dann das Skript mit Sudo bash irc_route.sh aus. Sie können die Ergebnisse überprüfen, indem Sie ip route list davor und danach ausführen.

Die IP-Adresse des Standard-Gateways für den Internetverkehr auf dem DEV-Gerät wird in der Variablen GW gespeichert, die dann verwendet wird, um den gesamten Verkehr zum irc.irchighway.net-Server über Ihr Standard-GW anstelle der von Ihnen verwendeten OpenVPN-Verbindung weiterzuleiten.

Damit dies für alle IRCHighWay-Server funktioniert, müssten Sie eine Liste aller Server abrufen.

server_list.txt:

 irc.irchighway.net
 caliburn.pa.us.irchighway.net

Skript:

#!/bin/bash
# script to make connections to irchighway go via DEV.
DEV=eth0 
GW=$(ip route list | sed "s/.* via \([0-9.]*\) dev $DEV.*/\1/;t;d"|head -1)
cat server_list.txt| xargs -iSERVER route add -Host SERVER gw $GW $DEV

Es gibt eine "einfachere" Lösung, Sie können Ports und Routen basierend darauf markieren, siehe iproute2-Tutorial , aber ich habe das nicht verwendet. Und es gibt einige Probleme mit dieser Art von Routing, wenn Sie nicht wissen, was Sie tun.

6
Erik Johansson

Sie können bestimmte Programme nicht daran hindern, Verbindungen über das VPN herzustellen. Wenn sie jedoch eine bestimmte Host- oder Portnummer erreichen möchten, ist dies möglich. Ich gehe im schlimmsten Fall davon aus, dass bestimmte Apps die Firewall umgehen sollen.

Dies sollte mit SELinux möglich sein, indem Netzwerkverbindungen von einem Programm aus gesperrt werden. Ich kenne keine guten Tools, um diese Konfiguration vorzunehmen oder um sie im laufenden Betrieb zu ändern.

Ich glaube, es gab einmal ein Modul in iptables, das mit dem Sendeprogramm übereinstimmen konnte, aber ich habe es eine Weile nicht gesehen.

1
Erik Johansson