Transition IPv4 → IPv6
Dual-stack, tunnels 6in4/6to4/ISATAP, NAT64/DNS64, DHCPv6, configuration Cisco & Linux
Mécanismes de transition — Vue d'ensemble
| Mécanisme | Description | Use case | Complexité | |--------------------|------------------------------------------------------------|-----------------------------------------------|------------| | Dual-stack | IPv4 + IPv6 simultanés sur chaque interface et nœud | Méthode recommandée — migration progressive | Faible | | 6in4 (manuel) | Encapsulation IPv6 dans IPv4 (proto 41) | Deux sites reliés via Internet IPv4 uniquement| Moyenne | | 6to4 (automatique) | Préfixe 2002::/16 dérivé de l'IP publique IPv4 | Déprécié — utiliser 6in4 ou tunnel broker | Moyenne | | ISATAP | Tunnel intra-site IPv6 dans IPv4 (hosts → routeur) | Migration interne sans changer l'infra IPv4 | Moyenne | | NAT64 + DNS64 | Accès IPv4 depuis des clients IPv6-only | Réseaux mobiles, clouds IPv6-only | Élevée | | 464XLAT (CLAT+PLAT)| Double traduction IPv4↔IPv6↔IPv4 | Terminaux mobiles IPv6-only sur réseau 4G/5G | Élevée |
6to4 (2002::/16) et Teredo sont officiellement dépréciés (RFC 7526, RFC 8190). Ne pas les déployer dans un environnement de production. Préférer un tunnel 6in4 explicite ou un service de tunnel broker (Hurricane Electric : tunnelbroker.net).
Dual-Stack
Principe :Chaque nœud et chaque interface supporte IPv4 ET IPv6 simultanémentDeux tables de routage indépendantes (ip route / ipv6 route)Le choix du protocole dépend du DNS : AAAA → IPv6, A → IPv4(RFC 6724 : IPv6 préféré si disponible — Happy Eyeballs RFC 8305)
! Cisco — Dual-Stack sur un routeurconf tipv6 unicast-routing ! OBLIGATOIRE — désactivé par défautinterface GigabitEthernet0/0ip address {{IPV4_ADDR}} {{IPV4_MASK}}ipv6 address {{IPV6_ADDR}}/{{PREFIX}}ipv6 address fe80::1 link-localno shutdown! Vérification des deux tablesshow ip routeshow ipv6 routeshow interfaces GigabitEthernet0/0
# Linux — Dual-Stack# L'activation IPv6 est automatique si le noyau est compilé avec IPv6# Vérifier les adressesip addr showip -4 addr showip -6 addr show# Vérifier les deux tables de routageip -4 route showip -6 route show# Activer IPv6 si désactivé (net.ipv6.conf.all.disable_ipv6=1)sysctl -w netipv6confalldisable_ipv60sysctl -w netipv6confdefaultdisable_ipv60
Tunnel 6in4 Manuel (proto 41)
Encapsulation directe d'IPv6 dans des paquets IPv4 (IP proto 41)Les deux extrémités du tunnel connaissent l'IP publique IPv4 de l'autrePas de découverte automatique — configuration explicite des deux côtés
Cisco — Tunnel 6in4
conf tinterface Tunnel0description Tunnel IPv6-in-IPv4 vers {{REMOTE_SITE}}tunnel mode ipv6ip ! mode 6in4 (proto 41)tunnel source {{LOCAL_WAN_IP}} ! IP publique localetunnel destination {{REMOTE_WAN_IP}} ! IP publique distanteipv6 address 2001:db8:tunnel::1/64ipv6 address fe80::1 link-localno shutdown! Route IPv6 vers le site distant via le tunnelipv6 route 2001:db8:remote::/48 Tunnel0! Côté distant (R2)interface Tunnel0tunnel mode ipv6iptunnel source {{REMOTE_WAN_IP}}tunnel destination {{LOCAL_WAN_IP}}ipv6 address 2001:db8:tunnel::2/64ipv6 address fe80::2 link-localno shutdownipv6 route 2001:db8:local::/48 Tunnel0! Vérificationsshow interface Tunnel0show ipv6 routeping ipv6 2001:db8:tunnel::2 source Tunnel0
Linux — Tunnel 6in4 (SIT)
# Créer le tunnel SIT (Simple Internet Transition)ip tunnel add tun0 mode sit remote {{REMOTE_V4}} local {{LOCAL_V4}} ttl 64ip link set tun0 upip -6 addr add 2001db8tunnel1/64 dev tun0# Route vers le réseau distantip -6 route add 2001db8remote/48 dev tun0# Vérificationsip tunnel show tun0ip -6 addr show dev tun0ip -6 route showping6 2001db8tunnel2# Persistance (fichier /etc/network/interfaces ou systemd-networkd)# Voir la documentation de la distribution
DHCPv6 Stateful
Cisco — Serveur DHCPv6
conf t! Définir le pool DHCPv6ipv6 dhcp pool {{POOL_NAME}}address prefix 2001:db8:1::/64 lifetime infinite infinitedns-server 2001:4860:4860::8888 ! Google DNS IPv6dns-server 2001:4860:4860::8844domain-name {{DOMAIN_NAME}}!sip-server ipv6 2001:db8:1::10 ! optionnel! Activer le serveur DHCPv6 sur l'interfaceinterface GigabitEthernet0/0ipv6 address 2001:db8:1::1/64ipv6 dhcp server {{POOL_NAME}}ipv6 nd managed-config-flag ! M=1 → DHCPv6 statefulipv6 nd other-config-flag ! O=1 → DNS via DHCPv6 (stateless)no shutdown! Vérifications DHCPv6show ipv6 dhcp poolshow ipv6 dhcp bindingshow ipv6 dhcp interface
Cisco — Relais DHCPv6
conf t! Sur l'interface du réseau client (entre clients et serveur DHCPv6)interface GigabitEthernet0/1ipv6 dhcp relay destination {{DHCPV6_SERVER_ADDR}}ipv6 nd managed-config-flagno shutdown
Linux — Client DHCPv6
# dhclient (ISC)dhclient -6 {{INTERFACE}}# wide-dhcpv6-clientdhcp6c -c /etc/wide-dhcpv6/dhcp6c.conf {{INTERFACE}}# systemd-networkd — fichier /etc/systemd/network/10-eth0.network# [Network]# DHCP=yes (ou ipv6 pour DHCPv6 uniquement)# IPv6AcceptRA=yes
NAT64 + DNS64
Objectif : permettre aux clients IPv6-only d'accéder aux serveurs IPv4-onlyArchitecture :Client IPv6 → DNS64 (resolver) → NAT64 (routeur de bordure) → Serveur IPv4Préfixe bien connu NAT64 : 64:ff9b::/96Synthèse d'adresse IPv6 : 64:ff9b::{{IPv4}}Exemple : 8.8.8.8 → 64:ff9b::808:808(8.8.8.8 en hex = 0x08080808 → 808:808)Calcul manuel :IP : 8.8.8.8 → décimal → hexadécimal8 = 08, donc 8.8 → 0808 → 0x080864:ff9b::0808:0808 → 64:ff9b::808:808DNS64 (RFC 6147) :Resolver synthétise une réponse AAAA si :1. Pas d'enregistrement AAAA natif pour le FQDN2. Enregistrement A présent → AAAA synthétisée = 64:ff9b::ALes clients IPv6-only peuvent alors contacter 64:ff9b::ALe NAT64 traduit la destination vers l'adresse IPv4 réellePréfixe personnalisé (RFC 7050) :Un opérateur peut utiliser son propre préfixe /96 à la place de 64:ff9b::/96Le préfixe est annoncé aux clients via DHCP option 108 ou RDNSS
NAT64 sur Linux (Jool)
# Installation Jool (kernel module NAT64)modprobe jooljool instance add --iptables --pool6 64ff9b/96# Configurer le pool IPv4 pour la traductionjool pool4 add --tcp {{PUBLIC_IPV4}}/32 1-65535jool pool4 add --udp {{PUBLIC_IPV4}}/32 1-65535jool pool4 add --icmp {{PUBLIC_IPV4}}/32 1-65535# Vérificationjool instance displayjool pool4 displayjool session display
OSPFv3 — Routage IPv6
OSPFv3 = OSPF pour IPv6 (RFC 5340)Utilise les LLA (fe80::/10) comme adresses source des paquets HelloRouter-ID obligatoirement en format IPv4 (32 bits) — souvent = loopback IPv4Instances séparées de OSPFv2 (processus indépendants)
conf t! Activer OSPFv3ipv6 router ospf 1router-id {{ROUTER_ID}} ! ex: 1.1.1.1 — format IPv4 obligatoirelog-adjacency-changes detail! Activer OSPFv3 par interfaceinterface GigabitEthernet0/0ipv6 ospf 1 area 0ipv6 ospf cost 10 ! optionnelinterface GigabitEthernet0/1ipv6 ospf 1 area 1! Vérifications OSPFv3show ipv6 ospf neighborshow ipv6 ospf neighbor detailshow ipv6 ospf databaseshow ipv6 route ospfshow ipv6 ospf interface brief
Checklist déploiement dual-stack
Activer IPv6 progressivement segment par segment — ne jamais désactiver IPv4 avant d'avoir validé la connectivité IPv6 de bout en bout sur le segment cible. En dual-stack, si IPv6 est cassé, les clients basculent automatiquement sur IPv4 (Happy Eyeballs) sans interruption visible — ce qui peut masquer des problèmes IPv6 en production pendant des semaines.