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:
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 :)
„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 ;)
https://legacy.thomas-leister.de/ueber-mich-und-blog/
:D och, ist eigentlich ganz okay hier. Hab WLAN und nen Laptop ;)
*weiterschreib*
LG Thomas :P
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
https://legacy.thomas-leister.de/ueber-mich-und-blog/
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
https://legacy.thomas-leister.de/ueber-mich-und-blog/
Hi,
ich benutze einen eigenen OpenVPN Server, bin also über das OpenVPN Protokoll unterwegs.
LG Thomas
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
https://legacy.thomas-leister.de/ueber-mich-und-blog/
Hi Frank, es geht auch ohne VPN. Allerdings hatte ich das ohnehin schon laufen und hatte keine Portfreigabe. Außerdem muss ich mir mit VPN keine Gedanken um wechselnde IP-Adressen an meinem DSL Anschluss machen.
LG Thomas