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

Honk

Junior 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
 

PrivateMember

New Member
# 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. :)
 

PrivateMember

New Member
@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

Junior 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...
 

PrivateMember

New Member
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:

Honk

Junior Member
113_mr_burns_excellent.jpg
 

Honk

Junior Member
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.

@PP

Seit gestern funktioniert dieser String nicht mehr.
Wie kommt's?
 
Top