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

Honk

Member
Code:
# updown.sh: HINT: openvpn... --setenv prevgw 10.1.181.3
$ ip addr | grep tun0 | grep inet | cut -d '/' -f 1 | rev | cut -d ' ' -f 1 | rev
10.1.181.32
Passt bis auf die letzten Stelle
 
# 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. :)
 

Honk

Member
Ja, wunderbar!

Bash:
# updown.sh: HINT: openvp n... --setenv prevgw 10.1.33.3
$ ip r | grep 'tun0' | grep '0.0.0.0' | cut -d ' ' -f 3
10.1.33.3

Nun soll das in die openvpn-Zeile eingefügt werden. Folgender Versuch:

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 '0.0.0.0' | cut -d ' ' -f 3'
Tue Jan 28 11:13:04 2020 Multiple --up scripts defined.  The previously configured script is overridden.
Tue Jan 28 11:13:04 2020 Multiple --down scripts defined.  The previously configured script is overridden.
Options error: Unrecognized option or missing or extra parameter(s) in [CMD-LINE]:1: setenv (2.4.4)
Use --help for more information.
Scheint mit meiner Syntax nicht zu funktionieren...
 
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:
Top