1 points par GN⁺ 2025-01-06 | Aucun commentaire pour le moment. | Partager sur WhatsApp

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:port de l’autre. Pour cela, un serveur de coordination est utilisé pour synchroniser les informations ip: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:port de 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:port public 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.

Aucun commentaire pour le moment.