Fonctionnement du NAT Traversal (2020)
(tailscale.com)Principe de fonctionnement du NAT Traversal
-
Problème de base : il s’agit d’établir une connexion pair à pair entre deux machines. Dans le cas de Tailscale, l’objectif est de mettre en place un tunnel WireGuard®. Cette technique est utilisée dans des domaines variés comme WebRTC, la téléphonie VoIP ou les jeux vidéo.
-
Protocoles basés sur UDP : le NAT Traversal nécessite un protocole fondé sur UDP. Il est aussi possible d’utiliser TCP, mais cela augmente la complexité et peut nécessiter une personnalisation du noyau.
-
Contrôle direct des sockets réseau : un contrôle direct des sockets qui envoient et reçoivent les paquets réseau est nécessaire. Il n’est pas possible de traverser le NAT avec des bibliothèques réseau existantes.
-
Utilisation d’un proxy local : si l’accès direct aux sockets est difficile, un proxy local peut être utilisé pour effectuer le NAT Traversal et le relais de paquets.
Comprendre les pare-feu
-
Pare-feu à états : la plupart des équipements NAT intègrent un pare-feu à états, qui mémorise les paquets déjà vus et s’appuie sur cet historique pour traiter les nouveaux paquets.
-
Règles du trafic UDP : le pare-feu autorise les paquets UDP entrants qui correspondent à des paquets sortants déjà observés.
-
Faire face aux pare-feu : si tous les pare-feu regardent dans la même direction, cela revient à réinventer la communication client/serveur. Mais le problème apparaît lorsque deux clients essaient de communiquer directement.
Contourner les pare-feu
-
Résoudre le problème sans reconfigurer les pare-feu : il faut une méthode capable de résoudre le problème sans reconfigurer les pare-feu. Si un paquet UDP a la bonne source et la bonne destination, un paquet qui ressemble à une réponse sera autorisé.
-
Partage d’informations : les pairs doivent connaître à l’avance les informations
ip:portde l’autre. Pour cela, un serveur de coordination est utilisé pour synchroniser les informationsip:port.
Nature du NAT
-
Équipements NAT : les équipements NAT modifient les paquets, et en particulier le source NAT (SNAT) pose problème. Il est utilisé pour connecter plusieurs appareils à Internet.
-
Découverte du NAT : puisque les équipements NAT modifient les paquets, les deux pairs ne connaissent pas les
ip:portde l’autre. Le protocole STUN est utilisé pour prendre en charge la découverte du NAT.
STUN et découverte du NAT
-
Protocole STUN : lorsqu’un client derrière un NAT communique avec un serveur sur Internet, le serveur peut voir l’
ip:portpublic créé par l’équipement NAT. Un serveur STUN fournit cette information au client. -
Limites : STUN ne fonctionne que dans certains cas et a particulièrement de fortes chances d’échouer avec des passerelles NAT présentées comme des équipements de sécurité.
Solutions supplémentaires
-
Utilisation d’un relais : si la connexion directe échoue, les paquets sont transmis via un relais permettant aux deux côtés de communiquer sans interruption.
-
Protocole DERP : Tailscale utilise DERP (Detoured Encrypted Routing Protocol) pour relayer les données et prendre en charge la découverte du NAT.
-
Protocoles de mappage de ports : des protocoles de mappage de ports comme UPnP IGD, NAT-PMP et PCP peuvent être utilisés pour demander aux équipements NAT de se comporter de manière plus coopérative.
Aucun commentaire pour le moment.