Avertissement : Cet article a été traduit de l’anglais par un LLM. La précision n’est pas garantie. Vous pouvez lire l’article original en anglais.
Aujourd’hui, j’ai appris l’existence de NAT64 et DNS64 : des mécanismes utilisés pour permettre aux réseaux IPv6 uniquement d’interagir avec des réseaux IPv4 uniquement. Ces mécanismes attribuent (localement) une adresse IP avec le préfixe bien connu 64:ff9b::/96 à tout service IPv4 uniquement auquel vous essayez d’accéder.
Récemment, en utilisant mon téléphone pour accéder à un service (nécessitant un accès via VPN) sur mon serveur personnel, j’ai obtenu une erreur “403 Forbidden”. “C’est bizarre,” me suis-je dit. “Je suis connecté via WireGuard, donc je devrais pouvoir y accéder…” En y regardant de plus près, j’ai remarqué quelque chose d’inattendu : le client WireGuard (configuré pour atteindre une adresse IPv4) était connecté à un endpoint IPv6 avec une adresse ressemblant à 64:ff9b::xxxx:xxxx. Après quelques investigations, j’ai découvert que d’une manière ou d’une autre, le réseau attribuait une IPv6 à mon serveur et forçait tout le trafic à passer par celle-ci.
Après quelques recherches, j’ai découvert que mon nouvel opérateur mobile utilisait un réseau IPv6 uniquement, et utilisait NAT64 et DNS64 pour se connecter aux réseaux et services IPv4 uniquement. En résumé, voici ce qui se passait :
- Mon téléphone envoyait une requête DNS au réseau pour accéder à
mysite.com - Le DNS de mon opérateur essayait de résoudre l’entrée DNS AAAA inexistante pour
mysite.com. N’arrivant pas à la résoudre, il créait une IPv6 dans64:ff9b::/96(basée sur l’enregistrement DNS A, en utilisant la RFC 5062) et la renvoyait à mon téléphone - En essayant de se connecter à
mysite.com, mon téléphone utilisait l’IPv6 attribuée. Le système de routage de mon opérateur utilisait ensuite NAT64 pour atteindre mon serveur en IPv4 - Comme la liste des Allowed IPs de mon Wireguard ne contenait que l’IPv4 et le CIDR VPN de mon serveur, le trafic n’était pas routé à travers celui-ci, et donc refusé par mon serveur
Le schéma suivant donne une bonne représentation de toutes les interactions entre les différents composants.

Heureusement, la correction était assez simple : modifier mon enregistrement DNS avec de nouvelles entrées AAAA et ajouter l’IPv6 de mon serveur à la configuration des Allowed IPs de WireGuard a permis de tout router correctement.
Sources et lectures complémentaires#
- DNS64: DNS Extensions for Network Address Translation from IPv6 Clients to IPv4 Servers (RFC 6147, IETF)
- IPv6 Addressing of IPv4/IPv6 Translators (RFC 5062, IETF)
- NAT64 and DNS64 (Wikipedia)
- NAT64/DNS64 (JPNIC - en japonais)
Crédits#
- Photo de couverture par Lars Kienle sur Unsplash