SSH Socks Server

Durch die Trennung der Computer vom Internet Gateway als Default Route ist eine direkte Kommunikation  aus dem lokalen Netzwerk mit Diensten und Servern im Internet nicht mehr möglich. Hierzu wurde ein Proxy-Server aufgebaut , siehe Artikel hier, um die Verbindungen für Webbrowser zu bewerkstelligen.

Nun ist es so, das ich für alle Server die im Internet stehen ausschließlich „ssh“ als Terminal Zugang nutze. Hierzu gibt es Scripts die das Anmelden auf den Servern automatisieren. Jetzt hab ich den Default Gateway beim Mac rausgenommen. Dh. ein direkter Zugang per ssh wie zb. „ssh www.hostname.de“ nicht mehr funktioniert.

Da SSH ja ein wirklich mächtiges Werkzeug ist, habe ich mich da etwas geübt und gebastelt. communication_privacy004

Proxy-SSH
Proxy-SSH

Der Aufbau ist jetzt so, dass ich einen „Raspberry PI“ und einen „Mac“ nutzen werde. Der Raspberry PI ist per Default Gateway an den DSL-Anschluß der 192.168.1.1 angebunden. Dh. auf dem Raspberry Pi funktioniert „ssh www.hostname.de“ ohne Einschränkungen. So war die Idee zwischen dem Raspberry Pi und dem MAC eine SOCKS Verbindung herzustellen. Dh. der Raspberry nimmt die „ssh connections“ des MAC an und leitet diese direkt an den Zielserver im Internet weiter.

 

Raspberry PI =  192.168.1.10 mit Default Route zu 192.168.1.1
MAC = 192.168.1.15 keine Default Route

Der SSH-Client hat die Möglichkeit einen frei definierten Port als SOCKS-Port zu benutzen. In meinem Fall hab ich den Port 9999 konfiguriert.

Auf dem „MAC“ setze ich folgendes Kommando im Terminal ab:

ssh -f -N -D 9999 pi@192.168.1.10

Wir prüfen auf dem „MAC“ ob auf dem Port 9999 etwas hört:

# netstat -an|grep 9999
tcp4       0      0  127.0.0.1.9999         *.*                    LISTEN

Jetzt haben wir den Socks-Server auf dem MAC laufen, der auf den Port 9999 hört. Auf dem MAC kann nun die gewünschte Verbindung ins Internet zu dem gewünschten SSH-Zielserver aufgebaut werden. Folgendes Kommando wird zum Aufbau der Verbindung genutzt, direkt im Terminal des „MAC“ Computer:

ssh -o ProxyCommand="nc -X 5 -x localhost:9999 %h %p" admin@meinserver.beispiel.de

oder wenn SSH-Zielserver auf Port 2222 hört:
ssh -o ProxyCommand="nc -X 5 -x localhost:9999 %h %p" admin@meinserver.beispiel.de -p2222

oder alternativ ohne 9999 Port: 

ssh -o ProxyCommand="ssh -W %h:%p pi@192.168.1.10" admin@meinserver.beispiel.de -p2222

Das ist alles und es funktioniert wie vorher. Es gibt viele Beschreibungen im Netz die alle sehr kompliziert und nur halbherzig richtig dokumentiert sind. Mit richtig dokumentiert meine ich dass man die Leute nicht von der Basis abholt sondern, einfach voraussetzt das ein gewisses Fachwissen vorhanden ist. Hier gehe ich einen anderen Weg und versuche immer jeden von der gleichen Ebene abzuholen.

 

Nun viel Spaß wünscht , Joachim

 

 

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*