Dies ist die archivierte Version des Blogs vom 05.01.2017. Aktuelle Beiträge findest du unter thomas-leister.de
 

Gerade bin ich nicht Zuhause, sondern an einem unbekannten Ort woanders unterwegs, und bin mit einem WLAN Netzwerk mit Internetzugang verbunden. Dennoch würde ich gerne eine Verbindung nach Hause zu einem meiner Router aufbauen, um dort Logs auszulesen. Wenn man seinen Router „nach außen“ öffnet, kann man sich dort ganz normal über die öffentliche IP-Adresse des Anschlusses einloggen – wenn der Router Zuhause aber keine Zugriff von außen erlaubt … wie komme ich dennoch an das Webinterface?

Gut, dass ich noch ein VPN-Netzwerk (via OpenVPN) habe. Das verbindet meinen Server Zuhause und noch ein paar andere Geräte. Auch mit meinem Laptop kann ich mich in dieses Netzwerk einbinden. Dumm nur, dass ausgerechnet der Router, auf den ich gerne zugreifen würde, nicht in das VPN eingebunden ist. Was nun?

Diese Grafik veranschaulicht die Situation:

Gegebene Netzwerke

Der Server Zuhause ist die einzige Schnittstelle zwischen dem VPN und dem LAN, in dem auch meine Router hängen. Um auf den Router zugreifen zu können, bietet sich folgende Strategie an: Mein Laptop im fremden WLAN verbindet sich mit dem VPN. Dadurch wird der Server unter der IP-Adresse z.B. 10.8.0.5 erreichbar. Ich kann eine SSH-Verbindung aufbauen. Doch wie schaffe ich jetzt den Sprung vom VPN in das lokale Netzwerk Zuhause? Der Server muss der Ausgang eines Tunnels sein, den ich innerhalb des VPNs grabe. Sobald ich mit der Verbindung beim Server Zuhause herauskomme, kann ich auch die anderen Geräte im LAN erreichen, z.B. die Router oder ein Raspberry Pi.

Diesen zweiten Tunnel (der erste entspricht dem VPN) kann man direkt über SSH graben. Verbindungen vom Laptop werden dann über den SSH-Tunnel (der innerhalb des VPN Tunnels liegt) zum Server Zuhause umgeleitet, sodass sie direkt im LAN enden. … und schon kann ich alle Netzwerkgeräte Zuhause erreichen.

Den zweiten Tunnel (SSH-Tunnel) grabe ich mit dem Tool sshuttle. Es ist unter einer freien Lizenz verfügbar und macht das Graben eines starken SSH Tunnels kinderleicht: Das Tool wird auf dem Laptop installiert und folgender Befehl aufgerufen:

sshuttle -r thomas@10.8.0.5 0/0

…wobei 10.8.0.5 die IP-Adresse des Servers ist, unter der ich ihn im VPN erreiche. Das 0/0 (Abkürzung für 0.0.0.0/0) gibt an, für welches Subnetz dieser Tunnel genutzt werden soll. Im Falle von 0/0 werden alle Anfragen, die den Laptop nach außen verlassen, durch diesen SSH Tunnel geschickt. In meinem Fall würde es aber ausreichen, nur Anfragen zu lokalen IP Adressen wie z.B. 192.168.2.1 im 192.168.2.0/24 Netz durch den Tunnel zu schicken. Dann würde der Befehl wie folgt lauten:

sshuttle -r thomas@10.8.0.5 192.168.2.0/24

Ich kann mit dem Tunnel also direkt die IP-Adressen der Netzwerkgeräte aufrufen – so wie sie Zuhause sind. Wer zusätzlich auch DNS-Anfragen durch den SSH Tunnel schicken will, kann eine Option –dns anhängen:

sshuttle --dns -r thomas@10.8.0.5 0/0

Mit dem Aufruf von „192.168.2.1“ im Webbrowser kann ich nun die Weboberfläche meiner Router ganz normal erreichen – so als säße ich Zuhause und wäre direkt mit dem LAN verbunden :)


Post published on 11. November 2014 | Last updated on 22. Dezember 2014
Tags:         

Diesen Blog unterstützen

Wenn Dir der Beitrag gefallen hat, freue ich mich über einen kleinen Obolus :-) Bitcoin QR Code

PayPal-Seite: https://www.paypal.me/ThomasLeister
Meine Bitcoin-Adresse: 15z8 QkNi dHsx q9WW d8nx W9XU hsdf Qe5B 4s

Siehe auch: Unterstützung

Informationen zum Autor

Thomas Leister

Geb. 1995, Kurzhaar-Metaller, Geek und Blogger. Nutzt seit Anfang 2013 ausschließlich Linux auf Desktop und Servern. Student der Automobilinformatik an der Hochschule für angewandte Wissenschaften in Landshut.

12 thoughts on “SSH-Tunnel nach Hause mit sshuttle

  • „Gerade bin ich nicht Zuhause, sondern an einem unbekannten Ort, wo ich mit einem WLAN Netzwerk mit Internetzugang verbunden bin.“

    Wenn ich das lese … wenn ich nicht weis wo ich bin würde ich die Polizei rufen und keinen Artikel schreiben ;)

  • Auf deinem Laptop einfach Route für 192.168.2.0/24 mit dem VPN-Gateway als Next Hop einzurichten, wäre auch zu einfach gewesen, oder? :P

    • Nope, klappt hier nicht weil der „Server“ hier nicht der VPN Server ist, sondern auch nur VPN Client ;) Der VPN Server ist in der Übersicht nicht eingezeichnet. Meine VPN Verbindung läuft also Client-2-Client

      LG Thomas

      • Das ist an der Stelle aber doch egal, oder übersehe ich da jetzt etwas? Ein einfaches
        ‚route add net 192.168.2.0 netmask 255.255.255.128 gateway 10.8.0.5‘
        hätte das Problem doch auch lösen können.

        • Das muesste ‘route add net 192.168.2.0 netmask 255.255.255.0 gateway 10.8.0.1′ sein.
          Dann muss der Server aber noch die Route ins Netz kennen und auf den .5 zeigen. Der SSH Tunnel ist vielleicht nicht so sauber, aber einfacher als droelf Routen zu setzen.

  • Kurze Frage. Welches Protokoll benutzt du für dein VPN? Hintergrund ist der folgende. Wollte vor ein paar Monaten auch ein VPN Zugang auf einem Server im lokalen Netz einrichten und die Verbindung über die fritz.box forwarden. Bin dann aber an der fritz.box gescheitert weil die nur die unsicheren PPTP und L2TP Protokolle beherscht hat. Und mal ehrlich. Wer braucht schon eine unsichere VPN Verbindung? Ich nicht. Testweise habe ich auch mal die „exposed host“ Funktion getestet. Fehlanzeige und auch total unsicher. Habe mich an den Support von AVM gewendet. Da wurde mir dann mitgeteilt das z.B. IPsec nicht unterstützt wird. Fail. Habe dann darum gebeten diese Option in Zukunft zu implementieren. Habe es seit dem nicht mehr getestet.

    MfG Dude

  • Danke für deine Antwort. Muss ich mal bei Gelegenheit testen.

    Offtopic:

    Wenn du noch eine gute Firewall brauchen solltest kann ich dir die von CSF empfehlen falls du die noch nicht kennen solltest.

    http://configserver.com/cp/csf.html

    MfG Dude

    P.S.: Tolle Seite(n). Sehr hilfreich. :)

  • Hi Thomas,
    interessanter Artikel. Für Urlaub in Ferienhäusern hab ich mir einen Raspi als WLAN Router eingerichtet, der alles über einen Openvpn Server schickt. Funktioniert auch prima. Überlege gerade, den Raspi so einzurichten, dass er mit sshuttle einen SSH Tunnel aufbaut, anstatt einer VPN-Verbindung. Grund ist einfach der, dass man dann auf dem VServer den Openvpn abschalten und den ohnehin erreichbaren SSH-Port benutzen könnte. Wieder ein Dienst weniger, den man nach außen öffnen müsste. Hast du eventuell schon mal ausprobiert, eine sshuttle Verbindung auf einem Raspi zu automatisieren?
    Gruß AES

  • Hi Thomas,

    wozu überhaupt das vpn? Es würde doch reichen, Port 22 offen zu haben und dann per sshuffle alles darüber zu leiten.

    Grüße
    Frank

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.