Tunnel SSH: ssh -L/-R

10 ottobre 2007

OpenSSH client tra le tante funzionalità utili presenta la possibilità di creare un tunnel tra due macchine e farci passare qualsiasi servizio. Ma vediamo di provare a spiegare di cosa si tratta

Definizione di uno schema di rete

Supponiamo che la nostra rete sia sviluppata in questo modo:

ssh_tunnel_-_sheet

Esempio tunnel left-to-right

Supponiamo di dover raggiungere un servizio http attivo su 192.168.2.2/24 sulla porta 80 che non è visibile all’esterno della rete; inoltre supponiamo che sulla macchina 192.168.2.1/24 sia attivo un server SSH sulla porta 22 che viene traslata da un nat sull’interfaccia con ip pubblico (nell’esempio 10.20.30.40/32) sulla porta 1234. Localmente useremo la porta 54321 per la connessione al tunnel.

I procedimenti sono molto semplici, prima li scriviamo e poi li spieghiamo:

user_a@192.168.1.2:~$  ssh 10.20.30.40 -p 1234 -L 54321:192.168.2.2:80
user_a@192.168.1.2:~$  browser localhost:54321

Con il primo comando ci connettiamo normalmente via ssh all’host 192.168.2.1 passando dal suo ip pubblico che con una traslazione gira il traffico da 10.20.30.40:1234 a 192.168.2.1:22. Il primo comando inoltre prepara un tunnel utilizzabile da 192.168.1.2 sulla porta 54321 che, passando per la nostra connessione ssh, proseguirà verso l’host 192.168.2.2 della LAN2 contattando la sua porta 80.

Esempio tunnel right-to-left

Supponiamo ora che la connessione ssh venga instaurata sempre da 192.168.1.2 in LAN1 ma che il tunnel debba essere fruibile da 192.168.2.1 (nel caso precedente fruito da 192.168.1.2) o da qualcuno nella sua rete che possa collegarsi a lui, quindi con un ipotetico servizio htto sulla porta 80 di 192.168.1.2. Per fare questo si usa l’opzione -R. Nel esempio seguente faremo in modo che il tunnel venga utilizzato da 192.168.2.2.

user_a@192.168.1.2:~$  ssh 10.20.30.40 -p 1234 -R 54321:192.168.1.2:80
user_b@192.168.2.2:~$  browser 192.168.2.1:54321

Con il primo comando ci connettiamo allo stesso modo e rendiamo il tunnel fruibile da LAN2 mentre con il secondo lo chiamiamo e ci colleghiamo.

Conclusioni

All’inizio sarà un po’ complicato, sia capire bene come funziona, sia capire quello che ho scritto ma, provando e rileggendo, dovreste riuscire dopo un po’ a prendere dimestichezza con le due funzionalità. Ovviamente possiamo rendere ancor più complicate le cose concatenando tunnels e utilizzando altre funzionalità ma il resto spetta a voi.

Annunci

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger hanno fatto clic su Mi Piace per questo: