
NAT Tunnel : pour servir sans effort depuis derrière un NAT
Si vous avez accès à un serveur avec une IP publique et des ports non filtrés, vous pouvez exécuter le serveur NAT Tunnel (NT) sur le serveur, et le client NT sur votre machine derrière un NAT. Le serveur nécessite 2 ports ouverts : un pour la communication avec le client NT (--admin), l'autre pour que les clients réguliers se connectent (--public : c'est le port que vous voulez que vos utilisateurs utilisent).
Le client NT ouvre une connexion vers l'IP/port admin du serveur. Dès que le serveur reçoit une nouvelle connexion, il signale au client NT, qui crée alors une nouvelle connexion tunnel vers le serveur, laquelle est ensuite connectée au service souhaité du côté du client NT (--local).
La connexion entre le client NT et le serveur NT sur l'interface admin est protégée par un secret partagé contre les utilisations non autorisées. Un adversaire capable d'intercepter des paquets pourrait déchiffrer le secret s'il est de complexité insuffisante. Au moins 10 caractères et chiffres aléatoires sont recommandés.
Exemple : Vous avez un serveur HTTP qui écoute sur votre machine locale sur le port 80. Vous voulez le rendre disponible sur l'IP publique de votre serveur cloud/VPS/etc sur le port 7000. Nous utilisons le port 8000 sur le serveur cloud pour le canal de contrôle.
Serveur :
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