Attivare un tunnel inverso per pubblicare un servizio dietro NAT

Spesso, con l’aggiunta di ulteriori opportuni accorgimenti, è utile poter utilizzare alcuni servizi disponibili all’interno di una rete locale in una sede remota. L’ostacolo in questo caso è costituito dalla funzione NAT che a meno di riconfigurazione dei nodi intermedi non consente un instradamento diretto al server oggetto di interesse: una possibile soluzione è quella di attivare un tunnel inverso.

Una delle funzionalità di OpenSSH è quella di poter attivare dei tunnel; per lo scopo prefissato l’unico prerequisito è poter avere accesso verso la macchina che intende consumare direttamente tale servizio, ovvero anche nel caso sia designato come macchina intermedia (l’idea è quella di attivare un proxy).

Esempio per tunnel inverso dietro NAT

Creare un tunnel inverso con SSH

Il caso più semplice può essere quello di pubblicare un servizio HTTP: l’opzione di nostro interesse è -R alla quale va indicato come parametro una stringa composta dalla porta sull’host remoto al quale il servizio verrà consumato, l’indirizzo della macchina che offre il servizio e la porta, separati da : pertanto la seguente sintassi riassume un classico esempio

ssh -R 10080:localhost:80 utente@macchina.esempio.it

Come anticipato, all’interno di macchina.esempio.it è disponibile alla porta 10080 il servizio HTTP che comunica con la macchina originale e rende disponibile attraverso il tunnel inverso il servizio che lì si trova alla porta 80.

Alternative

In alternativa all’utilizzo di ssh, esistono alcuni servizi che semplificano la configurazione e l’utilizzo, con dei piani introduttivi di primo utilizzo gratuiti.

Quasi sempre sono include delle funzionalità aggiuntive utili per la pubblicazione di demo o sviluppo di servizi web, console di monitoraggio delle richieste e utilità per l’analisi di webhook. I costi dei vari servizi sono piuttosto accessibili e convenienti per una disponibilità già pronta per queste necessita e con profili di offerta diversificati dal singolo utente ad entità più strutturate.

Aperto a segnalazioni per ulteriori alternative.