IPv6client64:ff9b::c633:642aNAT64translator+ DNS64IPv4server198.51.100.42v6 client reaches v4 destination, transparently

NAT64 et DNS64

11 lecture min.Réseautage

Certains réseaux cellulaires fonctionnent uniquement sur IPv6 depuis des années – T-Mobile US, une grande partie de Reliance Jio. Leurs utilisateurs accèdent toujours aux sites IPv4 comme le reste du Web. La traduction s'effectue via NAT64 et DNS64, une paire de technologies qui relient les mondes IPv4 et IPv6. Comprendre comment clarifie l'acte intermédiaire tranquille de la transition IPv6.

Le corps complet de l’article est fourni en anglais ci-dessous.

NAT64 et DNS64 sont les technologies qui permettent aux clients IPv6 uniquement d'atteindre des serveurs IPv4 uniquement. Ensemble, ils permettent aux réseaux de déployer uniquement IPv6 sans perdre l'accès à la partie IPv4 d'Internet. T-Mobile US, plusieurs autres grands opérateurs de téléphonie mobile et de nombreux réseaux d'entreprise utilisent ce modèle en production.

Le problème qu'ils résolvent

La transition IPv4 vers IPv6 a été progressive. De nombreux serveurs sont encore uniquement IPv4. Si votre réseau fonctionne uniquement en IPv6, vos clients ne peuvent pas accéder directement à ces serveurs car les protocoles ne sont pas rétrocompatibles.

La réponse naïve est la double pile : chaque appareil ayant à la fois des adresses IPv4 et IPv6. La double pile fonctionne mais nécessite de maintenir indéfiniment deux piles réseau parallèles. Certains réseaux ont décidé d'adopter IPv6 à pile unique et d'utiliser la traduction pour la portée IPv4 restante.

Comment fonctionne NAT64

NAT64 est un traducteur avec état à la limite du réseau. Il possède : 

  • Une interface IPv6 face au réseau IPv6 uniquement
  • Une interface IPv4 face à l'Internet IPv4 (avec un pool d'adresses IPv4)
  • Une table de traduction mappant les sources IPv6 aux ports IPv4 alloués

Lorsqu'un client IPv6 souhaite atteindre un Serveur IPv4 : 

  1. Le client envoie un paquet IPv6 à une adresse IPv6 spéciale qui code la destination IPv4.
  2. Le traducteur NAT64 reçoit le paquet sur son interface IPv6.
  3. Il extrait la destination IPv4 de l'adresse IPv6, alloue un port à partir de son pool IPv4 et réécrit le paquet sous forme de paquet IPv4 avec la source + le port IPv4 alloués.
  4. Le paquet circule normalement vers la destination IPv4.
  5. Le paquet de réponse revient à l'interface IPv4 du NAT64.
  6. NAT64 recherche le mappage, reconstruit le paquet IPv6 et le renvoie au client.

Conceptuellement similaire à NAT44 (le type normal), mais avec traduction de protocole à chaque étape.

L'adresse IPv6 avec IPv4 intégré

NAT64 utilise un préfixe IPv6 spécifique (le préfixe bien connu est 64:ff9b::/96) avec l'adresse IPv4 intégrée dans le dernier 32 bits :

  • Pour atteindre 198.51.100.42 via NAT64, le client utilise l'adresse 64:ff9b::c633:642a (dont les 32 derniers bits codent 198.51.100.42 en hexadécimal).

Le client n'a pas besoin de sachez que c'est une traduction - il voit juste une adresse IPv6. Mais où le client obtient-il cette adresse spéciale ?

DNS64 comble le vide

Most les clients ne se connectent pas directement aux adresses IP : ils se connectent aux noms d'hôtes via DNS. DNS64 est un résolveur DNS modifié qui gère la synthèse : 

  1. Le client interroge le DNS par exemple.com. Le résolveur
  2. DNS64 recherche l'enregistrement AAAA (IPv6). S'il existe, renvoyez-le normalement.
  3. Si seul un enregistrement A (IPv4) existe, DNS64 synthétise un faux enregistrement AAAA en intégrant l'adresse IPv4 dans le préfixe NAT64.
  4. Le client récupère ce qui ressemble à un enregistrement AAAA normal.
  5. Le client se connecte à l'adresse IPv6.
  6. Le Le paquet passe par NAT64 et est traduit en IPv4.

Le client n'est au courant de rien de tout cela. Il voit IPv6, envoie IPv6, récupère les réponses en IPv6. La traduction est invisible.

464XLAT pour la compatibilité client

NAT64 + DNS64 fonctionnent pour presque tout, mais certaines applications tombent en panne, notamment celles qui transmettent des littéraux IPv4 (pas des noms d'hôte). La solution est 464XLAT (CLAT — Traducteur côté client) :

  • Le périphérique client exécute un CLAT qui prétend avoir une pile IPv4.
  • Les applications qui ont besoin d'IPv4 communiquent avec le CLAT, ce qui se traduit en IPv6.
  • Le paquet IPv6 passe par NAT64 normalement.

Android et iOS prennent tous deux en charge 464XLAT. T-Mobile US utilise cette combinaison. Le résultat : un téléphone Android sur T-Mobile est uniquement IPv6 au niveau de la couche réseau, mais les applications se comportent comme si IPv4 fonctionnait toujours.

Où il est déployé

  • T-Mobile US — exécute IPv6 uniquement avec NAT64 depuis 2014.
  • Reliance Jio (Inde) — Déploiement IPv6 uniquement, NAT64 pour les destinations IPv4.
  • Many entreprise Réseaux avec des réseaux internes principalement IPv6 utilisent NAT64 pour les anciens services IPv4 uniquement.
  • Certains fournisseurs de cloud proposent des services NAT64 pour IPv6 uniquement. VPCs.

Limitations

  • State-heavy. Le traducteur conserve l'état pour chaque connexion active. Les besoins en ressources augmentent avec le trafic.
  • Limites par connexion. Comme tout NAT, le pool de ports fixe un plafond pour les connexions simultanées par adresse IPv4.
  • Certains protocoles ont du mal. Les protocoles qui intègrent des adresses IP dans leur charge utile (anciens SIP, FTP) nécessitent des passerelles de couche application. La plupart des protocoles modernes n'ont pas ce problème.
  • DNS-traduction uniquement. Les applications qui contournent le DNS et se connectent aux littéraux IPv4 nécessitent des complications CLAT.
  • DNSSEC. Les enregistrements AAAA synthétisés ne sont pas signés par l'origine ; les clients validant DNSSEC peuvent les rejeter. Des solutions existent mais ajoutent de la complexité.

Le fin de partie

NAT64 est une technologie de transition. L’état final attendu est IPv6 suffisamment universel pour que les destinations IPv4 uniquement soient de rares exceptions gérées en périphérie. En attendant, NAT64 + DNS64 + 464XLAT permet aux réseaux de passer uniquement à IPv6 sans dégradation du service. La combinaison est en production depuis plus d'une décennie et est suffisamment mature pour un déploiement sérieux.

Questions fréquemment posées

Suis-je derrière NAT64 ?
Probablement pas, sauf si vous utilisez T-Mobile US, Reliance Jio ou un réseau spécifique IPv6 uniquement. La plupart des réseaux domestiques et d'entreprise sont à double pile (les deux protocoles) plutôt qu'IPv6 + NAT64 purs.
NAT64 affecte-t-il les performances ?
Modestement. L'étape de traduction ajoute des microsecondes ; la table d'état ajoute une surcharge de mémoire. Pour une navigation Web typique, l’impact est incommensurable. Pour les charges de travail à très haut débit de connexion, les frais généraux sont importants.
Le VPN fonctionne-t-il avec NAT64 ?
Surtout. La plupart des clients VPN tunnelisent IPv4 par défaut ; NAT64 les gère de manière transparente. Certains protocoles VPN qui ne fonctionnent pas bien avec le double NAT peuvent rencontrer des problèmes ; les configurations modernes WireGuard et OpenVPN le gèrent correctement.
Pourquoi tous les réseaux n'utilisent-ils pas NAT64 ?
La double pile est plus simple sur le plan opérationnel et bien comprise. NAT64 ajoute de la complexité pour un bénéfice marginal lorsque IPv4 fonctionne toujours pour les clients. L'IPv6 pur uniquement avec NAT64 est particulièrement intéressant lorsqu'une organisation ne dispose pas de suffisamment d'adresses IPv4 ou souhaite s'engager sur IPv6.
Quelle est la différence entre NAT64 et CGNAT ?
CGNAT est une traduction IPv4 vers IPv4 (IPv4 privé à l'intérieur, IPv4 public à l'extérieur). NAT64 est une traduction IPv6 vers IPv4. Différentes couches de protocole ; les deux sont des technologies de transition pour la rareté d’IPv4 mais résolvent des problèmes différents.
NAT64 et DNS64 expliqués : comment les réseaux uniquement IPv6 communiquent avec Internet IPv4