Il y a de nombreuses nouveautés dans IPv6, dont une qui n'est certes pas très économe, mais permet une configuration assez simple des nœuds du réseau.
Avec IPv4, nous ne connaissons que deux moyens vraiment exploitables pour disposer d'une configuration IP valide :
Il existe des ersatz d'auto-configuration, mais qui ne sont utilisables que sur de petits réseaux, sans passerelle vers l'extérieur.
IPv6 propose un moyen d'auto-configuration efficace, mais gourmand, encore appelé « configuration sans état ». Le « jeton » va être créé automatiquement, le plus souvent à partir de l'adresse MAC de l'interface à configurer. Cette méthode nécessite d'absorber 64 bits.
L'IEEE a défini un identificateur global à 64 bits (format EUI-64). Les adaptateurs Ethernet disposent d'une adresse MAC codée sur 48 bits. L'IETF a fourni un algorithme de conversion qui permet de passer d'un identifiant MAC à un identifiant EUI-64
L'outil ipv6calc
disponible dans toutes les bonnes distributions GNU/Linux, permet entre autres choses d'effectuer ce calcul. Un exemple avec l'adresse MAC 00:50:04:f2:e4:47 :
ipv6calc --action geneui64 --in mac --out eui64 00:50:04:f2:e4:47
retourne:
250:4ff:fef2:e447
Nous pouvons donc tout de suite construire une adresse de type « lien local » en ajoutant le préfixe idoine :
fe80::250:4ff:fef2:e447
~$ ifconfig eth0
eth0 Lien encap:Ethernet HWaddr 00:50:04:f2:e4:47
inet adr:192.168.10.47 Bcast:192.168.10.255 Masque:255.255.255.0
adr inet6: fe80::250:4ff:fef2:e447/64 Scope:Lien
...
Cette méthode peut présenter une atteinte à la vie privée. En effet, l'adresse MAC est en quelque sorte une signature. Il devient donc possible de « tracer » une machine sur un réseau (ordinateur portable en particulier). Le RFC3041 propose une méthode alternative à partir d'un tirage aléatoire.
Il reste possible cependant de faire appel à des méthodes plus connues en IPv4 :
Ce type de configuration est appelé « configuration avec état » (stateful).
IPv6 est conçu pour un adressage dynamique des nœuds. L'expérience montre avec IP v4 que l'adressage statique s'avère trop contraignent dans bien des cas. IP v6 prévoit donc qu'un nœud puisse changer d'adresse IP, même s'il reste connecté 24/7 à l'internet. Ceci est rendu possible par :
Pour anticiper un peu sur la suite, voici un exemple :
~# ip -6 addr ls dev eth0 1: eth0: <BROADCAST,MULTICAST,UP,10000> mtu 1500 inet6 2a01:e35:2e52:9840:220:18ff:fe2d:d291/64 scope global dynamic valid_lft 86331sec preferred_lft 86331sec inet6 2a01:5d8:52e5:2984:220:18ff:fe2d:d291/64 scope global deprecated dynamic valid_lft 86331sec preferred_lft -69sec ...
Comme nous le voyons ici, eth0 dispose de deux adresses de scope global. Elles disposent toutes deux de deux paramètres :
L'adresse 2a01:5d8:52e5:2984:220:18ff:fe2d:d291 est affublée d'un valid_lft positif, mais d'un preferred_lft négatif, ce qui confère à cette adresse des propriétés spéciales :
Autrement dit, cet hôte, lorsqu'il va initier une nouvelle connexion IP n'utilisera pas cette adresse, mais l'autre : 2a01:e35:2e52:9840:220:18ff:fe2d:d291. En revanche, l'adresse dépréciée pourra continuer a être utilisée sur les connexions déjà en cours.
Nous comprendrons mieux comment ces choses se passent lorsque nous étudierons la façon d'obtenir une adresse globale sans état.
Cet exemple a une portée historique, il correspond en effet à la période où l'opérateur « Free » a changé de méthode d'attribution d'adresses IPv6 à ses clients.
Nous sommes en IPv6, mais en dessous, il y a toujours Ethernet (du moins sur notre LAN). ARP permet, avec IPv4, d'obtenir l'adresse MAC à laquelle il faut envoyer l'information, suivant l'adresse IP du destinataire.
Ce mécanisme doit bien sûr exister aussi en IPv6, mais il est pris en charge par ICMP et ARP n'existe plus. Nous verrons comment un peu plus loin.