Qu'est-ce que la traversée de NAT ?
La plupart des appareils ne disposent pas de leur propre adresse internet publique ; ils se trouvent derrière une traduction d'adresses réseau (NAT) sur un routeur, qui partage une seule adresse publique entre de nombreux appareils internes. C'est parfait pour contacter des serveurs, mais cela signifie que deux appareils de ce type ne peuvent pas simplement se joindre directement. La traversée de NAT regroupe les techniques qui leur permettent malgré tout d'établir une connexion directe.
La traversée de NAT désigne l'ensemble des techniques qui permettent à deux appareils situés derrière des routeurs (NAT) d'établir une connexion directe, alors même qu'aucun des deux ne dispose d'une adresse publique que l'autre pourrait joindre.
Comment fonctionne la traversée de NAT
- 01
Un service de coordination (de signalisation) aide les deux pairs à découvrir l'adresse et le port sous lesquels chacun est visible de l'extérieur, c'est-à-dire la façon dont le monde les perçoit à travers leurs NAT.
- 02
STUN est un moyen courant pour un pair de découvrir sa propre adresse et son propre port publics tels qu'ils sont vus depuis l'extérieur de son NAT.
- 03
Munis de ces informations, les pairs tentent un « perçage de NAT » (hole punching) : tous deux envoient simultanément des paquets l'un vers l'autre, de sorte que chaque NAT ouvre un chemin pour le trafic de l'autre.
- 04
Lorsqu'un chemin direct ne peut pas être ouvert (certains NAT stricts le bloquent), un relais (souvent appelé TURN) peut acheminer le trafic en repli, au prix d'un saut supplémentaire.
Le perçage de NAT en UDP, étape par étape
Dans un déroulement type, chaque pair contacte un serveur de signalisation et, via STUN, découvre l'adresse et le port publics que présente son NAT. Le serveur communique le candidat externe de chaque pair à l'autre. Les deux pairs envoient alors des paquets vers l'adresse externe de l'autre à peu près simultanément. Le premier paquet sortant de chaque côté amène son NAT à créer un mappage temporaire dans l'attente d'une réponse ; lorsque le paquet de l'autre côté arrive, il correspond à ce mappage et passe. Une fois que quelques paquets ont circulé dans chaque sens, un chemin direct et bidirectionnel est ouvert, et le tunnel chiffré l'emprunte.
Quand un relais est nécessaire
Le perçage de NAT réussit pour la plupart des types de NAT, mais certains (les NAT dits symétriques, ou les pare-feu d'entreprise stricts) attribuent des ports imprévisibles ou bloquent la tentative, si bien qu'aucun chemin direct ne peut se former. Le repli est alors un relais : un serveur que les deux pairs peuvent atteindre et qui achemine leur trafic. Dans un système bien conçu, le relais se contente de retransmettre des paquets déjà chiffrés qu'il ne peut pas lire ; il ajoute de la latence et un saut, mais ne voit pas les données. Un bon réseau maillé ne recourt aux relais qu'en dernier ressort, lorsqu'un tunnel direct est impossible.
Lien avec Vexaro Mesh (en développement)
Vexaro Mesh, actuellement en développement, est conçu avec la traversée de NAT intégrée : les pairs derrière un NAT se connectent directement partout où le réseau le permet, et via un relais seulement là où il ne le permet pas. Les passerelles sont conçues pour monter des tunnels chiffrés sur n'importe quel lien, sans redirection de ports ni adresses publiques, ce qui garde courts les chemins de site à site.
Voir les fonctions prévues