Table des matières
Les adresses IPv6
Préambule
Devant l'évidence qu'un jour il n'y aura plus assez d'adresses IPv4 disponibles compte tenu de la floraison d'appareils connectés, l'IETF a commencé à envisager la création d'un nouveau système d'adressage IP dans la dernière décennie du siècle dernier. IPv6 est désormais standardisé par le RFC 82002 en juillet 2017.
Mettre à jour le réseau mondial prendra certainement encore quelques décennies, mais il devient possible au grand public d'obtenir des adresses IPv6 publiques en nombre, au moins chez certains fournisseurs d'accès. Tous les nœuds situés sur l'internet ne disposent pas encore de ce type d'adressage. Bien entendu tout a été prévu pour que IPv4 et IPv6 puissent cohabiter non seulement sur l'internet mais aussi sur chaque nœud. Tous les systèmes d'exploitation les plus courants (GNU/Linux, Androïd, IOS, Windows …) savent désormais faire.
La complexité d'IPv6 va nécessiter un chapitre dédié. Dans un premier temps, contentons-nous d'en définir la forme
Caractéristiques générales
La longueur
Une adresse v6 est écrite sur 128 bits, à comparer aux 32 bits d'IPv4. Pour donner un ordre de grandeur « à la louche », alors que IP v4 fournir environ 4 milliards d'adresses (232, soit environ 4 x 109), IP v6 peut en fournir plus d'un quadrillion de fois autant (2128 soit environ 3 x 1038), permettant ainsi de distribuer un peu plus d'un trilliard d'adresses par mètre carré…
Bien sûr ces chiffres ne veulent pas dire grand chose, si ce n'est que l'humanité devrait être à l'abri d'une pénurie d'adresses pour quelques temps.
Nous verrons que comme à chaque fois que l'homme a la sensation de disposer d'une ressource à profusion, il s'empresse de la gaspiller. Mais tout de même l'opulence est telle qu'elle dépasse les capacités actuelles de gaspillage humain.
Le format d'écriture
Il n'est plus question ici d'utiliser une écriture similaire à celle qui est habituellement employée pour IPv4.
- L'écriture est désormais faite en hexadécimal ;
- les mots sont constitués de 16 bits ;
- ils sont séparés par un « : ».
Exemple :
2a01:05d8:52f3:500d:021b:fcff:fe71:1486
C'est certes moins lisible que l'IPv4, mais tout de même plus clair que d'essayer une représentation octet par octet dans sa traduction décimale.
Simplifications
Pour « simplifier » l'écriture, dans chaque mot, il est possible d'omettre les zéros non significatifs (à gauche). Ainsi, notre exemple précédent peut s'écrire :
2a01:5d8:52f3:500d:21b:fcff:fe71:1486
Il peut se faire que l'on ait des adresses contenant des mots entiers égaux à 0, comme par exemple :
2a01:05d8:52f3:500d:0000:0000:0000:0001
Dans un tel cas, nous pouvons simplifier comme suit :
2a01:5d8:52f3:500d:0:0:0:1
ce qui n'est déjà pas si mal, mais nous pouvons aller encore plus loin en remplaçant une série de mots nuls par « :: ». Ceci nous donne :
2a01:5d8:52f3:500d::1
Pour des raisons assez évidentes, ce dernier type de simplification ne peut être utilisé qu'une seule fois dans l'adresse. Si nous écrivions :
2a01::12::1
seriez-vous capables de dire combien il y a de mots nuls dans la première simplification et combien il en reste dans la seconde ?
Exercice inverse : nous avons l'adresse (très simplifiée)
2a01:5d8::1
Comme nous savons qu'il doit y avoir 8 mots au total et qu'il n'y en a que 3 de significatifs, c'est qu'il y en a 5 qui sont nuls :
2a01:5d8:0:0:0:0:0:1
et donc finalement :
2a01:05d8:0000:0000:0000:0000:0000:0001
sans aucune simplification.
Préfixe et jeton
Comme pour IPv4, une adresse v6 donne deux informations :
- un identifiant de réseau (préfixe) ;
- un identifiant de nœud dans le réseau (jeton).
Le préfixe est constitué d'un certain nombre de bits de masque, en partant du poids le plus fort, exactement comme en notation CIDR avec IPv4. Ainsi, l'adresse notée 2a01:5d8:52f3:500d:21b:fcff:fe71:1486/64
indique que les 64 premiers bits seront communs à tous les nœuds qui sont dans le même réseau IP(v6). Autrement dit :
2a01:5d8:52f3:500d::/64
est l'adresse du réseau ;
21b:fcff:fe71:1486
(le jeton) est représentatif du nœud dans ce réseau.
Notez que dans cet exemple, qui n'est pas du tout imaginaire, l'administrateur dispose de 64 bits pour identifier les machines de son réseau, ce qui fait quand même pas mal de nœuds adressables.
Adressage(s) d'un nœud
Avec IPv4, attribuer plusieurs adresses IP à un même nœud n'est pas courant. C'est en revanche tout à fait banal avec IPv6. Cette démarche pourra paraître curieuse, mais c'est parce que nous n'avons pas encore tout vu de ce merveilleux protocole…
Portée des adresses
Nous disposerons d'adresses dont la portée est plus ou moins grande, en fonction des besoins.
Scope link
La portée « lien local » permet aux nœuds connectés au même réseau physique de communiquer entre eux. Ces adresses ne doivent pas passer les routeurs. La portée est similaire à celle des adresses MAC sur le réseau Ethernet.
Quelque soit le réseau sur lequel nous nous trouvons, chaque nœud disposera d'une adresse de portée locale dans le réseau FE80::/10
. Ainsi, l'adresse fe80::21b:11ff:fe52:bfab
est une adresse de type « lien local ».
Scope Global
La portée globale, en revanche, est une adresse qui permettra de communiquer avec tout nœud situé sur l'internet. C'est l'équivalent d'une adresse « publique » IPv4 Ces adresses doivent être routées partout dans le monde.
Et pour les grands réseaux d'entreprise ?
La notion d'adresse « privée » telle qu'utilisée en IPv4 a disparu des RFC IPv6. Ces adresses ne sont par définition pas routables sur l'internet, mais permettent de structurer de gros réseaux d'entreprise, sans nécessiter de connectivité à l'internet. Le RFC 4193 (Unique Local IPv6 Unicast Addresses) s'intéresse à ce cas.
Quelques points importants
Juste pour les énoncer, ils seront étudiés plus en détail plus loin.
- Avec IPv6, la notion de «masquerade» mise en œuvre de façon transparente par les «box» actuelles et qui est détaillée dans un autre chapitre, n'a plus de raison d'être, tous les nœuds du réseau local pouvant disposer d'une adresse IPv6 de portée globale et par conséquent potentiellement directement attaquables depuis l'extérieur ! La notion de pare-feu doit être intégrée sur chaque nœud du réseau local.
- Comme il est possible de disposer de plusieurs adresses IPv6 de portée globale sur le même nœud, le problème des systèmes mobiles amenés à changer d'adresse au cours de leur parcours sera bien plus facilement géré qu'avec IPv4. La RFC 6275 «Mobility Support in IPv6».
IPv6 et ARP
Tout comme pour IPv4, il est nécessaire de pouvoir établir une relation entre adresse IP et adresse MAC d'une interface d'un nœud du réseau, la couche Ethernet restant la même dans les deux cas. Mais le processus de découverte de ces relation est sensiblement différent, comme nous le verrons plus loin dans les travaux pratiques.
Pour revenir à notre station de travail:
ip -6 neigh ls fe80::6aa3:7813:3786:ec02 dev enp1s0 lladdr 68:a3:78:86:ec:02 router REACHABLE fe80::6aa3:78ff:fe86:ec02 dev enp1s0 lladdr 68:a3:78:86:ec:02 router STALEIci aussi, il existe une relation entre adresses IPv6 et adresses MAC. Dans l'exemple, nous pouvons reconnaître l'adresse MAC de la «box» qui est attachée à deux adresses IPv6 lien local (légèrement) différentes. Peut-être pourrons-nous percer ce mystère. En attendant, il est important de constater que la relation entre adresses des couches 2 et 3 du modèle OSI existe toujours en IPv6.
La suite...
Suivez ce lien pour une étude plus détaillée d'IPv6.