Anleitung: Kaskadierte VPN-Verbindung über mehrere Hops unter Linux

PP Stephan

Staff member
Dieser Thread bezieht sich auf die Anleitung Kaskadierte VPN-Verbindung über mehrere Hops . Bitte schreibt hier nur, wenn Ihr Fragen, Anmerkungen oder anderes Feedback zu dieser Dokumentation habt. Um diesen Thread übersichtlich und frei von veralteten Postings zu halten, wird er ab und zu vom Moderatoren-Team aufgeräumt.
 
Last edited:

ampyi

New Member
Hallo, Ich habe es nach der Anleitung versucht, jedoch bekomme ich immer die Fehlermmeldung:
parallels@ubuntu:/etc/openvpn$ sudo openvpn –-config London.ovpn –-script-security 2 –-route remote_host –-persist-tun -–up updown.sh -–down updown.sh -–route-noexec
Options error: I'm trying to parse "–-config" as an --option parameter but I don't see a leading '--'
Use --help for more information.
Ich habe es auch mit einem Bindestrich an den Optionen versucht - gleiches Eregbis. Die Beschreibung weicht nämlich mit dem Screenshot ab...

Irgendeine Idee? THX und beste Grüsse!
 

linuxkas

New Member
Den Fehler hatte ich nicht, bei mir funktioniert es mit zwei Bindestrichen --config STANDORT.ovpn

Ich hatte auch eine Frage. Wie erstellt man eine Passwortdatei?

Sollten Sie keine Passwort-Datei in der ovpn-Konfigurationsdatei festgelegt haben, werden Sie beim Verbindungsaufbau nach Ihrem Perfect-Privacy-Nutzernamen und -Passowort gefragt.

Ich bin darauf gekommen und es funktioniert.

navigiere dort hin wo das OpenVPN Config File liegt (.../openvpn)
  • Datei mit dem Namen passwortdatei.txt und dem Inhalt ...
hier_der_benutzername
hier_das_passwort

  • ... anlegen
  • OpenVPN Config File bearbeiten

auth-user-pass passwortdatei.txt

Aus auth-user-pass wird auth-user-pass passwortdatei.txt
 

algorithm

New Member
Hallo miteinander, vorab ich hoffe ihr könnt mir meine Unwissenheit die für euch eventuell als erfahrene VPN oder Perfect Privacy Nutzer schon nach Dummheit aussehen mag. Ich habe folgendes Problem undzwar wenn ich mich normal mit einem VPN Standort verbinde klappt alles, bisher, reibungslos. Aber wenn ich nach der im Startpost genannten Anleitung eine Kaskadierung anstrebe habe ich bereits nach dem 1. Hop keine Verbindung mehr, sprich wenn ich die Verbindung zum 1. Hop aufbaue und im Anschluss versuche eine beliebige Seite zu öffnen dann erhalte ich die Meldung von "Firefox" das die Seite nicht geladen werden konnte. Die Ausgabe in der Konsole nach dem Verbindungsaufbau zum 1. Hop sieht wie folgt aus:

https://pastebin.com/M5RmYY7m

Falls ihr weiter Auszüge bspw. aus einer Logdatei braucht um mir bei meinem Problem behilflich zu sein dann liefer ich diese gerne.
 

gumba

New Member
Ich hatte das Anfangs auch. Genau genommen war es so, dass die Verbindung über einen Hop scheinbar funktionierte (aber auch nur scheinbar - die sichtbare IP war weiterhin meine eigene) bzw. bei mehr als zwei Hops überhaupt nichts mehr ging.

Ist schnell zu lösen wie hier beschrieben https://github.com/masterkorp/openvpn-update-resolv-conf/issues/15

In den *.conf-Dateien jeweils eine Zeile "setenv PATH /usr/bin" einfügen (oder in welchem Ordner sich resolvconf auf dem System befindet), dann läuft es.
 

algorithm

New Member
Super danke erstmal für die rasche Antwort! Nun die Frage die sich mir nun stellt ist welche *.conf-Dateien meinst du denn nun? Die *.ovpn-Dateien oder meinst du die update-resolv-conf? Tut mir leid wenn ich mich vielleicht gerade ein wenig blöd anstelle aber kann dir gerade nicht ganz Folgen..
 

gumba

New Member
Oh sorry, ich meinte die *.ovpn-Dateien hier aus dem Downloadbereich.

Ich hab mich vor ein paar Minuten über drei Server verbunden, das sieht jetzt so aus:

https://abload.de/img/cascade12ow5.jpg

Ich habe hier die Dateien für jeden einzelnen Server und meine Amsterdam4.conf geöffnet - es geht um die Zeile vor dem ganzen tls-cipher Kram :)
 

algorithm

New Member
Okay alles klar dann weiß ich jetzt bescheid, danke nochmals für die super rasche Antwort! Was mich noch interessieren würde ist wieso du eine "Amsterdam4.ovpn" hast obwohl ich nur eine "Amsterdam.ovpn" habe. Die hast du dir wahrscheinlich selbst erstellt, richtig? Und falls ja aus welchem Grund?
 

gumba

New Member
Das sind die Dateien hier aus dem Downloadbereich, nur halt nicht die mit einer conf für jeden Serverstandort sondern die mit einer conf für jeden einzelnen Server. Ich habe also außer Amsterdam4 auch Basel2 und Rotterdam5 und so weiter. Hat keinen besonderen Grund, ich mag es nur eine genaue Auswahl zu haben.
 

moejoe

Member
Gibt es eine Möglichkeit das in ein Script zu verpacken und die einzelnen Hops automatisch neue Sessions zuzuweisen ?

Ich will das nämlich dauerhaft gestartet wird und zb. bei einem Reboot automatisch multi hop wieder gestartet wird.

grüsse moejoe
 

Farin

New Member
HalliHallo,

ich habe eine virtuelle Maschine mit Debian und will das Multi-Hop Script hier nutzen (weil der Linux Client anscheinend noch nicht dazu in der Lage ist, bin bereits Kunde seit knappen 3 Jahren und warte noch auf das Update).
Das mit den Multi-Hops funktioniert auch einwandfrei, aber ich habe dann beim Check DNS-Leaks. Wie werde ich diese denn jetzt am elegantesten los?
 

PP Stephan

Staff member
Das kommt drauf an, wie das System DNS setzt. Die einfachste Lösung ist es, im System einfach global öffentliche Nameserver festzulegen (zB Google oder server von OpenNIC.org). Wenn dann VPN-Verbunden wird, gehen diese Anfragen auch über die VPN-Verbindung and die externen Nameserver. Ein DNS-Leak besteht nur dann, wenn Di einen lokalen Nameserver verwendest.
 

Ac33bLc

New Member
Hallo miteinander,

grundsätzlich funktioniert der Aufbau einer VPN-Verbindung bei mir über folgenden Befehl:
sudo openvpn --config Amsterdam.ovpn

Gehe ich nun nach der Anleitung vor, um eine kaskadierte VPN-Verbindung aufzubauen, schlägt bereits der 1. Hop fehl. Das Skript habe ich gemäß Anleitung erstellt. Ich nutze diesen Befehl:
sudo openvpn --config Amsterdam.ovpn --script-security 2 --route remote_host --persist-tun --up updown.sh --down updown.sh --route-noexec

Die VPN-Verbindung wird nicht aufgebaut. Ich erhalte folgende Fehlermeldungen beim Verbindungsaufbau.

updown.sh: STARTED
updown.sh: hop number: (default: 1)
updown.sh: gateway of previous hop: (default: local gateway)
updown.sh: local gateway: XX.XXX.X.X
updown.sh: VPN: int. IP address: XX.X.XX.XXX
updown.sh: VPN: netmask: XXX.XXX.XXX.X
updown.sh: VPN: gateway: XX.X.XX.X
updown.sh: VPN: public IP address: XX.XXX.XX.XXX
updown.sh: Notice: You didn't set 'hopid'. Assuming this to be the first hop (hopid=1).
updown.sh: Notice: You didn't set the previous gateway. The gateway of your local network ('XX.XXX.X.X') will be used.
which: no ip in ((null))
updown.sh: executing: ' route add XX.XXX.XX.XXX via XX.XXX.X.X'
updown.sh: line 208: route: command not found
updown.sh: executing: ' route add 0.0.0.0/1 via XX.X.XX.X'
updown.sh: line 216: route: command not found
updown.sh: executing: ' route add 128.0.0.0/1 via XX.X.XX.X'
updown.sh: line 216: route: command not found
updown.sh: executing: ' -6 route add 2000::/4 dev tun0'
updown.sh: line 225: eval: -6: invalid option
eval: usage: eval [arg ...]
updown.sh: executing: ' -6 route add 3000::/4 dev tun0'
updown.sh: line 225: eval: -6: invalid option
eval: usage: eval [arg ...]
updown.sh: HINT: For the next hop, start openvpn with the following options:
updown.sh: HINT: openvpn --config <config.ovpn> --script-security 2 --route remote_host --persist-tun --up updown.sh --down updown.sh --route-noexec --setenv hopid 2 --setenv prevgw 10.0.65.1
updown.sh: execuding: '/etc/openvpn/update-resolv-conf'
updown.sh: line 247: /etc/openvpn/update-resolv-conf: No such file or directory
updown.sh: FINISHED

Systemdetails:

Fedora 26
OpenVPN 2.4.4
net-tools-2.0-0.43 ist installiert

Könnte hierbei bitte jemand helfen. Ist ggf. das Skript veraltet?

Ich habe gelesen, dass das Kommando "route" veraltet ist. Gibt es die Möglichkeit das Skript zu aktualisieren, sodass es auf aktuellen Systemen läuft - sofern das, dass einzige Problem ist.

Weitere Fragen:

Was hat es mit der Datei update-resolv-conf auf sich? Diese musste ich in den .ovpn-Dateien auskommentieren, da diese nicht existiert.

Wenn ich das Neuro-Routing richtig verstanden habe: Bietet es automatisch eine kaskadierte Verbindung (multihop) zum nächstgelegenen VPN-Server am Zielstandort an? Oder ist das technisch anders zu verstehen?

Vielen Dank im Voraus.
 

Raptr

New Member
ich habe ein ähnliches Problem:
habe mich auch genau an die Anleitung gehalten. update-resolv-conf kenn ich eigentlich von FTP-Servern. Muss dazu sagen ich bin erst vor knapp 4 Monaten auf Linux umgestiegen, deswegen bitte Nachsicht.
System: openSuse Tumbleweed mit openVPN 2.4.3-4.1

wenn ich die sudo openvpn --config London.ovpn --script-security 2 --route ausführe kommt:

Mon Apr 2 15:41:18 2018 Note: option tun-ipv6 is ignored because modern operating systems do not need special IPv6 tun handling anymore.
Options error: --down script fails with '/etc/openvpn/update-resolv-conf': No such file or directory
Options error: Please correct this error.

klar fehlt die Datei update-resolv-conf aber was muss darein?

LG:Raptr
 

Honk

Member
Die hier gezeigte Anleitung sei eine Ergänzung zur PP-Anleitung.

Zuerst starte ich ein Root-Terminal, um nicht immer wieder das Root-Passwort eingeben zu müssen. Bei mir geht das mit "gksu mate-terminal". (Und wer kein mate-terminal hat, der hat ein gnome-terminal.)
Passworteingaben sind gerade dann nervig, wenn man, besonders zu Beginn, endlos oft ein- und ausloggt. Wer da Bauchschmerzen hat, bricht jetzt ab oder bleibt weiterhin im User-Terminal und stellt ein sudo voran.

In den aktuellen Linux-Versionen ist das Modul gksu vermutlich nicht mehr enthalten. Kurz gksu eintippen und schauen, was passiert. Öffnet sich ein Fenster mit Eingabeschlitz für einen Programmnamen, dann ist gksu installiert und wenn nicht, dann kurz diese Anleitung bis zur Hälfte abarbeiten: https://board.perfect-privacy.com/posts/27043
Alternativ mal den Befehl sudo!! probieren (nicht getestet mit Mint 19.x).
Ziel ist es, ein Root-Terminal zu öffnen, welches neue Terminal-Tabs/Fenster ebenfalls mit Root öffnet.

Im Root-Terminal zuerst ins "Arbeitsverzeichnis" wechseln, also dort, wo die Conf-Dateien liegen und dann OpenVPN ausführen. Die PP-Anleitung verwendet /etc/openvpn/ ,ich bevorzuge ein Unterverzeichnis im Homeverzeichnis aus div. Gründen, bzw. nutze mehrere Unterverzeichnisse, also eines für UDP, eines für TCP und noch 4 weitere (in Zukunft) für die Tarnkappenmodi. Ferner habe ich den Conf-Dateien gleichnamige Endung entfernt.

Login Riga:
cd /home/user/vpn/tcp ; openvpn --config riga --script-security 2 --route remote_host --persist-tun --up updown.sh --down updown.sh --route-noexec

Und auch hier bietet sich die ~/.bashrc (für Root) als Hilfe an. Grundsätzlich würde ich eigene Einträge immer ans Ende der Datei setzen.
Ein Beispiel mit 3 Servern:

alias riga='cd /home/user/vpn/tcp ; openvpn --config riga --script-security 2 --route remote_host --persist-tun --up updown.sh --down updown.sh --route-noexec'
alias singapur1='cd /home/user/vpn/tcp ; openvpn --config singapur1 --script-security 2 --route remote_host --persist-tun --up updown.sh --down updown.sh --route-noexec'
alias singapur2='cd /home/user/vpn/tcp ; openvpn --config singapur2 --script-security 2 --route remote_host --persist-tun --up updown.sh --down updown.sh --route-noexec'
echo Hop1-Login: riga singapur1 singapur2


Zum Ende des Edits ein . ~/.bashrc ausführen, um die Datei auf Inkonsistenz zu prüfen.

Man muss nun nicht unbedingt einen 2. Hop aufbauen, man KANN es. Kann ja sein, man möchte hin und wieder spontan einen zweiten Hop zuschalten, dann braucht es keine erneute Einwahl von Nr. 1.

Gegen Ende des ersten Hop1-Logins steht z.B. Zeile:
updown.sh: HINT: openvpn --config X --script-security 2 --route remote_host --persist-tun --up updown.sh --down updown.sh --route-noexec --setenv hopid 2 --setenv prevgw 10.1.164.3

Für den 2. Hop und folgende hab ich noch keine geschmeidige Lösung gefunden, daher ein Copy/Paste aus der Hint-Zeile in die Befehelszeile eines weiteren Root-terminalfensters/tab, z.B.:
openvpn --config stockholm1 --script-security 2 --route remote_host --persist-tun --up updown.sh --down updown.sh --route-noexec --setenv hopid 2 --setenv prevgw 10.1.164.3

Die Intranetadresse am Ende am Zeile ist der VPN-Gateway der aktuellen VPN-Verbindung.
Nun bräuchte es eine knuffige Lösung, wie man die VPN-Gateway-Adresse des jeweils letzten Hops auslesen kann.
Was sagt der Profi?

____

Nachtrag 1:
Wer lieber das Verzeichnis /etc/openvpn/ nutzen möchte, legt dort die Unterverzeichnisse udp / tcp / usw an und auch nur derjenige, der etwas anderes als UDP-Protokoll (Standard) nutzen möchte.
 
Last edited:
Top