Comprendre IPv6 : adresses, commandes et sécurité

IPv4 commence à manquer d’adresses depuis les années 2010. IPv6 est son successeur, conçu pour adresser des milliards de milliards d’appareils. Ce guide explique son fonctionnement, sa structure, ses types d’adresses, les commandes pratiques sur Linux, Windows et macOS, ainsi que les mécanismes de transition.

Pourquoi IPv6 ?

IPv4, le protocole d’adressage réseau en service depuis 1983, utilise des adresses sur 32 bits. Cela autorise théoriquement 4,3 milliards d’adresses uniques — un chiffre qui paraissait astronomique dans les années 1980, mais insuffisant dès lors que smartphones, objets connectés et serveurs cloud ont explosé.

IPv4 — épuisement

L’IANA (autorité de nommage Internet) a distribué son dernier bloc d’adresses IPv4 en février 2011. Les registres régionaux (RIPE NCC pour l’Europe) ont suivi entre 2012 et 2020. Depuis, les adresses IPv4 publiques s’achètent et se revendent sur un marché secondaire.

IPv6 — l’espace infini

IPv6 utilise des adresses sur 128 bits, soit 2¹²⁸ adresses possibles — environ 340 sextillions (3,4 × 10³⁸). C’est assez pour attribuer des milliards d’adresses à chaque grain de sable de la Terre.

Structure d’une adresse IPv6

Une adresse IPv6 est composée de 128 bits, représentés sous forme de 8 groupes de 4 chiffres hexadécimaux, séparés par des deux-points (:).

Adresse complète :
2001:0db8:85a3:0000:0000:8a2e:0370:7334

├── Préfixe réseau (64 bits) ──────────────────┤ Interface ID (64 bits) ──────────┤

Règles de simplification

IPv6 autorise deux abréviations pour raccourcir l’écriture :

  • Supprimer les zéros initiaux dans chaque groupe : 0db8db8, 00000
  • Remplacer une suite de groupes nuls consécutifs par :: (une seule fois par adresse)
Exemples de simplification :
2001:0db8:85a3:0000:0000:8a2e:0370:7334
→ 2001:db8:85a3:::8a2e:370:7334

Adresse de loopback complète :
0000:0000:0000:0000:0000:0000:0000:0001
::1

Adresse non spécifiée :
0000:0000:0000:0000:0000:0000:0000:0000
::
Attention — Le double deux-points :: ne peut apparaître qu’une seule fois dans une adresse. Sinon il serait impossible de savoir combien de groupes nuls il remplace.

Types d’adresses IPv6

Unicast globale publique

Équivalent de l’IP publique IPv4. Préfixe 2000::/3. Routable sur Internet. Attribuée par le FAI.
2001:db8::/32 est réservée à la documentation.

Link-local locale

Automatiquement configurée sur chaque interface. Préfixe fe80::/10. Utilisée pour la découverte de voisins (NDP) et la configuration automatique. Non routable au-delà du lien local.

Loopback interne

Équivalent de 127.0.0.1 en IPv4. Une seule adresse : ::1. Utilisée pour tester la pile réseau locale de la machine.

Unique locale privée

Équivalent des adresses privées IPv4 (192.168.x.x). Préfixe fc00::/7 (en pratique fd00::/8). Non routable sur Internet. Utilisée dans les réseaux internes.

Multicast groupe

Adressage vers un groupe de destinataires. Préfixe ff00::/8. Remplace le broadcast d’IPv4. Exemples : ff02::1 (tous les nœuds), ff02::2 (tous les routeurs).

Anycast distribué

Même adresse assignée à plusieurs nœuds. Le paquet est acheminé vers le nœud le plus proche. Utilisé pour les serveurs DNS et CDN.

Préfixes et sous-réseaux

Comme en IPv4 avec le CIDR (/24, /16…), IPv6 utilise la notation préfixe/longueur. La longueur indique le nombre de bits réservés à la partie réseau.

PréfixeBits réseauUsage typique
/3232Bloc alloué à un FAI par le RIPE NCC
/4848Bloc alloué à un site / entreprise
/5656Bloc alloué à un client résidentiel (Freebox, Orange…)
/6464Sous-réseau standard — les 64 bits restants = Interface ID
/128128Adresse d’hôte unique (loopback, routes statiques précises)
Interface ID et SLAAC
En IPv6, la seconde moitié de l’adresse (64 bits) est l’Interface Identifier. Il peut être généré automatiquement par la machine via SLAAC (Stateless Address Autoconfiguration) à partir de l’adresse MAC (EUI-64) ou de manière aléatoire (Privacy Extensions) — sans nécessiter de serveur DHCP.

IPv4 vs IPv6 — comparatif

CritèreIPv4IPv6
Longueur d’adresse32 bits128 bits
NotationDécimale pointée : 192.168.1.1Hexadécimale à deux-points : 2001:db8::1
Nb d’adresses~4,3 milliards~340 sextillions
Configuration automatiqueDHCP requisSLAAC intégré (sans serveur)
NATTrès répandu (masquage)Non nécessaire (chaque hôte a une IP publique)
BroadcastOuiNon — remplacé par le multicast
En-têteVariable (20–60 octets)Fixe (40 octets) — plus simple à traiter
IPsecOptionnelIntégré (facultatif en pratique)
FragmentationPar les routeurs intermédiairesUniquement par la source (MTU discovery)
Déploiement FAI FRUniverselLargement déployé (Free, Orange, SFR, Bouygues)

Linux — commandes pratiques

Afficher les adresses IPv6

baship -6 addr show                          # toutes les interfaces
ip -6 addr show eth0                     # interface précise
ip -6 addr show scope global             # uniquement les adresses globales
ip -6 addr show scope link               # uniquement les link-local

Table de routage IPv6

baship -6 route show
ip -6 route show default                 # passerelle par défaut

Tester la connectivité

bashping6 ::1                                # loopback local
ping6 -c 4 google.com                    # test connectivité externe
ping6 -c 4 ipv6.google.com              # forcé en IPv6
traceroute6 ipv6.google.com             # traceroute IPv6

DNS — résolution IPv6 (enregistrements AAAA)

bashdig AAAA google.com                      # enregistrement IPv6 de google.com
dig AAAA +short google.com              # résultat compact
nslookup -type=AAAA google.com          # alternative

Connexion SSH via IPv6

bashssh user@2001:db8::1                     # adresse globale
ssh -6 user@monserveur.net              # forcer IPv6

# Avec une adresse link-local (interface obligatoire) :
ssh user@fe80::1%eth0

Désactiver IPv6 (temporaire)

bashsysctl -w net.ipv6.conf.all.disable_ipv6=1
sysctl -w net.ipv6.conf.default.disable_ipv6=1

Pour rendre la désactivation persistante, ajouter dans /etc/sysctl.conf :

sysctl.confnet.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1

Firewall — nftables / ip6tables

baship6tables -L -n -v                       # règles actuelles
ip6tables -A INPUT -p tcp --dport 22 -j ACCEPT   # autoriser SSH en IPv6
nft list ruleset                         # règles nftables (Linux moderne)

Windows — commandes pratiques

Afficher les adresses IPv6

cmdipconfig                                  # toutes les interfaces
ipconfig | findstr /i "ipv6"             # filtrer IPv6
powershellGet-NetIPAddress -AddressFamily IPv6 | Select InterfaceAlias,IPAddress,PrefixLength

Table de routage IPv6

cmdnetsh interface ipv6 show route
route print -6

Tester la connectivité

cmd / powershellping -6 ::1                               # loopback
ping -6 ipv6.google.com                  # test externe
tracert -6 ipv6.google.com              # traceroute IPv6

DNS — résolution AAAA

powershellResolve-DnsName google.com -Type AAAA
nslookup -type=AAAA google.com

Désactiver IPv6 sur une interface

powershell (admin)Disable-NetAdapterBinding -Name "Ethernet" -ComponentID ms_tcpip6

macOS — commandes pratiques

bashifconfig | grep inet6                     # toutes les adresses IPv6
ifconfig en0 | grep inet6               # interface Wi-Fi
networksetup -getinfo Wi-Fi             # infos réseau détaillées

ping6 -c 4 ipv6.google.com             # test connectivité
traceroute6 ipv6.google.com            # traceroute IPv6
dig AAAA +short google.com             # DNS AAAA

Mécanismes de transition

Le passage d’IPv4 à IPv6 ne se fait pas du jour au lendemain. Plusieurs mécanismes permettent la coexistence des deux protocoles pendant la période de transition.

Dual-Stack recommandé

L’hôte dispose simultanément d’une adresse IPv4 et d’une adresse IPv6. C’est le mécanisme le plus simple et le plus répandu. Les FAI français déploient massivement le dual-stack.

Tunneling 6in4

Encapsulation des paquets IPv6 dans des paquets IPv4. Utilisé pour relier deux îlots IPv6 à travers un réseau IPv4. Protocole 41 dans l’en-tête IPv4.

6to4 / Teredo

Mécanismes automatiques de tunneling. 6to4 utilise le préfixe 2002::/16. Teredo (Windows) encapsule dans UDP. Déconseillés en production — à désactiver si non utilisés.

NAT64 / DNS64

Permet à des clients IPv6-only de contacter des serveurs IPv4-only. Le routeur NAT64 traduit les paquets. Utilisé par certains opérateurs mobiles.

DS-Lite

Dual-Stack Lite — utilisé par les FAI qui manquent d’IPv4. Le client a une IPv6 native et partage une IPv4 publique via un tunnel AFTR chez le FAI (cas Free et certains opérateurs).

Happy Eyeballs

Algorithme RFC 8305 implémenté dans les navigateurs et OS modernes. Tente IPv6 et IPv4 en parallèle, choisit le plus rapide. Transparent pour l’utilisateur.

Sécurité

Attention — IPv6 contourne parfois le pare-feu IPv4
Si votre pare-feu ne filtre que le trafic IPv4, les connexions IPv6 peuvent passer en clair. Vérifiez que vos règles ip6tables / nftables / Windows Firewall couvrent aussi IPv6.

Bonnes pratiques

  • Activer les Privacy Extensions (RFC 4941) — génère des Interface IDs temporaires aléatoires pour éviter le tracking à partir de l’adresse MAC.
  • Filtrer ICMPv6 avec précaution — ICMPv6 est indispensable au fonctionnement d’IPv6 (NDP, PMTU…). Ne jamais bloquer ICMPv6 en totalité.
  • Désactiver les tunnels inutilisés — Teredo, 6to4, ISATAP peuvent créer des vecteurs d’attaque si non surveillés.
  • Sécuriser le NDP (Neighbor Discovery Protocol) — équivalent d’ARP en IPv4, vulnérable au spoofing. Utiliser RA Guard et SEND sur les équipements qui le supportent.
  • Surveiller les adresses link-local — toutes les interfaces en ont une, même sans configuration explicite. Elles peuvent être utilisées pour la communication locale.

Privacy Extensions (Linux)

bashsysctl net.ipv6.conf.all.use_tempaddr    # 0=désactivé, 1=préférence statique, 2=préférence temporaire (recommandé)
sysctl -w net.ipv6.conf.all.use_tempaddr=2
IPv6 et IPsec
IPsec est nativement intégré à la spécification IPv6 (RFC 4301). En pratique, son usage reste optionnel, mais il est nativement supporté par tous les systèmes modernes — ce qui simplifie la mise en place de VPN et de communications chiffrées de bout en bout.

Tester votre connectivité IPv6

Services en ligne pour vérifier si votre connexion supporte IPv6 :

ServiceURLCe qu’il teste
test-ipv6.comtest-ipv6.comTest complet IPv4/IPv6, score de préférence
ipv6-test.comipv6-test.comDétection IPv6, score et détails FAI
icanhazip.comicanhazip.comIP publique (IPv4 ou IPv6 selon préférence)
ipv6.google.comipv6.google.comAccès Google en IPv6 uniquement
whatismyipv6.comwhatismyipv6.comAffiche l’adresse IPv6 publique

Depuis le terminal

bash# Obtenir son IPv6 publique
curl -6 icanhazip.com
curl -6 https://api64.ipify.org

# Vérifier si un domaine a un enregistrement AAAA
dig AAAA +short frimousse.net

# Tester la connectivité IPv6 vers Google
ping6 -c 4 ipv6.google.com
Votre adresse IP publique
chargement…
Protocole préféré
Détection en cours…