Oftmals hat man bei den Kabel Providern keine eigene IPv4 Adresse mehr. Man bekommt dort als (Privatkunde) eine IPv4 hinter NAT und ein IPv6 Subnetz.
Hätte man unterwegs mit dem Handynetz oder dort wo man sich ins Internet Einbucht ebenfalls eine IPv6 Adresse, dann wäre dies kein Problem. Hat man dies nicht, so kann man mit SSH und einem günstigen vServer (so genannten Jumphost) sich Zugang in sein Netz verschaffen.

Hier noch ein paar Namen die ich verwende:

  • jumphost.systemtechnics.de (günstiger vServer im Rechenzentrum)
  • st-raspi (lokaler RaspberryPi Server über den wir Tunneln
  • 10.0.0.0/24 ist das interne Netz an dem der RaspberryPi hängt.

Nach dem erfolgreichen anmelden per SSH auf dem Jumphost müssen ein paar vorarbeiten geleistet werden, damit eingehende Verbindungen in den SSH-Tunnel weiter geleitet werden.
Dazu öffnen wir die Datei /etc/ssh/sshd_config und schreiben ans das Ende (oder suchen uns die passenden Kommentarzeilen aus):

GatewayPorts yes
ClientAliveInterval 60
ClientAliveCountMax=2

Damit die Änderungen angewendet werden starten wir mit service sshd restart den Daemon neu. 

Melden wir uns nun bei dem RaspberryPi mit SSH an. 

Wir erstellen uns zuerst ein Public- & Private- Key damit wir keine Passwörter bei der Verbindung zu unserem Jumphost benötigen. Dies geht am schnellsten mit

ssh-keygen -t rsa -b 4096
cat /root/.ssh/id_rsa.pub

Diesen Public Key fügen wir auf dem Jumphost in die Datei /root/.ssh/authorized_keys ein.

Wir können nun mit folgender Syntax eine Verbindung von unserem RaspberryPi zu unserem Jumphost starten und den Port ins das interne Netz weiter leiten.

ssh -p 22 -N -R 5101:10.0.0.10:5001 root@jumphost.systemtechnics.de

Im obigen Befehl verbinden wir uns mit Port 22 (-p 22), öffnen auf dem Jumphost (jumphost.systemtechnics.de) den Port 5101 (5101:10.0.0.10:5001) und leiten diesen an die interne IP-Adresse 10.0.0.10 (5101:10.0.0.10:5001) an den Port 5001 (5101:10.0.0.10:5001) weiter.

Mit einem Browser kann ich nun im obigen Beispiel auf meine Synology NAS von extern zugreifen: https://jumphost.systemtechnics.de:5101

Diese Verbindung ist dann natürlich nur offen so lange die SSH Verbindung besteht. Möchte man diesen Tunnel nun dauerhaft erhalten, so kann man das Tool autossh verwenden. Dessen Installation erfolgt Debian typisch wie folgt:

apt install autossh

Setzen wir nun an obigen Befehl folgendes voran, dann wird der SSH Tunnel im Hintergrund gestartet und am „leben“ erhalten.

autossh -M 0 -f -o ConnectTimeout=10 -o ServerAliveInterval=60 -o ServerAliveCountMax=2 -p 22 -N -R 5101:10.0.0.10:5001 root@jumphost.systemtechnics.de

Wer mag kann dies gerne noch über den Cron ( @reboot) auf dem RaspberryPi bootfest machen.

pico /etc/crontab
@reboot root autossh -M 0 -f -o ConnectTimeout=10 -o ServerAliveInterval=60 -o ServerAliveCountMax=2 -p 22 -N -R 5101:10.0.0.10:5001 root@jumphost.systemtechnics.de