Wie richte ich einen lokalen SOCKS-Proxy ein, der den Verkehr durch SSH tunnelt?

30

Angenommen, ich habe Zugriff auf einen SSH-Server, der das Tunneln unterstützt, und auf einem PC, auf dem * ubuntu ausgeführt wird. Wie richte ich einen lokalen SOCKS-Proxy ein, der den Datenverkehr über diesen SSH-Server tunnelt, bevor ich das Internet erreiche?

pzkpfw
quelle

Antworten:

45

Die sshBinärdatei, die Sie verwenden, wenn Sie eine Verbindung zu einem Server herstellen, auf dem ssh ausgeführt wird, unterstützt die sofortige Ausführung eines SOCKS-Proxys mit dem -DFlag. Beispiel:

ssh -D 1337 -f -C -q -N user@remote -p 22
  • -D 1337Weist sshan, einen SOCKS-Server an Port 1337 lokal zu starten.
  • -f Verzweigt den Vorgang in den Hintergrund.
  • -C Aktiviert die Komprimierung.
  • -q aktiviert "Quiet Mode", da der Zweck hier nur das Tunneln ist. Die Fehlerausgabe und dergleichen ist uns eigentlich egal.
  • -Nteilt mit, sshdass keine Befehle gesendet werden ( -fbeschwert sich, wenn wir dies nicht spezifizieren).
  • -pGibt an, welcher Port verwendet werden soll. Offensichtlich ist dies standardmäßig auf 22 voreingestellt, daher ist die obige Aussage sinnlos, aber aus Gründen der Klarheit eingeschlossen.

Wenn Ihr SOCKS-Server in Betrieb ist, müssen Sie lediglich sicherstellen, dass Ihre Anwendung (normalerweise ein Webbrowser) versucht, eine Verbindung zum lokalen SOCKS-Proxy und nicht zum normalen Internet herzustellen.

In Firefox 29 (hier als Beispiel erklärt) wird dies erreicht, indem Sie zum Menü (die drei Würste oben rechts) gehen, gefolgt von Einstellungen> Erweitert> Netzwerk> (Verbindung)> Einstellungen ... - stellen Sie sicher, dass Sie nur Füllen Sie das Feld SOCKS aus! Da sich Ihr Proxy auf demselben System befindet, können Sie mit localhostoder 127.0.0.1auf einen beliebigen Port verweisen, auf den Sie ihn auf demselben System eingestellt haben.

Wenn Sie möchten, dass Ihre DNS-Anfragen auch getunnelt werden (wenn dies nicht der Fall ist, wird in Ihren DNS-Suchanfragen angezeigt, welche Websites Sie besuchen möchten), können Sie einfach "Remote-DNS" aktivieren oder die gesamte Konfiguration in vornehmen about:config. Öffnen Sie es im letzten Fall, und legen Sie die folgenden Werte fest:

network.proxy.socks : 127.0.0.1
network.proxy.socks_port : 1337
network.proxy.socks.remote_dns : true
network.proxy.socks_version : 5
network.proxy.type : 1

Möglicherweise benötigen Sie diese Einstellung auch, um bestimmte Domänen oder Sites vom Tunneling auszuschließen:

network.proxy.no_proxies_on : localhost, 127.0.0.1, 192.168.0.0/24, .yourcompany.com

Diese Antwort wurde aus Frankreich geschrieben, aber über Schweden getunnelt :)

pzkpfw
quelle
Dies würde nur bei Firefox funktionieren.
Braiam
4
Es ist in keiner Weise Firefox-spezifisch. Ich habe den Firefox-Abschnitt als Dienst aufgenommen, da dies normalerweise der Zweck von SSH-Tunneling ist. Es funktioniert in jeder Anwendung, die SOCKS-Proxies unterstützt (ssh ist egal).
pzkpfw
2
Apropos Einrichten des Browsers für die Verwendung des Proxys. Wenn Sie Google Chrome verwenden, müssen Sie den Proxy in den Netzwerkeinstellungen von Ubuntu deklarieren , da dies von Google Chrome verwendet wird. Es gab inoffizielle CLI-Optionen, um den Proxy ohne diese zu deklarieren. Aber seit einigen Wochen ist das nicht mehr möglich.
MadMike
Danke, du hast mich aus der Hölle gebracht. Und ich bin nur angekommen, weil ich Ihre Antwort vor ungefähr 10 Stunden nicht richtig durchgelesen habe. Hätte aufpassen -Dund sich -ptrennen sollen.
Lakesare
Auch leichter zu merken:ssh -D 1337 user@host
Alcalyn