Rapport TP IPv6 rev4 -...
Embed Size (px)
Transcript of Rapport TP IPv6 rev4 -...

2007
UFR Ingénieurs 2000 Vivien Boistuaud Julien Herr - -
Ce document est un rapport concernant le TP d’IPv6 réalisé dans le cadre des études de Julien Herr et Vivien Boistuaud au sein de l’UFR Ingénieurs 2000. Les enseignements d’IPv6 sont sous la direction de M. Hackim Badis.
RAPPORT DE TP IPV6

[Tapez un texte] [Tapez un texte] [Tapez un texte]
2
Table des matières
Introduction .......................................................................................................................................................................... 4
1. Présentation du contexte ....................................................................................................................................... 5
1. Le protocole IPv6 .................................................................................................................................................. 5
1. Pourquoi IPv6 après IPv4 .............................................................................................................................. 5
2. Les technologies intégrées à IPv6 .............................................................................................................. 6
3. Ecriture d’une adresse IPv6 .......................................................................................................................... 7
2. Matériel utilisé lors du TP ................................................................................................................................... 8
3. Montages réalisés ................................................................................................................................................. 9
4. Configuration logicielle et référence des commandes ........................................................................ 10
2. Activation d’IPv6 sous Linux ............................................................................................................................... 11
1. Vérification de la présence d’IPv6 sur le système................................................................................... 11
2. Chargement du module IPv6 ........................................................................................................................ 12
3. Vérification du chargement et des modalités d’utilisation ................................................................ 13
3. Configuration basique d’IPv6 ............................................................................................................................. 15
1. Attribution automatique d’une adresse de lien local ........................................................................... 15
2. Activer la reconnaissance des extensions IPv6 ....................................................................................... 17
3. Simplifier l’écriture d’adresses IPv6 ............................................................................................................. 18
1. Assigner plusieurs adresses IP à un même nom d’alias .................................................................. 19
2. Remarques sur le contenu de /etc/hosts pour IPv6 ......................................................................... 19
4. Test de la machine en local ............................................................................................................................ 20
5. Communication avec une machine du réseau local ............................................................................. 21
6. Analyse approfondie du fonctionnement d’ICMPv6 ECHO ............................................................... 23
7. Fragmentation de paquets en IPv6 ............................................................................................................. 26
8. Détecter les machines d’un lien par Multicast ........................................................................................ 28
9. Attribution d’une adresse globale ............................................................................................................... 31
1. Informations sur les adresses globales unicast en IPv6 .................................................................. 31
2. Exemple de configuration manuelle d’une adresse IPv6 Globale Unicast ............................... 32
10. La table de routage IPv6 ............................................................................................................................. 34
11. La table de voisinage et sa découverte ................................................................................................. 35
1. Pourquoi une table des voisins ................................................................................................................ 35
2. Visualiser la table des voisins .................................................................................................................... 36
3. Modification manuelle des la table des voisins ................................................................................. 37

Julien HERR TP IPv6 Vivien BOISTUAUD Ingénieurs 2000 - IR3 – 2007-2008
3
4. Routage et configuration automatique en IPv6 .......................................................................................... 39
5. Aller plus loin : utilisation d’IPSec ..................................................................................................................... 44
Conclusion .......................................................................................................................................................................... 45
Références bibliographiques ....................................................................................................................................... 46

Julien HERR TP IPv6 Vivien BOISTUAUD Ingénieurs 2000 - IR3 – 2007-2008
4
Introduction
Le protocole IP version 6 (plus familièrement appelé IPv6) est une évolution du
protocole IPv4 utilisé actuellement sur de nombreux réseaux de communications
dont Internet et la plupart des intranet d‘entreprises et des réseaux locaux
personnels.
Les travaux sur IPv6 ont commencé dans les années 1990 et, malgré la simplicité de
mise en œuvre de ce protocole, la plupart des innovations qu’il propose ont été
adaptées pour être utilisables en IPv4 plutôt que de modifier le matériel pour
pouvoir migrer vers l’IPv6. Par conséquent, cette technologie reste aujourd’hui peu
exploitée dans un cadre entrepreneurial.
Cependant, les années à venir vont devenir cruciales pour son imposition sur des
grands réseaux comme l’internet : aujourd’hui, il y a une saturation du nombre
d’adresses IPv4 publiques disponibles. De nombreux réseaux sont alors contraints à
utiliser des artifices comme le NAT pour fournir un accès au réseau à un nombre de
postes plus important que le nombre d’adresses IPv4 allouées.
Afin de découvrir la technologie IPv6 et d’être près à une future migration, nous
avons donc participé, dans le cadre de notre formation d’ingénieur en informatique
et réseaux à une séance de travaux pratiques sur le protocole IPv6. Celle-ci complète
les enseignements de M. Badis dans ce domaine.
Ce rapport relate et analyse les manipulations proposées en TP. Il constitue un point
de départ à l’apprentissage des technologies de base constituant IPv6. Après une
brève introduction sur le protocole IPv6 et le matériel utilisé au cours de ce TP, ce
rapport présentera la mise en œuvre d’IPv6 sur un lien local, sur un lien global, puis
sur l’interconnexion de réseaux routés. Enfin, il abordera les aspects sécuritaires du
protocole dans le cadre d’une étude sur l’utilisation conjointe d’IPSec et IPv6.

Julien HERR TP IPv6 Vivien BOISTUAUD Ingénieurs 2000 - IR3 – 2007-2008
5
1. Présentation du contexte
Cette section présente les technologies liées à IPv6 qui sont étudiées dans ce TP,
ainsi que le matériel utilisé pour sa réalisation et le protocole de test suivi.
1. Le protocole IPv6
Cette section présente un bref historique d’IPv6 et une courte présentation des
diverses technologies qui lui sont associées. D’autres informations, plus poussées,
sont présentées conjointement aux manipulations permettant de les mettre en
œuvre.
1. Pourquoi IPv6 après IPv4
A la suite d’IPv4, un nouveau protocole permettant la diffusion de flux vidéo en
réseau a été mis au point ; il a été baptisé : ST (STreaming Protocol). Sa version la
plus récente, et standardisée par l’IETF (Internet Engineering Task Force) est ST2+,
défini par la RFC1819. Ce protocole, bien que ne portant pas ce nom, a été considéré
comme étant la version 5 du protocole IP (IPv5).
La spécificité de ce protocole et, surtout, de ses applications, ne lui ont pas permis
de s’imposer comme un réel successeur d’IPv4. En effet, l’explosion de l’adoption du
protocole IPv4 dans les communications réseaux ne lui permet pas d’être remplacé
facilement, et son successeur doit donc assurer un maximum de compatibilité et de
simplifications pour pouvoir s’imposer.
Finalisé en Décembre 1998, le protocole IPv6 répond à ces critères en assurant
l’ajout de nombreux traitements optionnels et en simplifiant le traitement des
paquets réseaux par rapport à IPv4. Entre autre, son avantage par rapport à ST2+ est
que ses concepteurs ont pris comme base le protocole IPv4 et ont envisagé ses
évolutions, plutôt que de proposer un nouveau protocole, plus performant, mais
sans comparaison possible. IPv6 est défini dans la RFC 2460 de l’IETF.

Julien HERR TP IPv6 Vivien BOISTUAUD Ingénieurs 2000 - IR3 – 2007-2008
6
2. Les technologies intégrées à IPv6
Les spécifications IPv6 ont tenté de résoudre tous les problèmes rencontrés sur les
réseaux IPv4 :
• Manque d’adresses globales pour pouvoir connecter des périphériques ;
• Paquets de taille variable parfois longs à traiter, et champs obligatoires parfois
inutiles ;
• Pas de gestion de la sécurité au niveau de la couche réseau ;
• Adressage complexe pour les adresses de réseau, de broadcast, de multicast et
d’unicast ;
• Pas de configuration automatique des périphériques réseaux ;
Aussi, à chacune de ses problématiques, une nouvelle technologie, basée sur IPv6 a
été créée :
• La norme IPv6 prévoit un adressage sur 128bits au lieu de 32 bits pour IPv4, soit
296 fois plus d’adresses de périphérique ;
• Les paquets ont une taille multiple de 32 bits obligatoirement, optimisé pour
des processeurs 32bits et supérieurs ;
• La sécurité peut être gérée directement au niveau des en-têtes IPv6 grâce à la
technologie IPSec (RFC 2401 de l’IETF) ;
• IPv6 réduit le nombre de types d’adresses : unicast, multicast (incluant anycast) ;
• IPv6 introduit la notion de choix automatique d’adresse IP via son procédé IPv6
Stateless Address Autoconfiguration (RFC 2462 de l’IETF) ;
• IPv6 permet la fragmentation de paquets directement par le matériel, plutôt
que de renvoyer des erreurs de dimensionnement du MTU (Maxium Transfer
Unit) des divers réseaux traversés.
Remarque : bien d’autres fonctionnalités ont été ajoutées en IPv6 et/ou définies en
même temps sous forme de RFC séparées. Celles-ci ne seront pas abordées dans le cadre
de ce rapport.

Julien HERR TP IPv6 Vivien BOISTUAUD Ingénieurs 2000 - IR3 – 2007-2008
7
Cependant, dans la mesure où très peu de réseaux fonctionnent actuellement en
IPv6 alors que ces besoins sont également présents en IPv4, la plupart de ces
technologies ont été portées en IPv4 :
• IPSec a été définit, dans sa version finale, à la fois pour IPv4 et IPv6 ;
• La configuration automatique d’adresses de lien local IPv4 a été introduite en
Mai 2005 dans la RFC 3927 : Dynamic Configuration of IPv4 Link-Local Addresses.
3. Ecriture d’une adresse IPv6
Les adresses IPv6 ont une longueur de 128bits, soit 4 fois plus qu’en IPv4. Ceci les
rend fastidieuses à mémoriser, mais surtout à écrire pour un administrateur réseau
ou un utilisateur lambda.
Aussi, pour simplifier l’utilisation de ce type d’adresse, les simplifications suivantes
sont autorisées :
• Les adresses sont écrites par bloc de 2 octets (16bits), en hexadécimal (base
16, soit 4 caractères), séparées par un caractère « : ».
• Si un bloc de deus octets commence par un ou plusieurs 0, on peut
simplifier son écriture en omettant les zéros initiaux ; cependant, si le bloc
ne contient que des 0, le dernier doit figurer dans le bloc. Par exemple :
2001:0123:0456:0007:0000:0088:0999:0123 peut se simplifier en
2001:123:456:7:0:88:999:123.
• Si plusieurs blocs de mots valant 0000 en hexadécimal sont présents
successivement dans l’adresse, et à condition de n’utiliser cet artifice qu’une
fois dans une même adresse, on peut résumer tous ces blocs par deux « : »
successifs.
Par exemple, on peut simplifier 2001:0:0:0:1:2:3:4 en 2001::1:2:3:4, mais
on ne peut pas simplifier 2001:0:0:1:2:0:0:4 en 2001::1:2::4, il faut choisir
entre 2001:0:0:1:2::4 et 2001::1:2:0:0:4.

Julien HERR TP IPv6 Vivien BOISTUAUD Ingénieurs 2000 - IR3 – 2007-2008
8
2. Matériel utilisé lors du TP
Lors de ce T.P., nous avions à notre disposition :
• Quatre ordinateurs fonctionnant sous Debian GNU/Linux (Noyau 2.6.9,
distribution Sarge), chacun étant géré par un opérateur parmi : Vivien, Julien,
Aurélia et Florence ; Chaque machine est équipée de deux cartes réseaux et les
modules et outils IPv6 définis dans la section 1.4 sont installés ;
• Deux switchs HP équipés de 32 ports Ethernet/Fast-Ethernet (10/100 Mbps) ;
• Des câbles réseaux droits et croisés (en fonction du type de connexion à
effectuer ;
• Un réseau local préconfiguré pour la salle de TP, qui est équipée de switch
interconnectant tous les ordinateurs du réseau.

Julien HERR TP IPv6 Vivien BOISTUAUD Ingénieurs 2000 - IR3 – 2007-2008
9
3. Montages réalisés
Durant ce TP, nous avons réalisé plusieurs montages. Dans les sections 2 et 3, nous
avons utilisé un réseau dont la topologie est la suivante :
Puis, dans la section 4, nous tenteront de réaliser un réseau ayant la topologie
suivante :
Figure 2 - Montage pour la section 4, avec routage IPv6
HW
@:
00:08:74:0C:18:3
6O
péra
teur
: Vi
vien
Agi
t com
me
rout
eur
HW
@:
00:08:74
:0c:19:e2
Opé
rate
ur :
Julie
n
HW
@:
00:08:74:0c:
19:bb
Opé
rate
ur :
Flor
ence
Agi
t com
me
rout
eur
Opé
rate
ur :
Aur
élia
eth0
HW
@:
00:08:
74:0C:
18:36
Opé
rate
ur :
Vivi
en
HW
@:
00:08:
74:0c:
19:e2
Opé
rate
ur :
Julie
n
HW
@:
00:0
8:74:0c:
19:bb
Opé
rate
ur :
Flor
ence
Opé
rate
ur :
Aur
élia
eth1
eth1
eth1
eth1
Figure 1 - Montage initial pour les manipulations des sections 2 et 3

Julien HERR TP IPv6 Vivien BOISTUAUD Ingénieurs 2000 - IR3 – 2007-2008
10
4. Configuration logicielle et référence des commandes
Ce TP nécessite qu’un certain nombre de commandes et de modules soient installés
sur le système. Par défaut, sous Debian Sarge, les paquets nécessaires sont déjà
installés.
Les commandes/outils suivants vont être utilisées au cours de ce rapport :
• ping6, un outil permettant l’envoi et la réception de requête ICMPv6 ECHO ;
Entre autre, cet utilitaire permet vérifier que la communication entre deux
hôtes utilisant IPv6 peut se faire ;
• dhclient, qui est un outil initialement conçu pour la configuration
automatique d’un poste par DHCP en IPv4 ; il fonctionne également pour la
détection de messages d’avertisement routeurs IPv6, lui permettant de
mettre en œuvre la configuration automatique IPv6 ;
• ethereal, il s’agit d’un outil d’analyse de protocole réseau ; à noter que ce
projet a été repris sous le nom wireshark depuis un an et demi ;
• ifconfig, il s’agit de la commande linux de base permettant de configurer
les interfaces réseaux ; cet outil supporte IPv4 et IPv6 ;
• ip, il s’agit d’un outil proche de ifconfig, permettant de configurer tout ce
qui est lié à la configuration IPv4/IPv6 de la machine Linux (interfaces, tables
de routage, etc…)
• route, il s’agit d’un utilitaire permettant de manipuler les tables de routage.

Julien HERR TP IPv6 Vivien BOISTUAUD Ingénieurs 2000 - IR3 – 2007-2008
11
2. Activation d’IPv6 sous Linux
Avant de pouvoir utiliser IPv6 sur un système d’exploitation Linux, il est nécessaire
que les modules noyaux correspondants soient installés sur la machine, et que ceux-
ci soient chargés dynamiquement dans le noyau (ou intégrés dans le noyau à la
compilation).
Sous Windows, seul Windows Vista installe une couche réseau IPv6 par défaut sur la
machine. Sous Windows XP, à partir du Service Pack 1, vous pouvez demander à
installer la prise en charge IPv6 depuis le gestionnaire de configuration de votre
périphérique réseau.
Enfin, sous Windows 2000, des pilotes IPv6 sont disponibles mais à titre
expérimental uniquement. Vous pouvez les télécharger à l’adresse suivante :
http://www.microsoft.com/downloads/details.aspx?FamilyID=27b1e6a6-bbdd-
43c9-af57-dae19795a088&DisplayLang=en.
Dans le cadre de nos expérimentations, nous n’utiliseront que des machines Linux
et, par conséquent, nous ne détailleront pas les étapes de configuration et de test
pour Windows. Notez simplement que si IPv6 est installé sur votre machine
Windows, la commande ping -6 vous permet de simuler un fonctionnement
proche de l’utilitaire ping6.
1. Vérification de la présence d’IPv6 sur le système
Afin de s’assurer qu’IPv6 est installé sur la machine, vous pouvez vérifier tout
d’abord la présence du module noyau nommé ipv6.ko. Si les modules IPv6 sont
installés sur votre machine, vous devriez trouver ce fichier dans le dossier
/lib/modules/$KERNEL_VERSION/kernel/net/ipv6 comme suit :
# export KERNEL_VERSION=`uname –r` # ls –al /lib/modules/$KERNEL_VERSION/kernel/net/ipv6/ipv6.ko -rw-r--r-- 1 root root 234016 2007-08-13 04:31 ipv6.ko
Si le module n’est pas présent, vous devez installer les paquets IPv6 pour votre
distribution Linux. Sous debian GNU/Linux, à compter de Sarge, les paquets
nécessaires sont installés par défaut.

Julien HERR TP IPv6 Vivien BOISTUAUD Ingénieurs 2000 - IR3 – 2007-2008
12
Pour vérifier si le module est chargé dans votre noyau, utilisez la commande lsmod
| grep ipv6. Si le résultat renvoyé est proche de celui ci-après, alors c’est que le
module réseau IPv6 est déjà chargé :
# lsmod |grep ipv6 ipv6 234016 8
S’il est déjà chargé, vous pouvez passer directement à la section 2.3 « Vérification du
chargement et des modalités d’utilisation ». Sinon, consultez la section suivante.
2. Chargement du module IPv6
Note : si les informations fournies en 2.4 vous ont permis de déterminer que le
module IPv6 est déjà chargé dans le noyau de votre système, vous pouvez passer à
l’étape suivante.
Pour charger un module sur linux, il faut utiliser la commande modprobe. Cette
dernière permet de gérer les manipulations haut niveau des modules chargeables.
C'est-à-dire qu’il est possible avec cette commande de charger un ou plusieurs
modules, de les lister, et de supprimer l’un ou plusieurs modules.
Ci-après, quelques options utiles de la commande modprobe :
• modprobe –c : affiche la configuration courante ;
• modprobe –l : liste les modules disponibles ;
• modprobe –r [module] : supprime le module désigné ;
• modprobe –k : rend les modules chargées en mode autoclean, c'est-à-dire
que les modules seront chargés quand le système en aura besoin et seront
déchargés quand le système n’en n’aura plus besoin.
Dans notre cas, nous nous intéressons au module IPv6. Nous commençons par
vérifier que les modules IPv6 sont présents sur la machine et prêts à être chargé.
Pour cela, nous utilisons la commande modprobe pour lister les modules disponible
en nous intéressons uniquement aux modules IPv6 :

Julien HERR TP IPv6 Vivien BOISTUAUD Ingénieurs 2000 - IR3 – 2007-2008
13
# lsmod –l | grep ipv6 /lib/modules/[…]/kernel/net/ipv6/ipv6.o.gz /lib/modules/[…]/kernel/net/ipv6/netfilter/ip6_tables.o.gz /lib/modules/[…]/kernel/net/ipv6/netfilter/ip6t_LOG.o.gz /lib/modules/[…]/kernel/net/ipv6/netfilter/ip6t_MARK.o.gz /lib/modules/[…]/kernel/net/ipv6/netfilter/ip6t_limit.o.gz /lib/modules/[…]/kernel/net/ipv6/netfilter/ip6t_mac.o.gz /lib/modules/[…]/kernel/net/ipv6/netfilter/ip6t_mark.o.gz /lib/modules/[…]/kernel/net/ipv6/netfilter/ip6t_multiport.o.gz /lib/modules/[…]/kernel/net/ipv6/netfilter/ip6t_owner.o.gz /lib/modules/[…]/kernel/net/ipv6/netfilter/ip6table_filter.o.gz /lib/modules/[…]/kernel/net/ipv6/netfilter/ip6table_mangle.o.gz
Si la commande affiche des modules comme dans notre exemple, c’est que le
module peut être chargé. Pour cela, nous utilisons à nouveau la commande
modprobe :
# modprobe ipv6
Le module est normalement chargé. C’est ce que nous allons vérifier dans la section
suivante.
3. Vérification du chargement et des modalités d’utilisation
Comme dans la section 2.1, nous vérifions à nouveau que le module est chargé
grâce à la commande :
# lsmod |grep ipv6 ipv6 234016 8
Si le chargement du module IPv6 s’est bien déroulé, la commande doit donner un
résultat comme dans notre exemple.
Maintenant que le module est bien chargé, nous vérifions la présence dans dmesg
de la ligne :
IPv6 over IPv4 tunneling driver
Celle-ci nous indique de le pilote permettant de transmettre des paquets IPv6 sur
une connexion IPv4 est activé. Ceci est pratique pour une connexion multisite entre
deux réseaux IPv6 transitant par un réseau IPv4 (par exemple, par internet).

Julien HERR TP IPv6 Vivien BOISTUAUD Ingénieurs 2000 - IR3 – 2007-2008
14
Pour vérifier cela, la simple commande suivante suffit :
# dmesg |grep IPv6 IPv6 over IPv4 tunneling driver eth0: no IPv6 routers present
La seconde ligne « eth0: no IPv6 routers present » est normal car au
moment du chargement du module IPv6, nous ne disposions pas de routeur IPv6
sur notre réseau. En effet, ce message est présent lorsque la configuration
automatique ne peut pas obtenir le préfixe du réseau, ce qui n’est possible qu’avec
un routeur IPv6 présent sur le réseau.

Julien HERR TP IPv6 Vivien BOISTUAUD Ingénieurs 2000 - IR3 – 2007-2008
15
3. Configuration basique d’IPv6
Afin d’observer le fonctionnement d’IPv6 et, notamment, les différents types
d’adresses qu’il propose, nous avons dans un premier temps observé la composition
des adresses IPv6 ainsi que les services disponibles sous UNIX qui lui sont associés.
1. Attribution automatique d’une adresse de lien local
A partir du moment où la configuration décrite dans la section 2 de ce rapport a été
mise en œuvre, à savoir le chargement du module IPv6 dans le noyau Linux, chaque
interface réseau activée et connectée à son medium se voit attribuer une adresse
IPv6.
Notons également que l’interface de loopback (boucle interne) se voit également
attribuer une adresse IPv6. Par exemple, voici ce que nous obtenons si nous
exécutons la commande ifconfig :
eth0 Lien encap:Ethernet HWaddr 00:10:A7:1B:5D:C2 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:1000 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b) Interruption:169 Adresse de base:0xdc00 eth1 Lien encap:Ethernet HWaddr 00:08:74:0C:18:36 inet adr:172.17.4.5 Bcast:172.17.255.255 Masque:255.255.0.0 adr inet6: fe80::208:74ff:fe0c:1836/64 Scope:Lien UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1014 errors:0 dropped:0 overruns:1 frame:0 TX packets:572 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:1000 RX bytes:1047521 (1022.9 KiB) TX bytes:84780 (82.7 KiB) Interruption:177 Adresse de base:0x800 lo Lien encap:Boucle locale inet adr:127.0.0.1 Masque:255.0.0.0 adr inet6: ::1/128 Scope:Hôte UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:8 errors:0 dropped:0 overruns:0 frame:0 TX packets:8 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:0 RX bytes:560 (560.0 b) TX bytes:560 (560.0 b)
L’adresse loopback correspond, tout comme avec IPv4, à une interface fictive. Elle
permet à la machine de s’envoyer elle-même des paquets réseaux sans pour autant
posséder d’interface réseau physique (carte réseau). Avec IPv4, l’adresse de

Julien HERR TP IPv6 Vivien BOISTUAUD Ingénieurs 2000 - IR3 – 2007-2008
16
loopback était 127.0.0.1 avec le protocole IPv6 l’adresse de loopback est
0:0:0:0:0:0:0:1 ou ::1 avec l’écriture simplifiée IPv6.
Le protocole IPv6 intègre plusieurs mécanismes notamment sur l’attribution
d’adresse autonome (c'est-à-dire sans l’aide d’un serveur). De plus, IPv6 permet à
une interface réseau de posséder plusieurs adresses logiques IPv6. Les adresses de
type lien local sont des adresses dont la validité sont restreinte à un lien, c'est-à-dire
l’ensemble des interfaces directement connectées sans routeur (par exemple,
l’ensemble des machines connectées sur un même hub ou switch appartiennent au
même lien).
La création de cette adresse se fait, sous Linux, via la convention EUI-64 de l’IEEE. Elle
a lieu lors de l’initialisation de l’interface et est obtenue en concaténant le préfixe
lien local (FE80:0:0:0/64) qui est fixé aux 64 bits de l’identifiant d’interface.
L’identifiant d’interface, quant à lui, se crée à partir de l’adresse MAC de l’interface
comme le montre le schéma ci-après.
Figure 3 - Attribution de l'identifiant d'interface à partir de l'adresse MAC (EUI-64)
Dans notre exemple, l’adresse MAC de l’interface eth1 est 00:08:74:0C:18:36,
l’identifiant d’interface est donc 02:08:74:FF:FE:0C:18:36 et l’adresse IPv6 de
lien local de l’interface eth1 est donc FE80:0008:74FF:FE0C:1836 ou
FE80::8:74FF:FE0C:1836 avec l’écriture IPv6 simplifiée. Nous pouvons vérifier
l’adresse trouvée au résultat de la commande ifconfig ci-avant et nous
constatons que nous obtenons le même résultat. Il est à noter qu’avant de
s’attribuer une adresse de lien local, le mécanisme vérifie que l’adresse n’existe pas
déjà sur le lien. Dans le cas où l’adresse est déjà utilisée sur le lien, aucune adresse
de lien logique n’est attribuée à l’interface.
Pour conclure sur les adresses IPv6, le protocole reconnait trois types d’adresses :
unicast, multicast et anycast.

Julien HERR TP IPv6 Vivien BOISTUAUD Ingénieurs 2000 - IR3 – 2007-2008
17
Le premier type, unicast, est le plus simple. Une adresse de ce type représente une
interface unique. Parmi ces adresses unicast, on peut dissocier celles qui ont une
portée globale (c'est-à-dire identifiant une machine unique sur le réseau internet),
de celles qui ont une portée locale : site locale (adresse commune aux machines
d’un même site) ou lien local (adresse commune aux machines d’un même lien
physique).
Une adresse de type multicast représente un groupe d’interfaces qui appartiennent
à des nœuds différents pouvant se situer n’importe où sur le réseau internet. Ces
adresses IPv6 sont préfixées par ff00:: /8. Il est à noter que les adresses de type
multicast remplacent les adresses de type broadcast connu sous IPv4.
Enfin, le dernier type, anycast, qui représente un groupe d’interfaces tout comme le
type multicast. Cependant la différence de type anycast est qu’on accède plus à un
service qu’à une machine. En effet, alors qu’une adresse multicast permet d’envoyer
un paquet à l’ensemble des interfaces ayant cette adresse, un paquet envoyé à une
adresse anycast n’est diffusé qu’à une seule adresse. Il est à noter le type anycast est
encore au stade de recherche.
2. Activer la reconnaissance des extensions IPv6
Le protocole IPv6 définit de nombreux protocoles complémentaires à son
utilisation, notamment ICMPv6. Afin que le système traite ces protocoles, le module
correspondant doit être chargé (ipv6.ko gère la plupart des extensions lui-même) et
le fichier /etc/protocols doit contenir une entrée permettant de corréler le nom
de l’extension avec le numéro de protocole IP.
Pour cela, chaque ligne du fichier /etc/protocols a la structure suivante :
# Dès qu’un dièse apparait sur la ligne, le reste est un commentaire nom-principal-protocole 99 AliasProtocole1 AliasProtocole2 …
Ainsi, chaque protocole peut posséder plusieurs alias, permettant de référencer par
exemple un nom protocolaire et un nom cour ant. Le numéro (ici 99 pour
l’exemple) désigne le numéro de protocole dans l’en-tête IP. En effet, chaque
protocole standardisé se voit attribuer un numéro par l’IANA, qui est utilisé dans
chaque champ « protocole » de l’en-tête IP du paquet le contenant.
Par exemple, le protocole IPv4 possède le numéro 0, et le protocole IPv6 possède le
numéro 41.

Julien HERR TP IPv6 Vivien BOISTUAUD Ingénieurs 2000 - IR3 – 2007-2008
18
Afin de s’assurer que, par la suite, nous pourront tirer parti des protocoles IPv6,
ICMPv6 et d’autres extensions du protocole, nous devons nous assurer que les
lignes suivantes sont présentes et non commentées dans le fichier
/etc/protocols :
ipv6 41 IPv6 # IPv6 ipv6-route 43 IPv6-Route # Routing Header for IPv6 ipv6-frag 44 IPv6-Frag # Fragment Header for IPv6 ipv6-crypt 50 IPv6-Crypt # Encryption Header for IPv6 ipv6-auth 51 IPv6-Auth # Authentication Header for IPv6 ipv6-icmp 58 IPv6-ICMP # ICMP for IPv6 ipv6-nonxt 59 IPv6-NoNxt # No Next Header for IPv6 ipv6-opts 60 IPv6-Opts # Destination Options for IPv6
En effet, si les protocoles ne sont pas référencés par leur nom, il sera impossible au
module IPv6 et à ses programmes associés de trouver le numéro de protocole
correspondant aux en-têtes à traiter. Ceci aura alors pour conséquence d’empêcher
l’émission de ce type de paquet, ainsi que leur réception par la machine.
Note : sur notre version de Debi an GNU/Linux Sarge, les protocoles ipv6-auth et ipv6-
crypt n’étaient pas présents dans le fichier protocols.
3. Simplifier l’écriture d’adresses IPv6
Les adresses IPv6 sont, la plupart du temps, impossibles à mémoriser. Ceci est dû en
grande partie à leur taille importante de 128 bits, et à leur complexité de notation,
malgré les efforts faits pour simplifier l’écriture des successions d’octets nuls (00).
Aussi, en l’absence de la possibilité d’utiliser un DNS, il peut être utile de créer des
alias permettant d’associer une adresse IPv6 complète par un simple nom. Sous
Linux, ce principe est le même que pour les alias IPv4, de même que le fichier qui les
déclare.
Ce fichier s’appelle /etc/hosts et son format est le suivant :
# Dès qu’un dièse apparait sur la ligne, le reste est un commentaire xx.xx.xx.xx aliasipv41 aliasipv42 yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy aliasipv61 aliasipv62
A chaque adresse peut être assigné plusieurs alias. En revanche, comme nous le
verront dans la suite de ce document, un alias ne peut pas porter le même nom
pour pointer vers deux adresses, bien que le protocole IPv6 permette d’assigner
plusieurs adresses à un même périphérique réseau, sur le même medium.

Julien HERR TP IPv6 Vivien BOISTUAUD Ingénieurs 2000 - IR3 – 2007-2008
19
Par exemple, afin de simplifier l’écriture des adresses de lien local des interfaces
eth1 de Vivien et Julien, nous avons ajouté les alias suivant au fichier /etc/host :
fe80::208:74ff:fe0c:19e2 julien-eth1-local fe80::208:74ff:fe0c:1836 vivien-eth1-local
Dorénavant, nous pourront utiliser ces alias pour toutes les commandes réseaux
attendant habituellement une adresse IPv6, dans la mesure où les adresses saisies
sont des adresses IPv6.
1. Assigner plusieurs adresses IP à un même nom d’alias
En revanche, comme nous l’avons dit précédemment, il est impossible d’affecter un
même nom d’alias à plusieurs adresses IP et ceci pour une raison simple.
La résolution d’un nom d’hôte par le système est configurée via le fichier
/etc/nsswitch.conf. Celui-ci précise l’ordre dans lequel on doit faire appel aux
informations de résolution. En général, on cherche d’abord dans les fichiers (c'est-à-
dire dans /etc/hosts), puis on cherche sur un serveur DNS si disponible.
La recherche dans le fichier d’alias des hôtes est une recherche « flemmarde » (lazy),
c'est-à-dire que dès que le résultat est trouvé, le recherche s’arrête et le résultat est
considéré comme le seul disponible.
De plus, assigner plusieurs adresses à un même alias serait un non sens, dans la
mesure où la plupart des commandes utilisant une adresse IP ont besoin d’une
seule adresse et non pas d’une plage, ni de plusieurs adresses.
Ceci présente cependant un inconvénient majeur : si on souhaite pouvoir contacter
une machine à la fois via son adresse IPv4 et son adresse IPv6, il faut lui affecter des
noms d’hôtes différents pour chaque type d’adresses. Cependant, ce cas a peu de
chances de se produire dans la mesure où un réseau fonctionne généralement soit
totalement en IPv4, soit totalement en IPv6, en tous cas dans le cadre d’un réseau
d’entreprise.
2. Remarques sur le contenu de /etc/hosts pour IPv6
Sur notre installation de Debian GNU/Linux Sarge avec IPv6 installé par défaut, notre
fichier /etc/hosts contient déjà des entrées prédéfinies de noms d’hôtes spécifiques :

Julien HERR TP IPv6 Vivien BOISTUAUD Ingénieurs 2000 - IR3 – 2007-2008
20
::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts
Note: si ces entrées ne se trouvent pas dans votre fichier /etc/hosts, vous êtes
vivement encouragé à les ajouter en prévision des manipulations suivantes.
Ces entrées correspondent respectivement à :
• L’adresse principale de la boucle locale de la machine ;
• L’adresse de multicast du réseau local en IPv6 (remplaçant la notion
d’adresse de broadcast introduite en IPv4) ;
• Le préfixe des adresses de multicast IPv6 ;
• L’adresse de multicast IPv6 pour tous les appareils connectés au lien local ;
• L’adresse de multicast IPv6 pour tous les routeurs connectés au lien local ;
• L’adresse de multicast IPv6 pour tous les robots connectés au lien local (non
utilisé à l’heure actuelle, utilisation future pour la robotique et la
domotique) ;
Aussi, ces alias permettent de simplifier la recherche de machines (ordinateurs,
routeurs ou autres appareils) sur le réseau.
4. Test de la machine en local
Afin de vérifier que notre configuration IPv6 est fonctionnelle, nous avons testé
l’utilisation de la commande ping6 (envoi de messages ICMPv6 ECHO) pour
envoyer des messages à destination de notre interface de loopback et de notre
interface réseau ethernet eth1.
Pour adresser l’interface de loopback par son adresse IPv6, on utilise :

Julien HERR TP IPv6 Vivien BOISTUAUD Ingénieurs 2000 - IR3 – 2007-2008
21
# ping6 ::1 PING ::1(::1) 56 data bytes 64 bytes from ::1: icmp_seq=1 ttl=64 time=0.067 ms 64 bytes from ::1: icmp_seq=2 ttl=64 time=0.061 ms 64 bytes from ::1: icmp_seq=3 ttl=64 time=0.064 ms --- ::1 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 1998ms rtt min/avg/max/mdev = 0.061/0.064/0.067/0.002 ms
On remarque que l’interface de loopback répond à nos messages, ce qui valide le
fonctionnement IPv6 de cette interface. On aurait pu obtenir le même résultat en
utilisant son alias définit précédemment, via la commande : ping6 –I lo ::1.
Pour adresser notre interface eth1 (depuis la machine Vivien vers la machine Vivien)
on peut utiliser :
# ping6 -I eth1 fe80::208:74ff:fe0c:1836 PING fe80::208:74ff:fe0c:1836(fe80::208:74ff:fe0c:1836) from fe80::208:74ff:fe0c:1836 eth1: 56 data bytes 64 bytes from fe80::208:74ff:fe0c:1836: icmp_seq=1 ttl=64 time=0.070 ms 64 bytes from fe80::208:74ff:fe0c:1836: icmp_seq=2 ttl=64 time=0.073 ms 64 bytes from fe80::208:74ff:fe0c:1836: icmp_seq=3 ttl=64 time=0.073 ms --- fe80::208:74ff:fe0c:1836 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2003ms rtt min/avg/max/mdev = 0.070/0.072/0.073/0.001 ms
On valide alors le fonctionnement de notre interface eth1 en IPv6. Le même résultat
aurait pu être obtenu via la commande : ping6 -I eth1 vivien-eth1-local.
Remarque : si ces manipulations ne fonctionnent pas sur votre machine, assurez vous
qu’aucun firewall IPv6 n’est activé sur votre machine, que les interfaces possèdent des
adresses IPv6 de lien local, et que vous avez activé la reconnaissance du protocole
ICMPv6 qui est nécessaire à l’envoi et la réception de messages ICMPv6 ECHO qui sont
générés par la commande ping6.
5. Communication avec une machine du réseau local
Lorsque deux machines sont connectées sur le même medium, ou du moins sur le
même réseau local (sans rencontrer de routeur sur son chemin), les machines
peuvent communiquer ensemble en utilisant leur adresse IPv6 de lien local.
Par exemple, une fois les deux machines (Vivien et Julien) configurées, on peut
communiquer entre elles via l’envoi de messages ICMPv6 ECHO. Soit on utilise l’alias
définit précédemment :

Julien HERR TP IPv6 Vivien BOISTUAUD Ingénieurs 2000 - IR3 – 2007-2008
22
# ping6 -I eth1 julien PING julien-eth1-local(julien-eth1-local) from fe80::208:74ff:fe0c:1836 eth1: 56 data bytes 64 bytes from julien-eth1-local: icmp_seq=1 ttl=64 time=6.63 ms 64 bytes from julien-eth1-local: icmp_seq=2 ttl=64 time=0.207 ms 64 bytes from julien-eth1-local: icmp_seq=3 ttl=64 time=0.208 ms 64 bytes from julien-eth1-local: icmp_seq=4 ttl=64 time=0.215 ms 64 bytes from julien-eth1-local: icmp_seq=5 ttl=64 time=0.207 ms --- julien-eth1-local ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4006ms rtt min/avg/max/mdev = 0.207/1.494/6.635/2.570 ms
Ou on peut également l’adresser directement par son adresse IPv6 :
# ping6 -I eth1 fe80::208:74ff:fe0c:19e2 PING fe80::208:74ff:fe0c:19e2(fe80::208:74ff:fe0c:19e2) from fe80::208:74ff:fe0c:1836 eth1: 56 data bytes 64 bytes from fe80::208:74ff:fe0c:19e2: icmp_seq=1 ttl=64 time=4.42 ms 64 bytes from fe80::208:74ff:fe0c:19e2: icmp_seq=2 ttl=64 time=0.222 ms 64 bytes from fe80::208:74ff:fe0c:19e2: icmp_seq=3 ttl=64 time=0.210 ms --- fe80::208:74ff:fe0c:19e2 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2000ms rtt min/avg/max/mdev = 0.210/1.619/4.427/1.985 ms
Cependant, il faut noter que l’utilisation du switch –I et la précision du nom de
l’interface réseau (eth1) sont indispensables pour que la commande ping6
fonctionne.
En effet, si nous tentons la même commande sans préciser l’interface, on obtient le
résultat suivant :
# ping6 fe80::208:74ff:fe0c:19e2 connect: Invalid argument
Deux éléments nous permettent de comprendre et de prévoir ce comportement.
Tout d’abord, le manuel de la commande ping6 qui précise :
-I interface address Set source address to specified interface address. Argument may be numeric IP address or name of device. When pinging IPv6 link- local address this option is required.
En d’autres termes; lors de l’utilisation d’une adresse de lien local, le switch –I est
indispensable.
De plus, il s’agit d’une question de bon sens : une adresse de lien local est affectée à
un medium d’accès donné et, par conséquent, à un réseau donné. Aussi, plusieurs
machines différentes peuvent potentiellement posséder la même adresse de lien

Julien HERR TP IPv6 Vivien BOISTUAUD Ingénieurs 2000 - IR3 – 2007-2008
23
local sur des réseaux différents. L’indication de l’interface sur laquelle la requête doit
être envoyée permet alors de lever l’ambiguïté quand au choix potentiel du
destinataire du message.
6. Analyse approfondie du fonctionnement d’ICMPv6 ECHO
Afin de mieux cerner ce qui se passe d’un point de vue Ethernet, IPv6 et ICMPv6 lors
de nos échanges de messages ECHO via notre adresse de lien local, nous avons
utilisé Ethereal (anciennement WireShark) pour analyser les paquets échangés sur
nos cartes réseaux eth1.
Pour cela, nous exécutons la commande suivante depuis l’ordinateur Vivien :
# ping6 -c 1 -s 2000 -I eth1 julien PING julien-eth1-local(julien-eth1-local) from fe80::208:74ff:fe0c:1836 eth1: 2000 data bytes 2008 bytes from julien-eth1-local: icmp_seq=1 ttl=64 time=0.797 ms --- julien-eth1-local ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.797/0.797/0.797/0.000 ms

Julien HERR TP IPv6 Vivien BOISTUAUD Ingénieurs 2000 - IR3 – 2007-2008
24
Voici le résultat de la dissection du paquet de requête envoyé par Vivien à Julien :
Et ici, la dissection du paquet émis en réponse renvoyé par Julien à Vivien :
Figure 4 - Requête ICMPv6 ECHO non fragmentée avec adresses de lien local
Figure 5 - Réponse ICMPv6 ECHO non fragmentée avec adresses de lien local

Julien HERR TP IPv6 Vivien BOISTUAUD Ingénieurs 2000 - IR3 – 2007-2008
25
Afin de synthétiser ce fonctionnement, nous avons réalisé le diagramme suivant :
D’un point de vue Ethernet, les adresses MAC sont directement obtenues à partir de
l’adresse de lien local IPv6, à partir des 8 octets de poids faible de l’adresse IPv6. Ceci
évite de devoir envoyer une requête demande la résolution d’adresse Ethernet
et/ou d’envoyer le message en broadcast Ethernet.
Le paquet IPv6 précise l’adresse de l’émetteur et du destinataire du paquet, qui sont
connues lors de l’envoi, et précisé également que l’en-tête suivant au sein du
paquet est de type ICMPv6 et a une longueur de 64 octets (Payload length). De plus,
dans le cas où ce message serait routé par un routeur, le nombre de sauts pour
contacter l’hôte en question ne devrait excéder 64. Notez cependant que cette
information est inutile dans la mesure où aucun routeur ne redirigera ce type de
paquet, car il ne lui est pas adressé d’un point de vue Ethernet.
Le paquet ICMPv6 envoyé possède un numéro d’identifiant (ID) ainsi qu’un numéro
de séquence (numéro du paquet de ping, ici 1 car il s’agit du paquet). De plus, le
paquet indique que le type de message envoyé est de type requête echo (ECHO
REQUEST).
Lorsque Julien reçoit ce paquet, émis par Vivien, il lui envoi une réponse. D’un point
de vue Ethernet et IPv6, les informations transmises sont les mêmes, excepté que
l’adresse source de la requête se transforme en adresse destination de la réponse et
vice versa. Dans ce cas, on évite toujours d’avoir à effectuer une résolution d’adresse
MAC en envoyant une demande : les informations étant présentes dans la requête.
Figure 6 - Schéma requête/réponse ICMPv6 ECHO sans fragmentation

Julien HERR TP IPv6 Vivien BOISTUAUD Ingénieurs 2000 - IR3 – 2007-2008
26
Le message ICMPv6 par contre est désormais de type ECHO RESPONSE et reprend le
numéro d’ID et le numéro de séquence de la requête initiale, afin que les éventuels
paquets perdus puissent être détectés par leur numéro d’ordre. De plus, le champ
de donnée contient une reproduction identique du champ de donné de la requête.
Le checksum en revanche est différent, prenant en compte dans son calcul le fait
que le type de message (129) n’est plus le même que précédemment (128).
Si des messages suivants étaient envoyés, ils contiendraient un champ Sequence, au
sein du paquet ICMPv6, qui serait incrémenté à chaque envoi de message.
7. Fragmentation de paquets en IPv6
Afin de tester la fragmentation de paquet en IPv6, qui est un procédé plus simple
qu’en IPv4, nous allons tenter d’envoyer un message ICMPv6 ECHO de 2000 octets,
ce qui excède la taille du MTU du réseau local auquel nous sommes connectés (qui
est de 1500 selon les informations fournies par la commande ifconfig
précédemment).
Pour cela, nous avons utilisé cette commande depuis la machine Vivien :
# ping6 -c 1 -s 2000 -I eth1 julien-eth1-local PING julien-eth1-local (julien-eth1-local) from fe80::208:74ff:fe0c:1836 eth1: 2000 data bytes 2008 bytes from julien-eth1-local: icmp_seq=1 ttl=64 time=0.800 ms --- julien ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.800/0.800/0.800/0.000 ms
Lors de cet échange de données, nous avons réalisé une capture ethereal nous
permettant de visualiser le contenu des paquets envoyés.

Julien HERR TP IPv6 Vivien BOISTUAUD Ingénieurs 2000 - IR3 – 2007-2008
27
Figure 7 - Requête fragmentée - fragment 1
Figure 8 - Requête fragmentée - fragment 2

Julien HERR TP IPv6 Vivien BOISTUAUD Ingénieurs 2000 - IR3 – 2007-2008
28
De cette capture, nous avons déduit le diagramme ci-après.
La communication par ICMPv6 ECHO se fait comme précédemment, à l’exception
qu’un en-tête supplémentaire est ajouté dans le paquet : il est appelé fragmentation
header. Celui-ci indique que le contenu de l’en-tête suivant (ICMPv6) est fragmenté
et que le paquet contient les premiers octets du message original.
Un autre paquet est également envoyé, qui spécifie le reste de l’en-tête ICMPv6 et
indique qu’il s’agit du dernier paquet contenant les informations de fragmentation.
Une fois que la machine distante a reçu ces deux paquets, elle reconstitue l’en-tête
ICMPv6 initial et la traite. Dans la mesure où le MTU est toujours supérieur à la taille
des données à renvoyer, elle fragmente également sa réponse.
A part l’ajout de l’en-tête de fragmentation, le contenu des messages ICMPv6
échangés est le même. C’est l’avantage du procédé de fragmentation IPv6 : seul un
en-tête indiquant les modalités de fragmentation est ajouté, et la reconstruction du
paquet fragmenté est facilement reconstituable à l’aide de ces informations. En
effet, on note qu’il faut autant de temps pour traiter le paquet à la machine distante
que précédemment, donc que peu de calculs supplémentaires sont nécessaires
pour reconstituer le paquet.
8. Détecter les machines d’un lien par Multicast
Afin de détecter les machines utilisant IPv6 présentes sur un lien donné, il est
possible d’utiliser une des trois adresses de multicast : ff02::1, ff02::2 ou
ff02::3. A moins qu’une machine soit équipée d’un firewall IPv6 bloquant ce type
Figure 9 - Test ECHO ICMPv6 avec fragmentation de paquet

Julien HERR TP IPv6 Vivien BOISTUAUD Ingénieurs 2000 - IR3 – 2007-2008
29
de requête, tout matériel IPv6 est, en standard, apte à répondre à ces requêtes de
multicast. Le type d’adresse à laquelle il répond est fonction de sa « classe » de
matériel :
• ff02::1 pour les ordinateurs ;
• ff02::2 pour les routeurs ;
• ff02::3 qui est réservé pour une utilisation future : autres matériels
intelligents, robots.
Avec IPv4, pour détecter les machines d’un même réseau IP, il était nécessaire de
faire un ping spécial, de type broadcast. Ce type de ping ne permettait pas
systématiquement de voir toutes les machines du réseau, et encore moins toutes
celles du lien local.
Avec IPv6, le broadcast IP a disparu. A la place, des adresses de Multicast dédiées à la
détection de machines sur un lien ont été définies, celles que nous avons vues
précédemment.
En revanche, ce type de paquet est transmis, d’un point de vue Ethernet, sous forme
d’un broadcast MAC.
Par exemple, si on cherche à détecter tous les ordinateurs du lien local sur lequel
nos machines sont connectées, depuis la machine Vivien, nous obenons le résultat
ci-dessous :

Julien HERR TP IPv6 Vivien BOISTUAUD Ingénieurs 2000 - IR3 – 2007-2008
30
# ping6 –c 1 -I eth1 ff02::1 PING ff02::1(ff02::1) from fe80::208:74ff:fe0c:1836 eth1: 56 data bytes 64 bytes from fe80::208:74ff:fe0c:1836: icmp_seq=1 ttl=64 time=0.069 ms 64 bytes from fe80::208:74ff:fe0c:1988: icmp_seq=1 ttl=64 time=0.242 ms (DUP!) 64 bytes from fe80::208:74ff:fe0c:19d2: icmp_seq=1 ttl=64 time=0.253 ms (DUP!) 64 bytes from fe80::208:74ff:fe0c:1659: icmp_seq=1 ttl=64 time=0.264 ms (DUP!) 64 bytes from fe80::208:74ff:fe0c:1aa1: icmp_seq=1 ttl=64 time=0.276 ms (DUP!) 64 bytes from fe80::208:74ff:fe0c:19e2: icmp_seq=1 ttl=64 time=0.286 ms (DUP!) 64 bytes from fe80::20d:56ff:fe2d:65a8: icmp_seq=1 ttl=64 time=0.298 ms (DUP!) 64 bytes from fe80::208:74ff:fe0e:cff: icmp_seq=1 ttl=64 time=0.311 ms (DUP!) 64 bytes from fe80::208:74ff:fe0c:19d3: icmp_seq=1 ttl=64 time=0.321 ms (DUP!) 64 bytes from fe80::208:74ff:fe0c:1510: icmp_seq=1 ttl=64 time=0.333 ms (DUP!) 64 bytes from fe80::208:74ff:fe0c:1a1b: icmp_seq=1 ttl=64 time=0.344 ms (DUP!) 64 bytes from fe80::206:5bff:fec4:42e9: icmp_seq=1 ttl=64 time=0.355 ms (DUP!) 64 bytes from fe80::206:5bff:fec4:4458: icmp_seq=1 ttl=64 time=0.366 ms (DUP!) 64 bytes from fe80::206:5bff:fe96:e466: icmp_seq=1 ttl=64 time=0.379 ms (DUP!) 64 bytes from fe80::206:5bff:fe5e:9dfb: icmp_seq=1 ttl=64 time=0.388 ms (DUP!) 64 bytes from fe80::206:5bff:fec4:43f3: icmp_seq=1 ttl=64 time=0.399 ms (DUP!) 64 bytes from fe80::206:5bff:fec4:420b: icmp_seq=1 ttl=64 time=0.411 ms (DUP!) --- ff02::1 ping statistics --- 1 packets transmitted, 1 received, +16 duplicates, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.069/0.311/0.411/0.080 ms ---
Ceci nous indique que 17 machines ont répondu à notre demande, soit 17
ordinateurs en plus du notre sur le réseau local de la salle de TP (reliés via un réseau
Ethernet spécifique par lequel nous nous connectons sur le port eth1.
En revanche, nous ne trouvons ni routeur…
# ping6 -I eth1 ff02::2 PING ff02::2(ff02::2) from fe80::208:74ff:fe0c:1836 eth1: 56 data bytes --- ff02::2 ping statistics --- 4 packets transmitted, 0 received, 100% packet loss, time 3000ms
… ni matériel intelligent autre que des ordinateurs :
# ping6 -I eth1 ff02::3 PING ff02::3(ff02::3) from fe80::208:74ff:fe0c:1836 eth1: 56 data bytes --- ff02::3 ping statistics --- 2 packets transmitted, 0 received, 100% packet loss, time 1000ms
Cependant, si notre réseau était équipé de tels matériels, comme des machines
faisant office de routeur comme dans la section 4, alors nous les aurions détectés via
cette manipulation.

Julien HERR TP IPv6 Vivien BOISTUAUD Ingénieurs 2000 - IR3 – 2007-2008
31
9. Attribution d’une adresse globale
1. Informations sur les adresses globales unicast en IPv6
En IPv6, les adresses globales unicast commencent, en binaire, par la séquence 001
indiquant qu’il s’agit d’adresse globale d’unicast.
Les 48 bits de poids forts constituent le GRP (Global Routing Prefix), qui permet de
localiser le réseau pour faciliter le routage des paquets jusqu’à lui. Les 16bits
suivants sont un numéro de sous réseau au sein du réseau. Les 64 derniers bits sont
consacrés à l’adresse de machine sur le réseau.
En résumé, la constitution d’une adresse unicast globale répond au diagramme
suivant :
Aussi, toute adresse IPv6 commençant par les digits 2 ou 3 est une adresse unicast
globale. L’attribution des GRP et SID est faite par l’IANA, pour les adresses du réseau
internet.
Pour les adresses locales à un réseau d’entreprise, il est possible d’utiliser les
adresses commençant par 2001:0000:0000 (ou 2001:0:0 en notation simplifiée) qui
sont réservés à cet effet.
Ces conventions d’adressage permettent d’avoir :
• 35 184 372 088 832 préfixes de routage global (soit 35 184 milliards) ; l’IANA
peut donc allouer de nombreux réseaux grâce à cette multitude d’adresses.
• 65 536 sous réseaux par GRP ; Ceci permet aux administrateurs réseaux de
choisir un plan d’adressage représentant la topologie interne du réseau.
• 18 446 744 073 709 551 616 machines (ou interfaces) par sous réseau (soit
18 milliards de milliards) ; Ce nombre permet de connecter un nombre très
important de périphériques ensembles au sein du même réseau.
Figure 10 - Format d'une adresse globale unicast en IPv6

Julien HERR TP IPv6 Vivien BOISTUAUD Ingénieurs 2000 - IR3 – 2007-2008
32
De plus, la résolution de localisation sur le réseau est grandement simplifiée, dans la
mesure où les adresses contiennent une information de localisation dans l’adresse
même.
Il faut noter que pour la partie Interface ID, l’IEEE a défini une norme d’assignation
baptisée « EUI-64 ». Celle-ci a déjà été définie précédemment, dans la section 3.1.
2. Exemple de configuration manuelle d’une adresse IPv6 Globale Unicast
Afin d’observer le fonctionnement d’une interface à laquelle on affecte une adresse
Globale Unicast IPv6, nous avons décidé d’utiliser le réseau (GRP) 2001:0:0 et le sous
réseau (Subnet ID) 0001.
Comme identifiant d’interface, nous utiliseront la même convention que pour les
adresses de lien local (c'est-à-dire la convention UEI-64) : 208:74ff:fe0c:1836,
représentant l’adresse MAC de la carte de l’ordinateur Vivien.
Pour assigner une adresse IPv6 supplémentaire à une carte, on peut utiliser la
commande ip ou, au choix, ifconfig. Par exemple, pour assigner l’adresse
2001::1:208:74ff:fe0c:1836 à l’interface eth1 de la machine Vivien, nous
utilisons au choix la commande ip :
# ip -6 addr add 2001::1:208:74ff:fe0c:1836/64 dev eth1
Ou la commande ifconfig :
# ifconfig eth1 inet6 add 2001::1:208:74ff:fe0c:1836/64
Nous pouvons alors vérifier que l’adresse globale affectée manuellement a été prise
en compte par le système, comme le montre le code ci-après.

Julien HERR TP IPv6 Vivien BOISTUAUD Ingénieurs 2000 - IR3 – 2007-2008
33
# ifconfig … eth1 Lien encap:Ethernet HWaddr 00:08:74:0C:18:36 inet adr:172.17.4.5 Bcast:172.17.255.255 Masque:255.255.0.0 adr inet6: 2001::1:208:74ff:fe0c:1836/64 Scope:Global adr inet6: fe80::208:74ff:fe0c:1836/64 Scope:Lien UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:3024 errors:0 dropped:0 overruns:1 frame:0 TX packets:1455 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:1000 RX bytes:1681800 (1.6 MiB) TX bytes:232902 (227.4 KiB) Interruption:177 Adresse de base:0x800 …
On constate alors que l’adresse demandée a bien été assignée à notre interface
eth1 sur la machine Vivien, et que celle-ci a une portée (Scope) globale.
On notera que ceci n’empêche pas l’interface d’avoir une adresse de lien local. En
effet, en IPv6, chaque interface peut se voir attribuer plusieurs adresses locales et/ou
globales. Plus besoin, comme en IPv4, de créer des interfaces virtuelles ayant chacun
une adresse spécifique.
Depuis la machine Vivien, on peut envoyer une requête ICMPv6 ECHO vers l’adresse
globale de Vivien et ce, sans préciser l’interface par laquelle le message doit
transiter :
# ping6 -c3 2001::1:208:74ff:fe0c:1836 PING 2001::1:208:74ff:fe0c:1836(2001::1:208:74ff:fe0c:1836) 56 data bytes 64 bytes from 2001::1:208:74ff:fe0c:1836: icmp_seq=1 ttl=64 time=0.079 ms 64 bytes from 2001::1:208:74ff:fe0c:1836: icmp_seq=2 ttl=64 time=0.070 ms 64 bytes from 2001::1:208:74ff:fe0c:1836: icmp_seq=3 ttl=64 time=0.073 ms --- 2001::1:208:74ff:fe0c:1836 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2002ms rtt min/avg/max/mdev = 0.070/0.074/0.079/0.003 ms
En effet, il n’est plus nécessaire d’indiquer sur quelle interface nous souhaitons
envoyer la requête, car l’adresse est globale et le système utilise alors une table de
routage IPv6 ainsi qu’une table des voisins, comme nous le verrons dans la section
suivante.
Une fois que Julien s’est également attribué une adresse IPv6 Globale et que nous
avons ajouté un alias « julien-eth1-global » correspondant à cette adresse dans
le fichier /etc/hosts, nous pouvons aussi vérifier qu’il peut recevoir nos requêtes
ICMPv6 ECHO avec la commande ci-après.

Julien HERR TP IPv6 Vivien BOISTUAUD Ingénieurs 2000 - IR3 – 2007-2008
34
# ping6 -c3 julien-eth1-global PING julien-eth1-global(julien-eth1-global) 56 data bytes 64 bytes from julien-eth1-global: icmp_seq=1 ttl=64 time=1.48 ms 64 bytes from julien-eth1-global: icmp_seq=2 ttl=64 time=0.211 ms 64 bytes from julien-eth1-global: icmp_seq=3 ttl=64 time=0.224 ms --- julien-global ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2001ms rtt min/avg/max/mdev = 0.211/0.639/1.484/0.597 ms
Les adresses globales unicast des machines Vivien et Julien sont donc correctement
configurées. Nous allons maintenant pouvoir étudier le fonctionnement des
mécanismes de table de routage et de voisinage IPv6, permettant l’envoi de
messages vers des adresses globales.
10. La table de routage IPv6
Tout comme pour IPv4, les machines fonctionnant en IPv6 ont besoin d’une table de
routage afin de savoir où rediriger les paquets adressés à une machine en
particulier.
Pour observer le contenu de la table de routage IPv6 sur une machine, on peut
utiliser la commande ip -6 route show dev eth1 comme ci-après.
# ip -6 route show dev eth1 Kernel IPv6 routing table Destination Next Hop Flags Metric Ref Use Iface 2001:0:0:1::/64 :: U 256 0 0 eth1 fe80::/64 :: U 256 0 0 eth1 ff00::/8 :: U 256 0 0 eth1
Remarque : il n’est pas obligatoire de préciser dev ifacename, dans ce cas la table de
routage affichée sera la table IPv6 pour toutes les interfaces de la machine. On peut
également utiliser au choix, pour obtenir ce même résultat, route -6 ou route –A
inet6.
On remarque que la table de routage contient uniquement les informations sur les
adresses globales et les adresses standard de multicast (fe80 pour les adresses de
lien local par défaut, et ff00 pour l’envoi de messages multicast permettant la
détection de services sur le réseau, comme les routeurs ou les autres ordinateurs).
Remarque : pour ajouter manuellement une entrée dans la table IPv6 de la machine, par
exemple si aucun routeur n’a été trouvé mais qu’il existe un moyen d’atteindre un réseau

Julien HERR TP IPv6 Vivien BOISTUAUD Ingénieurs 2000 - IR3 – 2007-2008
35
via une passerelle connue manuellement, alors on peut utiliser la commande : ip -6
route add <réseauipv6>/<longueurdupréfixe> via <adresseipv6>
[dev <périphérique>]. Notez que cette façon de procéder est très proche de
celle utilisée en IPv4, mais utilise le switch -6 au lieu du switch (inclus par défaut) -4.
11. La table de voisinage et sa découverte
1. Pourquoi une table des voisins
Lorsqu’une machine veut envoyer des paquets IP à une autre, elle a besoin de
déterminer en premier l’adresse matérielle (adresse MAC) de la machine destination,
faute de quoi le paquet ne sera pas reçu par la machine distante.
En effet, chaque paquet émis sur un réseau Ethernet contient une information de
paquet Ethernet, puis des informations de paquet inhérentes au protocole utilisé.
Pour qu’un paquet IP soit interprété par une machine, il faut que le paquet Ethernet
soit adressé à la bonne adresse, afin que le paquet IP puisse ensuite être traité, et lui-
même vérifié.
Aussi, il est indispensable de pouvoir effectuer une résolution MAC<->IP, que le
protocole utilisé soit IPv4 ou IPv6. En IPv4, on avait alors inventé le protocole ARP
(Address Resolution Protocol), qui permettait, via un paquet émis en broadcast
Ethernet, de demander à une machine du réseau d’indiquer l’adresse matérielle à
laquelle devait être transmis un message adressé à une certaine adresse IP.
Dans ce cas, si le message devait être retransmis par un routeur, le routeur
répondant en donnant l’adresse MAC de son interface. SI la machine était
directement connectée par le réseau, celle-ci envoyait son adresse MAC.
Ce procédé, fastidieux, était très consommateur en bande passante et relativement
peu fiable : il était possible d’indiquer de fausses informations à la machine
émettrice du paquet. Ce procédé permettait alors de détourner les informations
reçues.
En IPv6, afin de remplacer le fonctionnement archaïque de ce procédé, a été inventé
un principe dit de « table des voisins » (neighbors table). La sous-section suivante
précise les modalités de fonctionnement de cette table, et la façon dont elle peut
être administrée manuellement.

Julien HERR TP IPv6 Vivien BOISTUAUD Ingénieurs 2000 - IR3 – 2007-2008
36
2. Visualiser la table des voisins
Pour visualiser la table des voisins, on utilise la commande suivante :
# ip -6 neigh show
On remarque que notre table des voisins ne contient actuellement pas d’entrée, ni
sur le PC de Julien, ni sur celui de Vivien. En revanche, si on ping Julien depuis la
machine Vivien avec la commande :
# ping6 –c 3 julien-eth1-global PING julien-eth1-global(julien-eth1-global) 56 data bytes 64 bytes from julien-eth1-global: icmp_seq=1 ttl=64 time=4.15 ms 64 bytes from julien-eth1-global: icmp_seq=2 ttl=64 time=0.217 ms 64 bytes from julien-eth1-global: icmp_seq=3 ttl=64 time=0.214 ms --- julien-eth1-global ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2007ms rtt min/avg/max/mdev = 0.214/1.529/4.156/1.857 ms
Si on observe rapidement la table des voisins après cette requête, on obtient le
résultat suivant :
# ip -6 neigh show 2001::1:208:74ff:fe0c:19e2 dev eth1 lladdr 00:08:74:0c:19:e2 nud stale
Cette entrée indique que pour joindre l’adresse IPv6
2001::1:208:74ff:fe0c:19e2, il faut utiliser l’interface eth1 et que l’adresse
locale au lien (lladdr, ou hardware address) est 00:08:74:0c:19:e2 (son adresse
mac). « stale » signifie que l’entrée n’est pas très récente, donc que les informations
peuvent être périmées.
De plus, en faisant une capture ethereal des informations échangées lors de ce
ping, on observe que deux paquets de voisinage (neighbor discovery et neighbor
advertisement) sont échangés, comme le montre les copies d’écran ci-après.

Julien HERR TP IPv6 Vivien BOISTUAUD Ingénieurs 2000 - IR3 – 2007-2008
37
Si on regarde, après moins de une minute, la table des voisins de nouveau :
# ip -6 neigh show
On observe qu’elle est de nouveau vide : les données ont expirées.
3. Modification manuelle des la table des voisins
Tout comme on peut ajouter et supprimer manuellement des entrées dans une
table ARP, il est possible de faire la même chose avec la table des voisins.
L’intérêt de l’ajout d’une entrée statique est la suivante : imaginons que l’on
souhaite réduire le trafic inutile sur le réseau et que la topologie réseau change
rarement, par exemple qu’un routeur soit présent en permanence sur le réseau.
Afin d’éviter que des paquets de neighbor discovery soient envoyés fréquemment
pour demander au routeur son adresse MAC, il est possible que l’on souhaite ajouter
une entrée persistante donnant ces informations.
Figure 12 - Neighbor sollicitation
Figure 11 - Neighbor Advertisement en réponse à la sollicitation

Julien HERR TP IPv6 Vivien BOISTUAUD Ingénieurs 2000 - IR3 – 2007-2008
38
En revanche, ce procédé peut présenter une limitation dans le cas de changement
de matériel : l’entrée ne sert alors plus ou, pire, contient des informations erronées
empêchant alors de communiquer avec le routeur.
Pour ajouter une entrée statique dans la table des voisins, il suffit d’utiliser la
commande :
# ip -6 neigh add fe80::208:74ff:fe0c:19e2 lladdr 00:08:74:0c:19:e2 dev eth1
Grâce à cette commande, nous avons ajouté une entrée statique pour pouvoir
contacter la machine de Julien depuis celle de Vivien. Cette entrée permet de ne
plus avoir à faire de neighbor discovery entre Vivien et Julien.
Cependant, si on commet une faute, par exemple en entrant une association
adresse IP/adresse MAC non valide :
# ip -6 neigh add 2001::1:208:74ff:fe0c:8080 lladdr 00:08:74:0c:19:e2 dev eth1 # ip -6 neigh show 2001::1:208:74ff:fe0c:8080 dev eth1 lladdr 00:08:74:0c:19:e2 nud permanent
L’entrée est, cette fois, marquée comme « permanent » car elle n’a pas de durée
d’expiration. Cependant, si on essaye d’envoyer un paquet vers l’adresse IPv6 ainsi
définie, on observe qu’aucune communication n’est possible. La capture ethereal
suivante nous l’indique d’ailleurs :
En effet, la carte réseau eth1 de la machine de Julien reçoit bien le paquet qui lui est
adressé au niveau Ethernet, mais qui ne lui est pas adressé au niveau IPv6 (couche
supérieure). Aussi, le paquet n’est pas accepté par la machine de Julien et toute
communication est rendue impossible.
Pour supprimer cette entrée non fonctionnelle, il nous suffit d’utiliser la commande
suivante :
# ip -6 neigh del 2001::1:208:74ff:fe0c:8080 lladdr 00:08:74:0c:19:e2 dev eth1
Figure 13 - ICMPv6 ECHO infructueux car bonne adresse MAC mais adresse IPv6 incorrecte

Julien HERR TP IPv6 Vivien BOISTUAUD Ingénieurs 2000 - IR3 – 2007-2008
39
4. Routage et configuration automatique en IPv6
Il existe trois types d’auto-configuration d’adresse avec IPv6 :
• L’auto-configuration sans état ou stateless : C’est le mécanisme de lien local
que nous avons décris dans une section précédente. L’adresse est générée à
l’activation de l’interface à partir de l’adresse MAC de l’interface ;
• L’auto-configuration avec DHCP6 : Ce type d’auto-configuration n’a pas été
étudié lors du tp IPv6 ;
• L’auto-configuration avec état ou statefull, où l’adresse est fournie par le
démon d’annonce de routeur : c’est ce type d’auto-configuration que nous
allons décrire ci-après.
L’auto-configuration avec état est possible grâce à un démon d’annonce de routeur
nommé radvd pour « Router Advertisement demon ». Il faut donc configurer ce
démon en spécifiant des informations qui seront transmises aux clients.
L’information indispensable est le préfixe de l’adresse. Après une configuration
convenable, le démon émet des annonces au travers des interfaces spécifiées, dans
l'espoir que les clients les reçoivent et auto-configurent comme par magie leurs
adresses avec le préfixe reçu et le routeur par défaut. Le démon doit tourner sur la
passerelle IPv6 par défaut.
Nous allons donc configurer la passerelle. Tout d’abord, il faut activer les options de
routage IPv6 avec les commandes suivantes :
# echo 1 >/proc/sys/net/ipv6/conf/all/forwarding # echo 1 > /proc/sys/net/ipv6/conf/eth0/accept_redirects
On attribue ensuite une nouvelle adresse à la passerelle avec la commande
suivante :
# ip -6 addr add 2001:1512:3201:2514:210:a7ff:fe1b:5dc2/64 dev eth0
On peut maintenant débuter la configuration de radvd. La première chose à faire
est d’installer le démon avec la commande habituelle :

Julien HERR TP IPv6 Vivien BOISTUAUD Ingénieurs 2000 - IR3 – 2007-2008
40
# apt-get install radvd
Il nous reste plus qu’à modifier le fichier de configuration qui se trouve à
l’emplacement /etc/radvd.conf. Il est à noter que le fichier n’existe pas à
l’installation du démon et qu’il faut donc le créer lors de la première configuration.
interface eth0 { AdvSendAdvert on; prefix 2001:1512:3201:2514::/64 { AdvOnLink on; AdvAutonomous on; AdvRouterAddr on; }; };
• AdvSendAdvert on : Active l’émission des annonces ;
• prefix 2001:1512:3201:2514::/64 : Indique que le préfixe de l’adresse
est 2001:1512:3201:2514::/64 ;
• AdvOnLink on : Active dans l’annonce le bit précisant que le routeur se
trouve sur le même lien local;
• AdvAutonomous on : Active dans l’annonce le bit précisant que le routeur
est un système autonome;
• AdvRouterAddr on : Indique que l’annonce doit contenir l’adresse du
routeur au lieu de l’adresse de réseau. Ceci est utile pour les réseaux équipés
de plusieurs routeurs, mais est surtout indispensable pour les réseaux IPv6
Mobiles, où l’adresse de réseau est toujours la même mais où le routeur à
utiliser peut changer fréquemment.
La configuration terminée, il faut redémarrer le démon pour prendre en compte les
modifications :
# /etc/init.d/radvd restart
La passerelle est maintenant prête, il faut maintenant configurer les clients pour
qu’ils puissent se configurer via les annonces envoyés par le démon de la passerelle.
Il faut d’abord activer l’auto-configuration ainsi que la découverte automatique de la
route par défaut :

Julien HERR TP IPv6 Vivien BOISTUAUD Ingénieurs 2000 - IR3 – 2007-2008
41
# echo 1 > /proc/sys/net/ipv6/conf/eth0/autoconf # echo 1 > /proc/sys/net/ipv6/conf/eth0/accept_ra # echo 1 > /proc/sys/net/ipv6/conf/eth0/accept_redirects
Pour finir, on récupère les nouveaux paramètres via la commande :
# dhclient eth0
Nous avons capturé les paquets transmis lors de l’exécution de la commande ci-
avant afin de comprendre les mécanismes.
Figure 14 - Exemple de Neighbor solicitation
On note que deux types de paquets sont envoyés :
• Router solicitation ou sollicitation du routeur : ce message est émis
par un équipement au démarrage ou lors d'un renouvellement d'adresse
avec dhclient pour recevoir plus rapidement des informations du routeur.
Ce message est émis vers l'adresse IPv6 de multicast réservée aux routeurs
du même lien ff02::2. Il est émis par l'adresse lien-local de l'équipement ;
• Router advertisement ou annonce du routeur : ce message est émis
périodiquement par les routeurs ou en réponse à un message de
sollicitation du routeur. L'adresse source est celle du poste sur lequel le

Julien HERR TP IPv6 Vivien BOISTUAUD Ingénieurs 2000 - IR3 – 2007-2008
42
démon radvd a été configuré : pour notre exemple, le routeur d'annonce
2001::1:208:74ff:fe0c:19E2.
Figure 15 - Exemple de Router advertisement
L'adresse de destination est l’adresse de l’émetteur lorsqu’un client requête
directement le serveur comme sur la Figure 16 ou comme sur l’exemple de la Figure
17, ff02::1 ce qui correspond à l'adresse multicast de sollicitation de lien-local.
Voici la configuration obtenue par le poste client après l'exécution de la commande
dhclient :
# ifconfig [...] eth1 Lien encap:Ethernet HWaddr 00:08:74:0C:18:36 inet adr:172.17.4.5 Bcast:172.17.255.255 Masque:255.255.0.0 adr inet6: 2001:470:1f01:1908:208:74ff:fe0c:1836/64 Scope:Global >> adr inet6: 2001:1512:3201:2514:208:74ff:fe0c:1836/64 Scope:Global adr inet6: fe80::208:74ff:fe0c:1836/64 Scope:Lien UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:3024 errors:0 dropped:0 overruns:1 frame:0 TX packets:1455 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:1000 RX bytes:1681800 (1.6 MiB) TX bytes:232902 (227.4 KiB) Interruption:177 Adresse de base:0x800 [...]
Vous pouvez constater que ce poste a désormais une adresse IPv6 de plus car c'est
le routeur d'annonce qui lui a envoyé le préfixe de son adresse globale. Cette

Julien HERR TP IPv6 Vivien BOISTUAUD Ingénieurs 2000 - IR3 – 2007-2008
43
nouvelle adresse est composée du préfixe envoyé par le démon ainsi que du suffixe
calculé à partir de l’adresse MAC de l’interface :
2001:1512:3201:2514:208:74ff:fe0c:1836/64.
Ce concept d'auto-configuration peut donc permettre de paramétrer tout un réseau
en ne configurant que le routeur d'annonce, les postes clients obtenant
automatiquement leur propre configuration.
Nous avons ensuite relié ensemble les machines Vivien et Florence, pour pouvoir
communiquer entre Julien et Aurélia via la backbone et le routage des deux
machines.
Cette opération n’a cependant pu être vérifiée. Pour la mettre en œuvre, il nous a
suffit de configurer les interfaces eth0 de Vivien et Florence manuellement, de sorte
qu’ils soient sur le même réseau et puissent communiquer entre eux. En revanche,
aucune configuration de Julien ni Aurélia n’a été nécessaire, dans la mesure où ils
utilisent respectivement Vivien et Florence comme route par défaut pour les
adresses non connues.

Julien HERR TP IPv6 Vivien BOISTUAUD Ingénieurs 2000 - IR3 – 2007-2008
44
5. Aller plus loin : utilisation d’IPSec
Les travaux concernant IPv6 ont débouché, comme le précise la première section de
ce document, sur la création de nombreuses normes visant à sécuriser les
communications au niveau IP. Ceci permet, à terme, de garantir une sécurisation
uniforme de l’ensemble des protocoles réseaux.
Ainsi, la spécification IPSec permet de sécuriser des messages IPv6 en les chiffrant
avant émission et en assurant leur déchiffrement lors de la réception. Ce procédé
automatique permet de garantir une sécurité dépendant de la couche réseau IP et
non de la couche applicative.
Ainsi, on peut sécuriser de vieilles applications comme Telnet ou encore FTP, qui
n’ont pas été prévus pour être sécurisés en standard et où les seuls possibilités de
sécurisation se trouve au niveau des couches logicielles.
Sous Linux, mettre en place une stratégie de sécurité IPSec est relativement simple.
Cette section va montrer comment configurer les deux machines assurant la
sécurité des communications et la force de la technologie IPSec.
Remarque : suite à de nombreux travaux de portabilité, la spécification IPSec a
également été portée en IPv4. Cependant, il s’agit d’une surcouche de la norme initiale,
qui a été ajoutée pour utiliser IPSec sans passer à IPv6.
Cet exercice n’a pu être achevé faute de temps nécessaire à la mise en place du processus
de tests.

Julien HERR TP IPv6 Vivien BOISTUAUD Ingénieurs 2000 - IR3 – 2007-2008
45
Conclusion
Cette séance de travaux pratiques nous a permis de prendre un premier contact
avec le protocole IPv6 et ses spécificités par rapport à IPv4. Elle nous a permis, en
outre, de connaître la technologie et de configurer simplement un réseau avec
routage matériel par machine.
Cependant, ceci ne suffit pas en soit à être un expert IPv6, mais permet de pouvoir
aborder plus facilement cette technologie en entreprise, ou en prévision de la
migration technologique d’internet à ce protocole.
Il est cependant dommage que peu de temps ai pu être alloué à la rédaction de ce
rapport en comparaison avec les autres groupes de travail, dans la mesure où une
semaine et demie a été allouée à sa rédaction, contre 5 semaines pour certains
groupes.

Julien HERR TP IPv6 Vivien BOISTUAUD Ingénieurs 2000 - IR3 – 2007-2008
46
Références bibliographiques
IPv6, O’Reilly, site web accompagnant l’ouvrage : http://livre.point6.net