sshuttle – ein VPN für Arme – funktioniert prächtig mit eigenem root-Server oder Raspberry Pi

10 Juni 2017 3 Kommentare Autor: Jürgen (jdo)

Mein root-Server von Contabo ist nun ausreichend getestet, kann E-Mails verschicken und ist mehr oder weniger eingerichtet. Nächste Woche sollte ich Zeit finden, damit die Website auf den Server umziehen kann. Nun habe ich ein bisschen nachgedacht, was sich sonst noch so alles mit einem root-Server, VPS oder vServer anstellen lässt. Logisch wird auch Nextcloud darauf installiert. Aber auch als VPN könnte man den Server nutzen. Nun gibt es die komplexe Methode mit der Installation und Konfiguration von OpenVPN, oder Du nimmst ganz einfach sshuttle.

Was ist sshuttle?

Vereinfacht gesagt ist sshuttle ein Programm, das Traffic via SSH über einen anderen Rechner, in meinem Fall mein root-Server, leitet. Die Voraussetzungen für einen Einsatz sind laut Entwickler einfach.

Dabei ist sshuttle so etwas wie ein Hybrid aus VPN und Port Forwarding. Wie ein VPN verhält es sich, da jeder Port des gesamten Netzwerks weitergeleitet wird. Im Gegensatz zu einem VPN ist sshuttle aber nicht stateless, sondern trackt jede einzelne Verbindung. Wer es ganz genau wissen will, kann einen Blick in die Dokumentation werfen.

Auf dem Client oder Router muss Linux, FreeBSD oder macOS laufen. Weiterhin brauchst Du SSH-Zugriff auf ein anderes Netzwerk – root- oder Admin-Rechte sind nicht einmal notwendig. An beiden Enden muss Python (2.7 oder 3.5) verfügbar sein.

Als Gründe für den Einsatz werden angegeben:

  • Das Remote-Netzwerk stellt kein VPN zur Verfügung oder nur komische beziehungsweise komplexe VPN-Protkolle (IPsec, PPTP, …)
  • Du willst nicht für jeden einzelnen Host ein SSH Port Forwarding einrichten.
  • Dir taugt das Port Forwarding von OpenSSH nicht
  • Oder in meinem Fall: Ich will mich einfach ab und zu über einen sicheren Server verbinden, gerade wenn ich unterwegs bin und ein öffentliches WLAN nutze. Kontrolle ist besser, heißt es ja immer und ich habe einen root-Server.

Die Software installieren

Auf dem Server muss die Software übrigens nicht installiert sein, sondern nur auf dem Client. Der Aufruf übernimmt alle notwendigen Schritte.

Unter Ubuntu oder Linux Mint kann ich die Software einfach aus dem Repositories installieren. Wie das bei anderen Distributionen ist, weiß ich nicht:

sudo apt install sshuttle

Es geht aber auch via pip:

pip install sshuttle

oder mit clone:

git clone https://github.com/sshuttle/sshuttle.git
./setup.py install

Mehr steckt da auch nicht dahinter.

Verbinden wir uns via sshuttle

Die Syntax ist recht einfach. Nehmen wir an, dass ich sämtlichen Traffic inklusive DNS durch meinen Server leiten möchte. Dann sieht das so aus:

sshuttle --dns -vr ssh-server 0/0

Dabei steht ssh-server in der Regel für name@remote-server. 0/0 ist eine Abkürzung für 0.0.0.0/0. Mit dem Befehl oben wird sämtlicher Traffic nun durch meinen root-Server geleitet. Ich kann aber auch Adressen ausschließen, sollen die nicht durch den Pseudo-VPN laufen. Dafür ist der Schalter -x zuständig, der sich auch mehrfach verwenden lässt.

sshuttle --dns -vr ssh-server -x IP-Adresse/24 -x Andere-IP-Adresse 0/0

Oder ich will nur bestimmten Traffic durch den Remote-Server leiten, dann gebe ich eben diese IP-Adressen an:

sshuttle -vr ssh-server IP-Adresse/24 Andere-IP-Adresse

Das sind die möglichen Optionen:

sshuttle und die Optionen

sshuttle und die Optionen

Hilfreich können an dieser Stelle die sshuttle Helpers sein. Damit kannst Du zum Beispiel Domänennamen anstelle von IP-Adressen verwenden. Das ist vor allen Dingen bei -x hilfreich oder wenn nur eine bestimmte Adresse getunnelt werden soll.

Auch zu Raspberry Pi im Home-Netzwerk möglich

Ist Dein Raspberry Pi über eine dynamische Adresse von außen erreichbar und OpenSSH aktiviert, dann geht natürlich auch der Weg vom entfernten Netzwerk in das eigene Home-Netz. Die Syntax bleibt gleich, ich wollte es lediglich als Anregung anmerken.

Auf dem Raspberry Pi läuft Raspbian oder Ubuntu und damit ist eine Verbindung via SSH ohne Weiteres machbar. Wenn Du also weder einen root-Server noch einen VPN Provider aber einen Raspberry Pi hast, kannst Du trotzdem in einem öffentlichen Netzwerk sicher über das Heim-Netzwerk verbinden.

Mit einem Raspberry Pi, der eigenen Internet-Verbindung wird sshuttle dann endgültig zum VPN für Arme. Aber die Lösung funktioniert großartig. Übrigens gibt es eine kostenlose Android-App, mit der Du die VPN-Lösung ebenfalls verwenden kannst.

Nette Pi-Konstellation

Du kannst gerne Deinen Senf zu diesem Beitrag geben: Hier geht es zu den Kommentaren




Schreiben macht durstig! Eine kleine Erfrischung kann daher nie schaden. Wem dieser freie Artikel gefallen hat, der darf mir gerne einen frisch gezapften Hopfen-Tee ausgeben (Paypal - der Spenden-Knopf
)
oder

Bitcoin-Adresse: 1NacVNwcLLePUVv8uSafu5Ykdwh8QyDfgK

Ethereum-Adresse: 0x9cc684575721dc07b629ad5d81b43ab4b992e76e

Verge-Adresse: DJaJtZeW494xhnRJJt19Lnt2R5pz7zRp5A

Ich freue mich über jede noch so kleine Spende. Vielen Dank und Prost!

 
 Alle Kommentare als Feed abonnieren

3 Kommentare zu “sshuttle – ein VPN für Arme – funktioniert prächtig mit eigenem root-Server oder Raspberry Pi”

  1. lucie sagt:

    Schöne Idee. Ein Rootserver wäre für mich aber überdimensioniert, daher verbinde ich mich über VPN immer mit meiner Fritzbox.

  2. Max sagt:

    Kann man sshuttle auch auf einem Windows Client nutzen?
    Und wie sieht es aus mit einem (Android) Smartphone als Client?

Antworten