
NAT Tunnel: per servire facilmente da dietro NAT
Se hai accesso a un server con IP pubblico e porte non filtrate puoi eseguire il server NAT Tunnel (NT) sul server, e il client NT sulla tua macchina dietro NAT. Il server richiede 2 porte aperte: una per la comunicazione con il client NT (--admin), l'altra per i client normali per connettersi (--public: questa è la porta che vuoi che i tuoi utenti usino).
Il client NT apre una connessione all'IP/porta admin del server. Non appena il server riceve una nuova connessione, segnala al client NT, che crea una nuova connessione tunnel verso il server, che viene poi connessa al servizio desiderato lato client NT (--local)
La connessione tra client NT e server NT sull'interfaccia admin è protetta da un segreto condiviso contro l'uso non autorizzato. Un avversario in grado di intercettare i pacchetti potrebbe decifrare il segreto se non è sufficientemente complesso. Si consigliano almeno 10 caratteri e numeri casuali.
Esempio: Hai un server HTTP in ascolto sulla tua macchina locale sulla porta 80. Vuoi renderlo disponibile sul tuo cloud server/VPS/etc. all'IP pubblico sulla porta 7000. Usiamo la porta 8000 sul cloud server per il canale di controllo.
Server:
natsrv.py --mode server --secret s3cretP4ss --public 0.0.0.0:7000 --admin 0.0.0.0:8000
Client:
natsrv.py --mode client --secret s3cretP4ss --local localhost:80 --admin example.com:8000