Dans le but d'illustrer l'autoconfiguration IPv6, on doit chercher à reproduire un contexte réaliste. Ici, la maquette propose un routeur IPv6 qui dessert deux domaines de diffusion (VLANs) dans lesquels on trouve des postes clients qui reçoivent les annonces.
- Accès Internet
-
L'accès au réseau public se fait via un tunnel fourni par le service SixXS ( IPv6 Deployment & Tunnel Broker). Ce service gratuit a pour but de promouvoir l'utilisation du protocole IPv6. Il constitue une opportunité fantastique pour apprendre et surtout pratiquer sur l'interconnexion de réseaux IPv6 avant de passer à l'exploitation réelle.
Dans l'exemple traité ici, les 32 premiers bits de tous les préfixes IPv6 ont été corrigés avec le préfixe
2001:db8
dédié à la documentation. En réalité, on utilise des réseaux appartenant à un préfixe/48
gracieusement fourni par SixXS. Ainsi, les possibilités d'interconnexion et de configuration sont quasi infinies.Le tunnel d'accès à l'Internet débouche sur un système hôte à partir duquel on virtualise une instance de routeur Debian GNU/Linux et des postes clients qui utilisent le même système. Les fonctions de commutation des trames Ethernet et de gestion des VLANs sont assurées par Open vSwitch. Bref, un classique du site inetdoc !
- Routeur
IPv6-rtr
-
Cette instance de machine virtuelle assure le routage statique entre le VLAN de raccordement au système hôte et les deux autres VLANs sur lesquels les hôtes utilisent l'autoconfiguration IPv6.
Bien sûr, la fonction de routage IPv6 doit être active sur ce système. Dans ce but un fichier
ipv6.conf
spécifique a été placé dans le répertoire/etc/sysctl.d/
. Dans ce fichier, on trouve en premier l'activation de la fonction de routage du noyau puis la désactivation de l'autoconfiguration pour toutes les interfaces du système. Le routeur de la maquette présentée doit uniquement publier les informations d'autoconfiguration.etu@IPv6-rtr:~$
cat /etc/sysctl.d/ipv6.conf #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~é net.ipv6.conf.default.forwarding = 1 # net.ipv6.conf.default.autoconf = 0 net.ipv6.conf.default.accept_ra = 0 net.ipv6.conf.default.accept_ra_defrtr = 0 net.ipv6.conf.default.accept_ra_rtr_pref = 0 net.ipv6.conf.default.accept_ra_pinfo = 0 net.ipv6.conf.default.accept_source_route = 0 net.ipv6.conf.default.accept_redirects = 0 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~é net.ipv6.conf.all.forwarding = 1 # net.ipv6.conf.all.autoconf = 0 net.ipv6.conf.all.accept_ra = 0 net.ipv6.conf.all.accept_ra_defrtr = 0 net.ipv6.conf.all.accept_ra_rtr_pref = 0 net.ipv6.conf.all.accept_ra_pinfo = 0 net.ipv6.conf.all.accept_source_route = 0 net.ipv6.conf.all.accept_redirects = 0Voici une copie de la table de routage qui fait apparaître les 3 réseaux représentés sur le schéma.
etu@IPv6-rtr:~$
ip -6 route ls 2001:db8:feb2:2::/64 dev eth0 proto kernel metric 256 2001:db8:feb2:a::/64 dev eth1.10 proto kernel metric 256 2001:db8:feb2:14::/64 dev eth1.20 proto kernel metric 256 fe80::/64 dev eth0 proto kernel metric 256 fe80::/64 dev eth1 proto kernel metric 256 fe80::/64 dev eth1.10 proto kernel metric 256 fe80::/64 dev eth1.20 proto kernel metric 256 default via 2001:db8:feb2:2::1 dev eth0 metric 1024Le fichier de configuration principal des interfaces réseau se présente de la façon suivante. Les adresses des interfaces sont statiques et définies dans ce fichier.
etu@IPv6-rtr:~$
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 inet6 static address 2001:db8:feb2:2::2/64 gateway 2001:db8:feb2:2::1 dns-nameservers 2001:db8:feb2:2::1 2001:4860:4860::8888 auto eth1 iface eth1 inet6 manual up echo 0 > /proc/sys/net/ipv6/conf/eth1/forwarding auto eth1.10 iface eth1.10 inet6 static hwaddress de:ad:00:be:ef:0a address 2001:db8:feb2:a::1/64 vlan-raw-device eth1 auto eth1.20 iface eth1.20 inet6 static hwaddress de:ad:00:be:ef:14 address 2001:db8:feb2:14::1/64 vlan-raw-device eth1La configuration du resolver DNS est directement fournie avec la configuration des interfaces. Les informations fournies avec la directive
dns-nameservers
sont exploitées par le paquet resolvconf. Le rôle de ce paquet, spécifique à la distribution Debian GNU/Linux, est d'arbitrer les accès au fichier/etc/resolv.conf
. Dans le cas présent, la seule source est le fichier/etc/network/interfaces
alors que dans le cas d'un hôte mobile avec ou sans double pile IPv4 & IPv6, plusieurs programmes sont susceptibles de modifier la configuration du resolver. Le recours au paquet resolvconf est notamment nécessaire dans le cas des postes clients.La deux adresses IPv6 données en paramètres correspondent au système hôte sur lequel le logiciel bind9 est exécuté et à un serveur DNS public de Google™.
Le protocole IPv6 introduit une condition spécifique dans la configuration du routage inter-VLAN. Avec l'attribution automatique d'une adresse IPv6 de type lien local (préfixe
fe80::/10
), l'interface principale d'un trunk peut participer au processus de routage. La directive du fichier de configuration empêche le routage des trames sans étiquette de VLAN sur la base de l'adresse de lien local de l'interfaceeth1
.De façon à distinguer les adresses de passerelles par défaut des deux VLANs, on fixe manuellement les adresses MAC des deux sous-interfaces. On peut très bien se passer de cette «manœuvre» sachant que la portée ou la visibilité d'une adresse MAC est limitée à un domaine de diffusion unique. On perd cependant en lisibilité puisque, sans ce changement d'adresse MAC, plusieurs VLANs utilisent la même adresse IPv6 de lien local comme passerelle par défaut. Ici, on utilise un jeu de mot hexadécimal très connu (dead beef) suivi du numéro de VLAN pour distinguer les interfaces du routeur qui servent de passerelle par défaut aux hôtes raccordés aux VLANs.
Une fois la partie routage statique en place, on peut passer à la présentation de l'autoconfiguration côté routeur puis côté client.