it-swarm-eu.dev

Come posso tunnelare tutto il mio traffico di rete tramite SSH?

Ogni volta che uso internet da una posizione non sicura (come il wifi pubblico) mi piace usare un tunnel ssh (ssh -D port Host) per assicurarmi che il traffico non possa essere annusato. Sfortunatamente, sembrano esserci molte applicazioni che non forniscono un modo per specificare un proxy (Flash è un esempio importante).

Sembra che ci dovrebbe essere un modo per usare un tunnel per tutto il traffico di rete dal mio computer, ma sono completamente all'oscuro di come farlo. Qualsiasi aiuto sarebbe molto apprezzato.

111
Guest

Per fare ciò che vuoi, ti consiglio di sshuttle .

Lo usi in questo modo:

./sshuttle -r [email protected] 0.0.0.0/0 -vv

Farà automaticamente il tunnel del traffico TCP per te. È possibile aggiungere l'argomento --dns per farlo filtrare anche il traffico DNS. Il server remoto deve avere solo Python installato.

Se vuoi solo tunnelare programmi specifici, raccomanderei proxychains .

Una volta installato, avvia il tuo proxy ssh socks in questo modo:

ssh -fND 127.0.0.1:<local port> [email protected]

Verrà avviato un proxy "SOCKS" in ascolto su <porta locale>.

Quindi modificare /etc/proxychains.conf in modo che punti alla stessa porta di <porta locale>.

Infine avvia il tuo programma che vuoi proxy-ed in questo modo:

proxychains <program name>

Dovrebbe funzionare. Tuttavia, alcuni programmi avranno problemi a lavorare con Proxy Chains. Tieni presente, inoltre, che con Firefox, devi modificare altri elementi in about: config per costringerlo a fare ricerche DNS attraverso il proxy invece di bypassarlo.

Come nota aggiuntiva, sui browser web. Se supportano i proxy dei socks, non è necessario fare nulla in più per farli utilizzare il tunnel ssh sopra citato, basta inserire 127.0.0.1 per il server proxy SOCKS e la <porta locale> per la porta proxy.

EDIT 3/29/16

Dal momento che questo post sta ancora vedendo alcuni upvotes, ho pensato di aggiornarlo. Proxychains è ancora presente nella maggior parte dei repository Linux e funziona ancora su Linux. Tuttavia, il progetto viene effettivamente abbandonato e non funziona su OSX. Per Linux o OSX, consiglio vivamente l'aggiornamento a un fork ancora gestito: proxychains-ng: https://github.com/rofl0r/proxychains-ng

Oltre a lavorare su Linux e OSX, è facile da compilare e ha anche un supporto molto migliore per il tunneling DNS.

Dovrei menzionare anche un'altra opzione, che è redsocks. Funziona in modo simile a proxychains (-ng) ed è anche probabile nel tuo repo di dist: https://github.com/darkk/redsocks

56
shellster

man ssh fornisce un esempio di esattamente questo. Un vpn basato su ssh:

SSH-BASED VIRTUAL PRIVATE NETWORKS
     ssh contains support for Virtual Private Network (VPN) tunnelling using
     the tun(4) network pseudo-device, allowing two networks to be joined
     securely.  The sshd_config(5) configuration option PermitTunnel controls
     whether the server supports this, and at what level (layer 2 or 3 traf-
     fic).

     The following example would connect client network 10.0.50.0/24 with
     remote network 10.0.99.0/24, provided that the SSH server running on the
     gateway to the remote network, at 192.168.1.15, allows it:

       # ssh -f -w 0:1 192.168.1.15 true
       # ifconfig tun0 10.0.50.1 10.0.99.1 netmask 255.255.255.252

~~ snip ~~

     Since a SSH-based setup entails a fair amount of overhead, it may be more
     suited to temporary setups, such as for wireless VPNs.  More permanent
     VPNs are better provided by tools such as ipsecctl(8) and isakmpd(8).

Una volta che hai questa nuova interfaccia, dovresti semplicemente renderla predefinita, che è una domanda diversa.

48
PriceChild

Cerca l'opzione "Tunnel" in ssh. Ciò crea un dispositivo tunnel a cui è possibile assegnare un indirizzo IP e quindi si modifica il percorso predefinito per utilizzare quel tunnel.

6

Ho sviluppato un software che consente di inoltrare tutti TCP e facoltativamente UDP attraverso un proxy SOCKS5, a livello di sistema.

http://code.google.com/p/badvpn/wiki/tun2socks

Può persino essere installato su un router per inoltrare tutte le connessioni dai computer sulla LAN.

4
Ambroz Bizjak