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:
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
 
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.
 
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.
 
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..
 
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 :)
 
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?
 
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.
 
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
 
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?
 
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.
 
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.
 
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
 
Ich bin mal so frech und streue hier auch noch meine Ergänzung zum updown-Script von Honk.

Falls Interesse daran besteht, eine automatische Kaskadierung mit einer frei wählbaren Anzahl an Verbindungen (zwischen 1 und 8) aufzubauen, welche sich nach einer frei wählbaren Zeit in Sekunden, welche einem Random-Wert zwischen einer definierbaren Min- und Maxtime UND im Fehlerfall sich automatisch neu verbindet (entschuldigt diesen unmenschlichen Satz) -> dann bitteschön:


:)
 
Hallo,

hier ein kleines Script, welches sämtliche physischen Adapter (NICHT lo und NICHT tun) ausliest und dir sämtliche gefundenen IP-Adressen dieser Adapter ausgibt.

Bash:
#!/bin/bash
#
# ermitteln vorhandener physischer Netzwerkadapter
phy_net=($(grep -E -v 'tun|lo' /proc/net/dev | cut -d ':' -f 1 | tr -d '[:blank:]' | egrep '*[0-9]'))


START="0"
count="$((${#phy_net[*]}-"1"))"

for (( i=$START; i<=$count; i++ ))
    do
    echo "$(ip addr | grep ${phy_net[i]} | grep inet | cut -d '/' -f 1 | rev | cut -d ' ' -f 1 | rev)"
done

==> bitte als sudo ausführen, für den Fall der Fälle. :)

Falls du eine Modifikation wünschst, sag Bescheid.

mit dem folgenden String kannst du auch lediglich die gesuchte IP-Adresse ausgeben (hier bitte 'eth0' auf den gewünschten Netzwerkadapternamen anpassen)

Bash:
ip addr | grep eth0 | grep inet | cut -d '/' -f 1 | rev | cut -d ' ' -f 1 | rev


Beste Grüße
 
# updown.sh: HINT: openvpn... --setenv prevgw 10.1.181.3
==> das ist die Gateway-IP vom PP VPN-Server

Deine, durch PP vergebene, interne IP ist mit 10.1.181.32 schon richtig so. :)
 
@Honk

Falls du das Gateway des jeweiligen Tunnels ermitteln möchtest, kannst du diesen String benutzen:

Bash:
ip r | grep 'tun0' | grep '0.0.0.0' | cut -d ' ' -f 3

=> hier auch wieder 'tun0' in den 'Wunsch-Tunnel' ändern. :)
 
Du musst lediglich noch dem String mitteilen, dass die Ermittlung des Gateways innerhalb dieses Strings ausgeführt werden muss, dann sieht das für den von Dir genannten Fall so aus:

Bash:
openvpn --config basel2 --script-security 2 --route remote_host --persist-tun --up updown.sh --down updown.sh --route-noexec --setenv hopid 2 --setenv prevgw "$(ip r | grep 'tun0' | grep -m 1 '0.0.0.0' | cut -d ' ' -f 3)"

Hinweis: im String habe ich beim 'grep' noch den Parameter '-m 1' hinzugefügt.
Dadurch wird immer nur EIN Ergebnis ausgegeben. Dies kann sonst zum Fehlerfall kommen, wenn mehrere Ergebnisse erzielt werden -> denn du musst das ermittelte Gateway ja nur ein Mal übergeben.
 
Last edited:
Back
Top