Comment fonctionnent les sous-réseaux IPv6

Une adresse IPv6 fait 128 bits, écrits en huit groupes de quatre chiffres hexadécimaux. Les zéros de tête de chaque groupe peuvent être omis, et une seule suite de groupes nuls peut être remplacée par ::. Ainsi 2001:0db8:0000:0000:0000:ff00:0042:8329 devient 2001:db8::ff00:42:8329, la forme recommandée par la RFC 5952.

Le préfixe indique combien de bits de tête identifient le réseau. Les réseaux locaux utilisent presque toujours /64, car l'autoconfiguration SLAAC a besoin de 64 bits pour l'hôte ; une entreprise ou un site reçoit souvent un /48, qui contient 65 536 sous-réseaux /64, et un abonnement résidentiel un /56, avec 256 sous-réseaux.

En IPv6, il n'y a pas d'adresses de réseau et de diffusion à écarter comme en IPv4 : toutes les adresses du bloc sont utilisables et la diffusion est remplacée par le multicast. Les nombres deviennent énormes, 2⁶⁴ adresses dans un seul /64, c'est pourquoi on raisonne en sous-réseaux plutôt qu'en hôtes.

Erreurs fréquentes

  • Utiliser deux fois :: dans une même adresse : on ne saurait plus combien de groupes nuls chacun représente.
  • Découper un réseau local en sous-réseaux plus petits que /64 : SLAAC et de nombreuses fonctions d'IPv6 cessent de marcher.
  • Calculer les sous-réseaux en décimal : les limites tombent sur les chiffres hexadécimaux, chacun vaut 4 bits.

Questions fréquentes

Combien d'adresses contient un /64 ?

2⁶⁴, soit 18 446 744 073 709 551 616 : plus que tout l'espace IPv4 élevé au carré.

Qu'est-ce que la zone ip6.arpa ?

C'est le domaine de la résolution inverse, de l'adresse vers le nom : les 32 chiffres hexadécimaux de l'adresse s'écrivent à l'envers, séparés par des points, suivis de ip6.arpa.

Comment écrire une adresse IPv6 dans une URL ?

Entre crochets, pour ne pas confondre les deux-points avec le port : http://[2001:db8::1]:8080/.

Comment fonctionne ce calcul

L'adresse est lue comme un entier de 128 bits (:: est complété par les groupes nuls manquants et une éventuelle fin IPv4 devient deux groupes). Masque = 128 − préfixe bits nuls en fin ; réseau = adresse AND masque ; dernière adresse = réseau OR NOT masque ; adresses = 2^(128 − préfixe). Il y a 2^(n − préfixe) sous-réseaux /n de 2^(128 − n) adresses chacun. La forme compressée suit la RFC 5952 : minuscules, pas de zéros de tête et :: sur la plus longue suite d'au moins deux groupes nuls.