3. Présentation de la maquette

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.

Maquette autoconfiguration IPv6
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 = 0

Voici 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 1024

Le 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::88881

auto eth1
iface eth1 inet6 manual
        up echo 0 > /proc/sys/net/ipv6/conf/eth1/forwarding2

auto eth1.10
iface eth1.10 inet6 static
        hwaddress de:ad:00:be:ef:0a3
        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:144
        address 2001:db8:feb2:14::1/64
        vlan-raw-device eth1

1

La 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™.

2

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'interface eth1.

3 4

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.