C’est la pénurie d’adresses IPv4 qui a conduit les instances normatives à réfléchir à un nouveau protocole. Mais, ils ne se sont pas contentés de définir un paquet identique avec des champs adressages plus grands. Ils ont également cherché à améliorer le protocole. Cet article présente les différentes adresses IPv6 unicast que l’on rencontre: c’est aussi le moyen de toucher du doigt les évolutions du protocole !

IPv6: longueur du préfixe

En environnement IPv6, nous ne parlons plus de masque de sous-réseau mais nous allons identifier ce que l’on va appeler le préfixe.

Le préfixe d’une adresse IPv6 correspond à la partie réseau de l’adresse IP. Il est noté comme cela:

adresse-IPv6/LongueurDuPréfixe

La longueur du préfixe est une valeur entière indiquant la partie réseau de l’adresse. Par exemple, considérons l’adresse IPv6 suivante:

 2001:0DB8:1234:5678::1/64

La figure ci-dessous illustre comment la longueur de préfix (notée /64) permet d’identifier le préfixe (que l’on peut aussi appeler la partie réseau de l’adresse). Cela laisse 64 bits sur la partie droite qui est ce que l’on appelle l’identifiant de l’interface (Interface ID) qui correspond à la partie hôte d’une adresse IPv4.

 Exemple de préfixe IPv6

 

 

 

Contrairement à ce que l’on fait en IPv4, l’espace d’adressage IPv6 est suffisamment grand pour ne pas devoir manipuler des préfixes en /63 ou /65: on utilise des multiples de 4. Cela simplifie la manipulation des adresses IPv6. 

D’ailleurs, il est presque habituel de se voir attribuer des préfixes en /48 ce qui permet de garder un hextet entier pour coder un sous-réseau tout en gardant 64 bits pour l’identifiant d’interface. Dans l’exemple pris dans cet article, le préfix serait alors 2001:0DB8:1234, le sous-réseau serait 5678 et l’identifiant de l’interface serait inchangé (::1).

De même, pour un réseau domestique, un préfixe en /56 est largement suffisant !

Mais, notez que dans un système terminal, le préfixe qui se voit attribué à une machine a toujours une longueur de 64 bits (noté /64).

 

Les différents types d’adresses IPv6

Commençons, une fois n’est pas coutume, par le résumé de cet article:

Les différentes adresses IPv6

 

La représentation ci-dessus montre donc qu’une adresse IP peut identifier:

  • une interface bien déterminée (pour les communications entre un client et un serveur, en « un-pour-un ») – c’est une adresse unicast ;
  • un groupe d’interfaces ou de systèmes: c’est une adresse multicast;
  • une interface parmi un groupe prédéfini d’interfaces: c’est une adresse anycast.

Au passage, le concept d’adresse de diffusion (broadcast) a disparu: c’est – en environnement IPv6 – un cas particulier d’une adresse de groupe (c’est un groupe multicast à part entière).

Chose nouvelle également qui apparait dans la représentation: il y a 6 types d’adresses unicast IPv6 différentes. Si l’adresse de loopback est déjà connue dans le monde IPv4, les autres types correspondent à de nouveaux concepts introduits conjointement à IPv6.

 

Identification du type d’adresses IPv6

L’architecture de l’adressage IPv6 est décrit dans le RFC 4291 (initialement publié en 2006, il a été mis à jour depuis). Il y est indiqué (section 2.4 – Address Type Identification) que le type d’adresse est identifié par les premiers bits de l’adresse. Exactement comme la définition des classes d’adresses en environnement IPv4 (relire l’article sur ce sujet ici).

Il y a donc 6 types d’adresses unicast IPv6 différentes et nous allons présenter les 3 plus importantes:

  • IPV6 Global Unicast Addresses,
  • IPv6 Link Local Addresses,
  • IPv6 Site Local Addresses.

 

 Adresses « IPv6 Global Unicast »

D’un point de vue formel, toutes les adresses spécifiques non définies sont des adresses globales unicast. En pratique, l’organisme d’attribution des adresses (IANA) alloue actuellement les adresses qui commencent par 2000::/3

Ce sont des adresses routables (équivalentes des adresses publiques en IPv4) qui doivent donc être uniques dans le monde Internet IPv6.

 

 Adresses « IPv6 Link Local »

 On pourrait traduire par l’adresse IPv6 de lien local…. bof bof…. Mais ce n’est pas grave: regardons le concept. 

Une adresse de ce type commence toujours par FE80::/10 (donc les premiers bits sont 1111 1110 10). Qu’ont elles de particulier ces adresses? elle ne sont pas routables sur le réseau ! Elle ne sont valables que sur le lien considéré et… c’est tout !

Un routeur qui reçoit un paquet destiné à une adresse Link-Local: soit c’est pour lui et il traite le paquet , sinon, il jette ! Pas de routage de ces adresses IPv6.

Par contre, toute interface avec IPv6 activé doit disposer d’au moins une adresse IPv6 link-local. Cela va permettre à tout système de pouvoir communiquer sur son réseau local même s’il n’a pas d’adresse IP routable configurée. Souvenez-vous, j’avais indiqué dans l’article introduisant la technologie IPv6 (à relire si nécessaire) que celle-ci vise à être Plug-and-Play: vous commencez maintenant à entrevoir comment cela est possible !

Une adresse IPv6 Link-Local est donc utilisée dans les cas suivants:

  • avant l’obtention d’une adresse IPv6 routable,
  • pour identifier la passerelle par défaut d’une interface (on utilise la Link-Local adresse du routeur),
  • pour l’échange des informations de routage par les routeurs (protocoles dynamiques).

Ce dernier point est très intéressant. Désormais, un routeur peut router du traffic IPv6 sans avoir lui même une adresse IPv6 routable: c’est une amélioration évidente de la sécurisation des infrastructures.

 

Adresses IPv6 « Unique Local »

Ces adresses sont définies dans le RFC 4193 (« Unique Local IPv6 Unicast Adresses ») et correspondent aux adresses privées que l’on avait en IPv4 (10.0.0.0/8, 172.16.0.0/12 et 192.168.0.0/16).

Comme pour les autres types d’adresses, elles sont identifiées par les premiers bits qui la composent. Une adresse IPv6 « Unique Local » commence par FC00::/7 (donc les premiers bits sont 1111 110).

 

Plug & Play ? Et la partie hôte, alors ?

La présence d’une adresse de type Link-Local permet d’attribuer automatiquement une adresse IPv6 à un système, sans serveur DHCP. Pour cela, la machine se débrouille toute seule. Voyez ici sur une machine Windows 7:

Configuration automatique IPv6 sous Windows 7

Ici, cette machine est isolée sur le réseau et, pourtant, on voit bien qu’une adresse IPv6 est auto-attribuée:

Adresse IPv6 auto-attribuée par Windows 7 

Cette adresse est la suivante: 

fe80::ddfb:4f52:102f:2194
Le %19 correspont à un identifiant de zone Windows (Zone ID – plus d’informations disponibles directement sur le site de Microsoft) qui n’a rien à voir avec l’adresse IPv6…

Microsoft indique qu’il utilise une valeur pseudo-aléatoire pour définir la partie identifiant l’interface (ceci pour améliorer la sécurité).

 

Configuration IPv6 du routeur Cisco

Nous avons une machine IPv6: configurons un routeur Cisco (raccordé sur le même réseau que la machine Win7). Pour cela, il suffit d’activer ipv6 sous l’interface concernée avec la commande IOS:

Router(config-if)#ipv6 enable

 La commande show ipv6 interface brief permet de vérifier qu’une adresse IP a été automatiquement affectée:

 ipv6 enable

Ici, l’adresse ipv6 est la suivante: fe80::A8BB:CCFF:FE00:701

Cette adresse est directement dérivée de l’adresse MAC de l’interface de routeur (mécanisme intitulé « adressage EUI-64 modifié« ).

Deux systèmes IPv6 sont sur le même réseau et disposent d’une adresse IPv6 ? La connectivité doit pouvoir être vérifiée. Avec quel outil ? Disons que le célèbre ping a su évoluer pour intégrer la pile de communication IPv6. 

Voyons plutôt:

Premier ping IPv6

 

OK : la connectivité IPv6 entre les deux adresses Link-Local auto-attribuée est fonctionnelle. Nous avons donc commencé à mettre en oeuvre notre plateforme de tests IPv6.

Ce que l’on remarque à la fin de la capture, c’est que la table ARP est vide ! Aucune correspondance trouvée entre adresse MAC et adresse IP. Ce n’est pas étonnant si l’on sait que ARP n’est utilisé que pour IPv4. Nous reviendrons dans un article ultérieur sur la solution technique mise en oeuvre en environnement IPV6 pour trouver l’adresse MAC correspondante !

En attenant, laissez-moi vos commentaires ou éventuelles questions dans la zone ci-dessous: c’est fait pour ça !