5. Autoconfiguration côté client

Le poste client doit être configuré pour exploiter correctement les annonces émises par le routeur dans un domaine de diffusion donné. On débute avec la configuration de base de l'interface réseau du client et on complète la liste des outils pour que le resolver DNS fonctionne correctement.

De façon classique, le fichier /etc/network/interfaces de l'hôte client se présente comme suit.

etu@vm21:~$ cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet dhcp
iface eth0 inet6 auto

On voit ici que l'interface Ethernet eth0 a été configurée pour obtenir sa configuration «automatiquement». Le résultat de l'autoconfiguration IPv6 apparaît dans la liste des adresses et la table de routage du poste client.

Liste des adresses de l'hôte vm21
etu@vm21:~$ ip addr ls
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether ba:ad:00:ca:fe:15 brd ff:ff:ff:ff:ff:ff
    inet6 2001:db8:feb2:14:b8ad:ff:feca:fe15/64 scope global dynamic
       valid_lft 85946sec preferred_lft 13946sec
    inet6 fe80::b8ad:ff:feca:fe15/64 scope link
       valid_lft forever preferred_lft forever
Table de routage de l'hôte vm21
etu@vm21:~$ ip -6 route ls
2001:db8:feb2:14::/64 dev eth0  proto kernel  metric 256  expires 86141sec
fe80::/64 dev eth0  proto kernel  metric 256 
default via fe80::dcad:ff:febe:ef14 dev eth0  proto ra  metric 1024  expires 1541sec

Les deux copies d'écran ci-dessus permettent de donner quelques explications sur la composition des adresses IPv6 avec l'autoconfiguration SLAAC. Si on se réfère au schéma de la maquette, on voit que le système vm21 est un hôte du VLAN 20 dont le préfixe réseau est 2001:db8:feb2:14::/64 ; préfixe qui apparaît en première ligne de la table de routage.

Voyons comment les adresses de l'interface eth0 de l'hôte vm21 ont été composées. Une fois de plus, c'est l'adresse MAC qui constitue la clé de composition des autres adresses. Dans cet exemple, l'adresse ba:ad:00:ca:fe:15 a été définie dans le script de lancement du système virtuel (Voir Virtualisation système et enseignement).

Il s'agit d'une adresse de type EUI48 comprenant 6 octets à partir de laquelle le système compose une adresse de type EUI64 avec 8 octets en insérant l'empreinte ff:fe au milieu. Ce n'est pas tout, le bit U/L de l'octet situé le plus à gauche passe de 1 à 0. Ainsi l'adresse MAC de départ ba:ad:00:ca:fe:15 devient b8:ad:ff:fe:ca:fe:15. Pour plus de détail voir la section Types d'adresses MAC de l'article Routage Inter-VLAN.

À la suite de ce traitement sur l'adresse MAC, deux adresses IPv6 sont construites.

fe80::b8ad:ff:feca:fe15/64

Cette adresse de type lien local utilise le préfixe fe80::/10. L'adresse MAC de type EUI64 est placée à droite (bits de poids faible) du préfixe de façon à composer une adresse sur 128 bits. Comme la mention scope link de la copie d'écran l'indique, la portée de cette adresse est limitée au VLAN, ou encore au domaine de diffusion. Ces adresses sont très utiles pour joindre les hôtes voisins appartenant au même réseau. Par exemple, il est possible de contacter l'hôte vm20 de la façon suivante.

etu@vm21:~$ ping6 -c 2 fe80::b8ad:ff:feca:fe14%eth0
PING fe80::b8ad:ff:feca:fe14%eth0(fe80::b8ad:ff:feca:fe14) 56 data bytes
64 bytes from fe80::b8ad:ff:feca:fe14: icmp_seq=1 ttl=64 time=1.65 ms
64 bytes from fe80::b8ad:ff:feca:fe14: icmp_seq=2 ttl=64 time=0.624 ms

--- fe80::b8ad:ff:feca:fe14%eth0 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 0.624/1.141/1.658/0.517 ms
2001:db8:feb2:14:b8ad:ff:feca:fe15/64

Cette adresse de type global utilise le préfixe 2001:db8:feb2:14::/64 annoncé dans les paquets RAs émis par le routeur. C'est le résultat du travail effectué par le paquet radvd présenté dans la Section 4, « Autoconfiguration côté routeur ». Comme dans le cas de l'adresse de type lien local, l'adresse MAC au format EUI64 est utilisée comme suffixe pour composer l'adresse IPv6 complète sur 128 bits. À la différence de l'adresse précédente, la mention global dynamic indique que cette adresse à une portée globale et qu'elle est utilisable depuis n'importe quel autre réseau. À titre d'illustration, voici une copie d'écran qui montre le résultat d'un ping IPv6 depuis le service en ligne subnetonline.com.

Ping IPv6 depuis subnetonline.com

On remarque que l'adresse IPv6 testée utilise le préfixe SixXS et non le préfixe de documentation 2001:db8::/32.

Côté table de routage, la seule particularité vient du fait que la passerelle par défaut est désignée par son adresse de type lien local et non par son adresse globale statique : fe80::dcad:ff:febe:ef14. C'est bien cette adresse de type lien local qui est annoncée par le service d'autoconfiguration dont la portée est justement limitée au domaine de diffusion. C'est à ce niveau qu'intervient le mécanisme de sélection d'adresse qui fait que les deux types d'adresses peuvent coexister. Ainsi, la table des voisins sur le réseau local peut donner les résultats suivants.

etu@vm21:~$ ip -6 neighbor ls
fe80::dcad:ff:febe:ef14 dev eth0 lladdr de:ad:00:be:ef:14 router STALE
2001:db8:feb2:14::1 dev eth0 lladdr de:ad:00:be:ef:14 router DELAY
fe80::b8ad:ff:feca:fe14 dev eth0 lladdr ba:ad:00:ca:fe:14 STALE
2001:db8:feb2:14:b8ad:ff:feca:fe14 dev eth0 lladdr ba:ad:00:ca:fe:14 STALE

Les deux premières entrées de la table ci-dessus correspondent bien au même hôte voisin : le routeur IPv6-rtr.