Come posso impostare un proxy SOCKS locale che tunnel il traffico attraverso SSH?


30

Supponiamo di avere accesso a un server SSH che supporta il tunneling e mi trovo su un PC che esegue * Ubuntu, come posso impostare un proxy SOCKS locale che esegue il tunneling del traffico attraverso quel server SSH prima di raggiungere Internet?

Risposte:


45

Il file sshbinario che usi quando ti connetti a un server che esegue ssh supporta l'esecuzione di un proxy SOCKS pronto all'uso, con il -Dflag. Esempio:

ssh -D 1337 -f -C -q -N user@remote -p 22
  • -D 1337indica sshdi avviare localmente un server SOCKS sulla porta 1337.
  • -f attiva il processo in background.
  • -C Attiva la compressione.
  • -q abilita la "Modalità silenziosa", poiché lo scopo qui è solo quello di tunnelare, non ci interessa davvero l'output degli errori e simili.
  • -Ndice sshche non verrà inviato alcun comando (si -flamenta se non lo specifichiamo).
  • -pspecifica quale porta utilizzare; ovviamente questo è predefinito a 22, quindi l'affermazione sopra è inutile, ma inclusa per chiarezza.

Quando il tuo server SOCKS è attivo e funzionante, devi semplicemente assicurarti che l'applicazione (in genere un browser Web) stia tentando di connettersi al proxy SOCKS locale e non alla normale Internet.

In Firefox 29 (spiegato qui come esempio), questo si ottiene accedendo al menu (le tre salsicce in alto a destra), seguito da Preferenze> Avanzate> Rete> (Connessione)> Impostazioni ... compila il campo CALZE! Poiché il proxy si trova sullo stesso sistema, è possibile utilizzare localhosto 127.0.0.1puntare indietro a qualsiasi porta su cui è stato impostato sullo stesso sistema.

Se è necessario eseguire il tunneling anche delle richieste DNS (in caso contrario, le ricerche DNS mostreranno quali siti Web si sta tentando di visitare), è possibile semplicemente selezionare "DNS remoto" o eseguire l'intera configurazione about:config. Nell'ultimo caso, aprilo e imposta questi valori:

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

Potrebbe inoltre essere necessaria questa impostazione per escludere determinati domini o siti dal tunneling:

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

Questa risposta è stata scritta dalla Francia, ma ha attraversato un tunnel attraverso la Svezia :)


Funzionerebbe solo su Firefox.
Braiam,

4
Non è in alcun modo specifico di Firefox, ho incluso la sezione Firefox come servizio poiché di solito è quello per cui le persone usano il tunneling SSH, funzionerebbe in qualsiasi applicazione che supporti i proxy SOCKS (a ssh non importa).
pzkpfw,

2
Parlando di impostare il browser per usare il proxy. Se usi google chrome dovrai dichiarare il proxy nelle impostazioni di rete di ubuntu, poiché sarà quello che utilizzerà Google Chrome. Opzioni di CLI non ufficiali sono state disponibili per dichiarare il proxy senza questo. Ma da alcune settimane questo non è più possibile.
MadMike,

Grazie, mi hai fatto uscire dall'inferno. E ci sono arrivato solo perché non ho letto correttamente la tua risposta circa 10 ore fa. Avrebbe dovuto prestare attenzione -De -pparte.
Lakesare

Anche più facile da ricordare:ssh -D 1337 user@host
Alcalyn
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.