updown Skript für kaskadierte VPN-Verbindungen unter Linux

PP Stephan

Staff member
Achtung! Diese Anleitung ist nicht mehr aktuell! Bitte beachtet die aktuelle Anleitung im Anleitungs-Bereich.

Hallo,

Ihr findet angehängt ein Shell-Script, um eine kaskadierte VPN-Verbindung mit Perfect Privacy unter Linux aufzubauen.

Eine detaillierte Beschreibung sowie Hinweise zur Benutzung sind im Script auf Englisch enthalten. Ich stelle das hier einmal auf Deutsch zur Verfügung.

Das Skript sorgt dafür, dass die nötigen Routen für eine kaskadierte Verbindung über mehrere Perfect Privacy VPN Server auf- und wieder abgebaut werden.

Benutzung:
Starten Sie openvpn mit den folgenden Optionen:

openvpn
--config <config file>
--script-security 2
--route remote_host
--persist-tun
--up updown.sh
--down updown.sh
--route-noexec
--setenv hopid <hop number>
--setenv prevgw <gateway>

config file
Die *.ovpn Konfigurationsdatei (z.B. Amsterdam.ovpn)

hop number
Die Nummer/Stelle des Hops in der Kaskade, beginnend mit 1. Für den ersten Hop können Sie die Hop Number weglassen (default=1). Der Höchstwert liegt bei 5 Hops, um die Anzahl der Routes auf vernünftige Werte zu begrenzen.

gateway
Die interne IP-Adresse des Gateway-Servers, der aus dem Log des vorhergehenden Hops hervorgeht. Für den ersten Hop ('hop number' = 1) kann dies weggelassen werden. In diesem Fall wird der Gateway-Server Ihres lokalen Netzwerks verwendet.

Kurz: Für den ersten Hop starten Sie lediglich openvpn mit allen oben aufgeführten Parametern, außer den letzten beiden (--setenv). Das updown-Script zeigt nach dem Verbdindungsaufbau die komplette Zeile für den nächsten Hop an. Sie können diese Zeile mit Copy & Paste übernehmen und brauchen dann lediglich <config.ovpn> mit der Konfiguratiosndatei für den Server Ihrer Wahl austauschen.

BEISPIEL:
Hop #1:
sudo openvpn --config London.ovpn --script-security 2 --route remote_host --persist-tun --up updown.sh --down updown.sh --route-noexec

Hop #2 (copy-paste this command line from the log of the hop #1):
sudo openvpn --config Rotterdam.ovpn --script-security 2 --route remote_host --persist-tun --up updown.sh --down updown.sh --route-noexec --setenv hopid 2 --setenv prevgw 10.1.13.1

Hop #3 (copy-paste from hop #2):
sudo openvpn --config Reykjavik.ovpn --script-security 2 --route remote_host --persist-tun --up updown.sh --down updown.sh --route-noexec --setenv hopid 3 --setenv prevgw 10.18.12.1

HINWEIS:
Wir empfehlen, die Verbindung zu jedem Hop in einem eigenen Terminal-Fenster aufzubauen. Auf diese Weise sind die Logs für die jeweiligen Hopps getrennt und eventuell auftretende Fehler können besser erkannt werden. Zudem stellt dieses Vorgehen sicher, dass die Routen in der richtigen Reihenfolge auf- und wieder abgebaut werden können.

Es folgt das komplette Skript. Einfach kopieren und als "updown.sh" speichern.

[Den Link zur aktuellen Version des Scripts gibt's in der Anleitung.]
 
Last edited by a moderator:
Neue Skript-Version 1.3 (Erster Post aktualisiert).

Ihr könnt jetzt einstellen, ob das Skript automatisch Perfect Privacy Nameserver in /etc/resolv.conf setzt (standardmäßig aktiviert), oder ob die Nameserver-Einträge nicht geändert werden sollen (zum Beispiel falls Ihr immer Euren eigenen Nameserver nutzen wollt).
 
In derselben Konsole STRG-C trennt OpenVPN wieder. Damit wird dann auch das down Skript automatisch ausgeführt.
 
alles schön und gut und gute Arbeit, aber viel besser wäre es, endlich einen vernünftigen PP Manager für Linux zu erstellen (Arch/Ubuntu/Debian) alles andere hat auf Dauer keinen Sinn. So sehe ich das. Weil dass ist nur ein Rumgefrickel und rum gebastel, was aber keine Lösung ist.

Konzentriert euch mal mehr auf Linux. Kann doch nicht sein, dass man sich so sehr an das Katastrophen System Windows 10 krallt. Ich weiß dass immer mehr auf Linux umsteigen und das aus gutem Grund.

Aber wahrscheinlich, wird diese bitte weiter unerhört bleiben und bastelt lieber Skripte, anstatt mal einen vernünftigen PP Manger für Linux zu erstellen. Man kann das z.B mit Mono 4 oder Portable Version.
 
Last edited:
Naja manager hin oder her, was glaubst Du was so ein GUI-manager macht? Der ruft entsprechende scripte auf. Die Kombinierbarkeit von scripten und utilities ist genau die Stärke von unixoiden Systemen.
Das macht seit längerer Zeit sogar Mickeysoft, weil sie bemerkt haben, daß ihre Software ohne vernünftige Struktur einfach nicht mehr wartbar ist.
Über Powershell kannst Du deutlich mehr konfigurieren als mit deren GUI-schnick-schnack. Die GUI ruft also nur noch eine eingeschränkte Auswahl von powershell-Kommandos auf.

Also:
Ein paar vernünftige scripte können leicht als Basis dienen, um eine GUI obendrauf zusetzen. Das ist dann auch nicht mehr schwer.

p.s.
Wer produktiv arbeiten will, nimmt aber das keyboard - nicht umsonst gibt es sowas wie autohotkey usw.
Ich schalte meine vpns per shell ein und aus (z.B. enablep Steinsel oder disablep Steinsel)
 
Erstmal danke PP Stephan für das Skript.

Für versierte oder interessierte Linux Nutzer ist das gar kein Problem. Außerdem kann man das ja auch automatisieren und sogar die Routen random auswählen. Vielleicht hat ja jemand Lust das mal umzusetzen. Sowas grob wie

for ln in *.ovpn openvpn zeile hop 1 | grep openvpn zeile hop 2 + regexp <config.ovpn> = random außer hop 1 usw.

Habe da gerade keine Lust zu, stelle es mir aber eigentlich nicht kompliziert vor. Schön wäre trotzdem, wenn es auch für Ubuntu/Mint User kaskadierte Verbindungen über den Manager geben könnte, irgendwann. Ich glaube aber Leute die auf kaskadierte Verbindungen angewiesen sind, die wissen auch, wie man mit Linux umgeht. Für ein bisschen Youtube Unblocking usw reicht ja auch ein hop.



edit:

Zur Skriptidee:

./kaskadiert --hops n --config-dir /path/to/.ovpnfiles

Alle ovpn Files in ein Array einlesen, openvpn mit updown.sh aufrufen und <config.ovpn> mit einem Inhalt des Arrays füllen, per regexp prevgw greppen, openvpn mit prevgw und hopid++ sowie einem anderen Inhalt des Arrays, das noch nicht benuttz wurde, aufrufen. Das wiederholen bis die gewünschte Anzahl an circuits aufgebaut ist. Et voilla. Optional vielleicht noch die Möglichkeit das Skript mit -h1 /pathtogewünschterhop1.ovpn -h2 usw zu starten, falls man keine random sondern feste routen wünscht.

Vielleicht hat ja jemand Lust :)
 
Last edited:
Übrigens ein Hinweis an alle, die das Script nutzen: Checkt mal ob eure echte IP Adresse via ipv6 leakt. Bei mir ist das leider der Fall. Ohne das Skript (openvpn config.ovpn) funktioniert die v6 route problemlos.
 
Kann man die hops irgendwie in eine Kommandozeile schreiben oder muss man immer verschiedene Terminalsitzungen eröffnen.

Ich kenne mich leider nicht so gut aus mit Scripten

grüße moejoe
 
Hallo zusammen,

hier mal mein Aufsatz auf euer Script.
Genau das, was an0myzer angesprochen hatte, habe ich vor kurzem umgesetzt.
Zusätzlich noch etwas ausgeschmückt mit diversen Fehlerüberprüfungen. ?

 
Back
Top