Julien VAUBOURG
B julien@vaubourg.com
Stagiaire 2A (TELECOM Nancy)
Lothaire Yarding
Yet Another Reference for Delivering IPv6 to the Next Generation
Le 17 septembre 2012


link to page 9 link to page 11 link to page 11 link to page 13 link to page 14 link to page 14 link to page 15 link to page 16 link to page 16 link to page 17 link to page 17 link to page 17 link to page 21 link to page 21 link to page 22 link to page 22 link to page 23 link to page 23 link to page 23 Table des matières
Préambule
1
1
Pourquoi l’IPv6
3
1.1
Épuisement des adresses IPv4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
1.2
Accès directs sans réécriture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
1.3
Conflits et collisions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
1.4
Les solutions et nouveautés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
1.5
Des paquets plus cohérents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
1.6
État du déploiement de l’IPv6 en France . . . . . . . . . . . . . . . . . . . . . . . . .
8
1.6.1
FAI publics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
1.6.2
Réseaux de recherche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
1.6.3
Sites web populaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
1.6.4
IPv6 day . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
2
Adressage
13
2.1
Conventions d’écriture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
2.2
Adresses unicast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
2.2.1
Généralités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
2.2.2
Link-local Unicast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
2.2.3
Unique Local Unicast
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
2.2.4
Global Unicast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15

link to page 24 link to page 24 link to page 24 link to page 25 link to page 26 link to page 27 link to page 29 link to page 29 link to page 30 link to page 30 link to page 31 link to page 32 link to page 33 link to page 35 link to page 35 link to page 35 link to page 35 link to page 36 link to page 36 link to page 37 link to page 37 link to page 38 link to page 38 link to page 41 link to page 41 link to page 41 link to page 43 link to page 44 Yarding
TABLE DES MATIÈRES
Équipe réseau Lothaire
2.3
Adresses multicast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
2.3.1
Généralités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
2.3.2
Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
2.3.3
Adresses utiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
2.3.4
Trame ethernet
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
2.3.5
Abonnements systématiques . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
2.4
Adresses de broadcast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
2.5
Adresses anycast / réseaux
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
2.6
Adresses de boucles locales
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
2.7
Déterminer rapidement le type d’une adresse . . . . . . . . . . . . . . . . . . . . . . .
22
2.8
Sélectionner l’IP de sortie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
2.9
Bonnes pratiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
2.10 Jouer avec IPv6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
25
3
Compatibilité des systèmes
27
3.1
GNU/Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27
3.1.1
Noyau Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27
3.1.2
Debian / Ubuntu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27
3.1.3
Fedora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
28
3.2
Mac OS X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
28
3.3
Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
29
3.3.1
Windows XP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
29
3.3.2
Windows Vista / 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
30
3.4
Cisco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
30
4
Autoconfiguration et DNS
33
4.1
NDP et la récupération des adresses MAC sans ARP . . . . . . . . . . . . . . . . . . .
33
4.1.1
Généralités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
33
4.1.2
Avec échanges de routes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
35
4.1.3
Sans échange de routes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
36
ii
Julien VAUBOURG

link to page 44 link to page 45 link to page 45 link to page 46 link to page 47 link to page 48 link to page 48 link to page 49 link to page 50 link to page 51 link to page 51 link to page 51 link to page 52 link to page 54 link to page 54 link to page 55 link to page 55 link to page 56 link to page 56 link to page 57 link to page 58 link to page 61 link to page 61 link to page 62 link to page 62 link to page 62 link to page 63 link to page 66 Yarding
TABLE DES MATIÈRES
Équipe réseau Lothaire
4.1.4
Sans échange de routes avec proxies NDP
. . . . . . . . . . . . . . . . . . . .
36
4.2
Autoconfiguration stateless (SLAAC) . . . . . . . . . . . . . . . . . . . . . . . . . . .
37
4.2.1
Généralités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
37
4.2.2
Construction automatique des adresses IP
. . . . . . . . . . . . . . . . . . . .
38
4.2.3
Duplicate Address Detection (DAD) . . . . . . . . . . . . . . . . . . . . . . . .
39
4.2.4
Durées de vie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
4.2.5
Problème de vie privée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
4.2.6
Inconvénients . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
41
4.2.7
Désactiver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
42
4.3
Autoconfiguration stateful (DHCPv6) . . . . . . . . . . . . . . . . . . . . . . . . . . .
43
4.3.1
Généralités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
43
4.3.2
Protocole . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
43
4.3.3
Compatibilité des clients . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
44
4.3.4
Configuration des serveurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
46
4.3.5
Adresses statiques (DUID) . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
46
4.4
Résolutions DNS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
47
4.4.1
Généralités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
47
4.4.2
DHCPv6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
48
4.4.3
RDNSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
48
4.4.4
mDNS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
49
4.4.5
Résolutions inverses des adresses autoconfigurées (DDNS) . . . . . . . . . . . .
50
5
IPv6 dans un monde IPv4
53
5.1
Cohabitation (double pile) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
53
5.2
Faire de l’IPv6 sur un réseau IPv4 (protocole 41) . . . . . . . . . . . . . . . . . . . . .
54
5.2.1
Encapsulation IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
54
5.2.2
Tunnels statiques
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
54
5.2.3
Tunnels 6to4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
55
5.2.4
Tunnels 6rd
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
58
iii
Julien VAUBOURG

link to page 69 link to page 71 link to page 71 link to page 74 link to page 75 link to page 75 link to page 76 link to page 76 link to page 76 link to page 76 link to page 79 link to page 80 link to page 83 link to page 83 link to page 83 link to page 84 link to page 84 link to page 85 link to page 85 link to page 89 link to page 89 link to page 90 link to page 92 link to page 92 link to page 93 link to page 95 link to page 95 Yarding
TABLE DES MATIÈRES
Équipe réseau Lothaire
5.2.5
Tunnels ISATAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
61
5.3
Autres solutions pour faire de l’IPv6 sur un réseau IPv4
. . . . . . . . . . . . . . . . .
63
5.3.1
Encapsulation UDP pour mieux passer les NAT (Teredo) . . . . . . . . . . . . .
63
5.3.2
Tunnels brokers
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
66
5.3.3
Sans encapsulation avec le NAT64/DNS64 . . . . . . . . . . . . . . . . . . . .
67
5.3.4
Serveurs mandataires (proxies)
. . . . . . . . . . . . . . . . . . . . . . . . . .
67
5.4
Faire de l’IPv4 sur un réseau IPv6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
68
5.4.1
Généralités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
68
5.4.2
NAT-PT et NATPT-PT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
68
5.4.3
NAT64 / DNS64 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
68
5.5
Récapitulatif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
71
5.6
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
72
6
Routage
75
6.1
Généralités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
75
6.2
Statique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
75
6.3
Dynamique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
76
6.3.1
Correction dynamique des chemins
. . . . . . . . . . . . . . . . . . . . . . . .
76
6.3.2
Protocoles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
77
6.4
Préfixe spécial DDoS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
77
7
Mobilité
81
7.1
Généralités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
81
7.2
Sans optimisation du chemin (tunnel bidirectionnel)
. . . . . . . . . . . . . . . . . . .
82
7.3
Avec optimisation des chemins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
7.4
Autres solutions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
7.5
Compatibilité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
85
8
Expérimentations
87
8.1
Généralités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
87
iv
Julien VAUBOURG

link to page 97 link to page 99 link to page 101 link to page 104 link to page 106 link to page 106 link to page 112 link to page 117 link to page 124 link to page 131 link to page 131 link to page 131 link to page 132 link to page 132 link to page 135 link to page 137 link to page 141 link to page 143 Yarding
TABLE DES MATIÈRES
Équipe réseau Lothaire
8.2
Autoconfiguration stateless (avec DNS) via un routeur GNU/Linux . . . . . . . . . . .
89
8.3
Tunnel statique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
91
8.4
Tunnel 6to4 avec un relais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
93
8.5
Tunnel 6rd avec relais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
96
8.6
Translations d’adresses avec un NAT64/DNS64 . . . . . . . . . . . . . . . . . . . . . .
98
8.6.1
Stateless . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
98
8.6.2
Stateful
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
8.7
Mobilité IPv6, DHCPv6 statique et relais DHCPv6 . . . . . . . . . . . . . . . . . . . . 109
8.8
Ajout dynamique d’adresse dans le DNS (DDNS) et pool DHCPv6
. . . . . . . . . . . 116
Conclusion
123
8.9
Est-il possible de migrer son réseau interne en IPv6 uniquement, tout en continuant à
bénéficier des services restés en IPv4 ? 
. . . . . . . . . . . . . . . . . . . . . . . . . . . 123
8.10 Est-il possible de se passer totalement de l’IPv4 ? . . . . . . . . . . . . . . . . . . . . . 124
8.11 Bilan des recherches et expérimentations . . . . . . . . . . . . . . . . . . . . . . . . . 124
A Exemple de politique de sécurité
127
B Références
129
C Table des RFC
133
D Figures et tableaux
135
v
Julien VAUBOURG

Yarding
TABLE DES MATIÈRES
Équipe réseau Lothaire
vi
Julien VAUBOURG

link to page 9 link to page 95 link to page 95 link to page 76 link to page 76 link to page 131 Préambule
« Trainee. New recruit. It was either that or hairdressing. » - Tenth Doctor
Ce document a été réalisé dans le cadre d’un stage ingénieur TELECOM Nancy de seconde année,
sur une durée de trois mois.
Vous y trouverez un état de l’art probablement non-exhaustif mais suffisamment complet pour avoir
une bonne vue d’ensemble de ce qui est possible actuellement en IPv6. À partir de celui-ci, cette docu-
mentation tentera entre autres de répondre aux questions :
– Est-il possible de migrer son réseau interne en IPv6 uniquement, tout en continuant à bénéficier
des services restés en IPv4 ?
– Est-il possible de se passer totalement de l’IPv4 ?
Le chapitre (expérimentations) page 87 permet de retrouver un lot de tests réalisés en laboratoire
clos, qui peuvent être facilement reproduits, et qui ont pour objectif de dépasser la théorie en allant
vérifier ce qui est exploitable ou non.
Ce contenu s’adresse à la fois aux personnes qui n’ont aucune connaissance en IPv6 et à ceux qui
en ont déjà une bonne maîtrise, mais qui n’ont pas une idée claire de ce qui est réellement utilisable
actuellement.
Des notions de réseaux sont un prérequis essentiel : bien que certains aspects soient rappelés, ce
document n’a pas pour objectif d’aborder des notions qui existent déjà en IPv4 et qui sont simplement
retranscrites en IPv6. Il s’intéresse particulièrement aux expériences utilisateurs, et à la migration des
parcs finaux, sans s’attarder précisément sur des notions comme le routage dynamique. Le réseau Lothaire
pour lequel ce document a été conçu propose d’ores et déjà un routage et des plages d’adresses IPv6 à
ses correspondants, mais constate un manque de motivation pour exploiter cette possibilité.
Pour ceux qui ne souhaitent pas perdre de temps et qui veulent directement savoir s’il est possible dès
2012 de passer tout un réseau en IPv6 en désactivant totalement la couche IPv4, se reporter à
la section dédiée au NAT64/DNS64 (section 5.4.3 page 68) et à la conclusion (page 123).
1. http://en.wikiquote.org/wiki/Tenth_Doctor

link to page 151 Yarding
TABLE DES MATIÈRES
Équipe réseau Lothaire
2 / 143
Julien VAUBOURG

link to page 11 link to page 11 link to page 11 1
Pourquoi l’IPv6
« 640K ought to be enough for anybody. » - Bill Gates (1981)
1.1
Épuisement des adresses IPv4
Jusqu’à 1985, les numéros de téléphones français comportaient sept chiffres. Cette numérotation
permettait théoriquement à 10 millions de personnes de communiquer ensemble, pour plus de 65 millions 2
de français recensés actuellement. C’est parce que les opérateurs n’ont pas vu arriver le succès de la
téléphonie personnelle qu’ils ont dû passer à huit chiffres en 1985 puis à dix en 1996, pour pouvoir
accueillir plus de monde.
De la même façon qu’un numéro de téléphone doit être propre à chaque abonné, une adresse IP
ne peut pas être dupliquée sur le réseau Internet. Dès 1981, l’IPv4 (RFC 791) sur 32 bits que nous
utilisons encore aujourd’hui apparaît, permettant théoriquement à plus de 4 milliards de machines de
communiquer entre elles, pour 7 milliards d’humains.
Le réseau Internet se limitant à l’époque aux grandes universités et aux armées, le nombre de possi-
bilités parait astronomique. Ainsi la même année, l’IANA (Internet Assigned Numbers Authority ) qui est
en charge de la distribution de ces adresses dans le monde entier, décide de les répartir par classes (RFC
791) en utilisant leurs quatre premiers bits comme discriminant. À titre d’exemple, attribuer une classe
A à une seule université ou entreprise revenait à lui mettre à disposition plus de 16 millions d’adresses,
qui devenaient de ce fait indisponibles pour le reste du monde, qu’elles soient utilisées ou non.
C’est à cause de ce découpage grossier que le réseau Internet connut dès 1993 une première mesure
pour enrailler l’épuisement des adresses disponibles. La notation CIDR (Classless Inter-Domain Routing )
1. http://www.wired.com/politics/law/news/1997/01/1484
2. Recensement du mois de janvier 2012.
3. Chiffre du 31 octobre 2011, selon les Nations Unies.

link to page 12 link to page 151 Yarding
CHAPITRE 1. POURQUOI L’IPV6
Équipe réseau Lothaire
et les notions de préfixes réseaux avec le slash, que nous manipulons toujours aujourd’hui, sont les
solutions qui ont été proposées par l’IETF (Internet Engineering Task Force) pour résoudre ce problème
(RFC 1338). En ayant la possibilité de proposer des blocs d’adresses à taille variable, l’IANA peut dès
lors commencer à économiser les adresses IPv4 en n’attribuant que le nombre nécessaire d’adresses aux
demandeurs.
L’année 1993 est marquée par un autre événement : l’apparition du premier navigateur web graphique.
Les portes d’Internet s’ouvrent alors au grand public, qui l’investira avec plus d’engouement que quiconque
n’aurait pu le prévoir. Il faut dès lors trouver une nouvelle solution pour prévoir un épuisement qui
recommence à inquiéter.
Ainsi, en février 1996, la RFC 1918 instaure le concept de NAT (Network Address Translation) et
d’adresses privées. Ces dernières ne sont plus uniques et ne sont, par conséquent, plus routables sur le
réseau Internet. Derrière une seule IP publique, des milliers de machines en adressage privé : l’économie
d’adresses est faramineuse. Mais dès les années 90, personne n’est dupe, c’est une renumérotation à
l’échelle mondiale qui sera nécessaire pour accueillir tous les besoins futurs, à l’instar de ce qui s’est fait
dans la téléphonie.
À la fin de l’année 1998, l’IETF propose les premières spécifications finalisées de l’IPv6 (la version 5
étant expérimentale), en proposant des adresses quatre fois plus longues. Non seulement ce système de
numérotation permet d’adresser plus de machines par mètre carré qu’il n’est physiquement possible d’en
placer, mais il apporte un lot étonnant de nouveautés en terme de configuration et de sécurité, que nous
aborderons dans ce document.
Si les renumérotations dans la téléphonie française n’ont jamais posé de problème, c’est principalement
parce que le nombre d’acteurs commerciaux concernés par ce changement est particulièrement réduit.
Changer de numérotation IP impose de mettre d’accord des centaines de milliers d’entreprises, qui devront
toutes faire les efforts nécessaires pour adapter les logiciels et les équipements, engageant ainsi des flux
financiers importants qui n’auront pourtant aucun impact direct sur leurs ventes. S’engager pour le futur
d’un intérêt commun, à l’heure où la bourse se négocie à la seconde pour des intérêts privés, relève
encore du courage de quelques grosses entreprises. Stéphane Bortzmeyer propose une autre approche de
la situation : « Déployer IPv6 coûte à celui qui le déploie, ne pas le déployer coûte équitablement à tout
le monde. Dans un régime capitaliste, le choix est vite fait. 
» 4.
Le blogger réputé pousse l’analyse plus loin : « Pourtant, ce n’est pas une simple question d’argent. La
non-migration vers IPv6 coûte très cher, notamment en temps passé à faire fonctionner les applications
malgré le NAT, en complexité due à l’existence de deux domaines d’adressage, le privé et le public,
en temps passé à remplir des papiers pour la bureaucratie des RIR, qui limite ainsi la consommation
d’adresses IPv4, en lignes de code dans les applications SIP ou pair-à-pair pour arriver à contourner
l’absence d’adresses globalement uniques. Le coût global de ces mesures est sans doute bien supérieur à
celui d’une migration vers IPv6. 
».
Le RIR (Regional Internet Registry ) de l’Asie-Pacifique a déjà attribué son dernier bloc IPv4, et
la pénurie mondiale est de plus en plus pesante avec l’émergence de nouveaux supports comme les
ordiphones. La solution d’un NAT à l’échelle d’un opérateur comme elle est pratiquée dans ce secteur
est d’autant plus inquiétante qu’elle nuit gravement à la neutralité du Net, en interdisant à quiconque
d’être accessible depuis l’extérieur.
4. http://www.bortzmeyer.org/ipv6-et-l-echec-du-marche.html
4 / 143
Julien VAUBOURG

link to page 13 link to page 13 link to page 151 Yarding
CHAPITRE 1. POURQUOI L’IPV6
Équipe réseau Lothaire
De la même façon que nous n’avons pas eu le choix de changer de numéro de téléphone, l’adoption
massive de l’IPv6 est inévitable et doit concerner chaque acteur de l’informatique à quel niveau qu’il soit,
pour réussir tous ensemble à construire un Internet plus sain et plus performant.
5
Ajoutons enfin que certains s’amusent à rappeler qu’il reste encore des millions d’IPv4 inutilisées dans
le monde, et qu’il ne s’agit que d’un prétexte pour faire monter leurs prix et faire renouveler du matériel.
Il y a effectivement beaucoup d’institutions qui conservent encore des plages énormes d’adresses IPv4,
mais si elles ne sont pas utilisées, elles ne sont pas pour autant redistribuables. D’une façon générale, la
pénurie accroit toujours les inégalités, ce qui permet aux USA de ne pas encore voir la fin de l’IPv4 alors
que l’Asie en est proche ou que de petits FAI n’arrivent plus à se faire attribuer de blocs PI (Provider
Independent
).
La section suivante rappelle que le passage à l’IPv6 ne concerne pas seulement la pénurie d’IP, mais
promet aussi à terme un réseau plus rapide, plus performant et moins coûteux.
1.2
Accès directs sans réécriture
Il existe un certain nombre de problèmes engendrés par les réécritures des NAT :
Difficultés pour la voix sur IP : les accès aux téléphones IP se font au prix d’acrobaties avec le NAT,
qui empêche d’une façon générale le vrai pair-à-pair.
Difficultés pour la visioconférence : aux problèmes similaires sus-évoqués, nous pouvons rajouter
l’engorgement des routeurs qui doivent traduire des milliards de paquets, ainsi que les problèmes
récurrents de négociation de ports bilatéraux.
Difficultés d’accès aux serveurs internes : bien que cet aspect ait tendance à être utilisé pour ren-
forcer la sécurité, il est très souvent contraignant (citons l’exemple de multiples serveurs HTTP
derrière une seule adresse IP publique, qui nécessitent un reverse-proxy coûteux en performances
ou la mise en place de VPN à administrer).
Chiffrement quasiment impossible : si une communication devait être chiffrée de bout en bout avec
un NAT, il faudrait alors que l’équipement intermédiaire soit capable de le déchiffrer pour récupérer
les informations des entêtes.
5. http://xkcd.com/865
6. Voir à ce sujet les conditions du RIPE concernant leur dernier /8 qui sera découpé en PA (Provider Aggregable)
et qui condamnera donc très bientôt les nouveaux petits FAI à être dépendants des LIR (Local Internet Registry ) :
http://www.ripe.net/ripe/docs/ripe-553#-----use-of-last-8-for-pa-allocations
5 / 143
Julien VAUBOURG

link to page 151 Yarding
CHAPITRE 1. POURQUOI L’IPV6
Équipe réseau Lothaire
Gestion des journaux systèmes : utiliser une adresse publique unique pour un parc entier de ma-
chines nécessite d’être capable en permanence d’associer une date et une heure à une machine de
l’adressage privé, afin d’être à même de répondre aux requêtes judiciaires.
1.3
Conflits et collisions
Utiliser des adresses privées signifie utiliser une numérotation qui n’est pas unique. Cette pratique
pose un certain nombre de problèmes :
Mise en place d’un VPN entre sites : si par malheur les deux sociétés qui souhaitent s’offrir des
accès VPN utilisent le même préfixe de réseau privé pour adresser leurs machines, l’une des deux
devra renuméroter son parc ou utiliser une technique de traduction d’adresses bidirectionnelle
extrêmement lourde.
Fusion de deux sites : le même problème que précédemment se pose, et la seule solution pour ne
pas renuméroter toutes ses machines (ce qui est souvent de l’ordre de l’inenvisageable) consiste à
utiliser un double NAT, qui deviendra rapidement une plaie au quotidien.
Broadcasts intempestifs : les paquets diffusés à l’ensemble du réseau sont devenus monnaie courante
en IPv4, ce qui entraîne des surcharges du réseau, des collisions plus fréquentes, et des boucles sur
les réseaux complexes.
1.4
Les solutions et nouveautés
Toutes ces problématiques n’ont pas lieu d’être avec le modèle initial du réseau Internet, qui consiste
à adresser toutes les machines au même rang, en leur donnant toutes la possibilité d’être un nœud
supplémentaire sur le réseau mondial. Alors que la pénurie des adresses IPv4 nous a forcé à adapter notre
façon de concevoir Internet, à un tel point que les nouvelles générations d’informaticiens ne connaissent
plus que celle-ci, l’IPv6 nous permettra de revenir à ces fondamentaux d’hier qui sont une solution efficace
aux problèmes d’aujourd’hui et de demain.
Notons dès à présent que le NAT est à différencier de la notion de pare-feu : s’abstraire de la
notion d’adresses privées ne signifie en aucun cas permettre systématiquement des accès non-contrôlés
aux machines d’un réseau depuis l’extérieur.
Outre l’abolition des NAT et le nombre quasi-illimité d’adresses, l’IPv6 offre d’autres solutions qui en
découlent parfois :
Plusieurs adresses par interface : c’était déjà possible en IPv4, mais ça se généralise avec l’IPv6,
permettant ainsi de faciliter les migrations, d’accroître la sécurité et de faciliter l’hébergement de
multiples services.
Adresses de lien local uniques : grâce à des mécanismes qui seront détaillés plus tard dans ce docu-
ment, toutes les adresses d’un réseau qui n’a pas pour vocation de se relier à Internet se génèrent
entièrement d’elles-mêmes, de façon assurément uniques (équivalent du zéroconf généralisé).
Suppression du broadcast : il est en réalité remplacé par une adresse multicast à laquelle on est libre
d’être inscrit ou non, et par une collection d’autres adresses multicasts utilisées en priorité pour
6 / 143
Julien VAUBOURG

link to page 15 link to page 15 link to page 151 Yarding
CHAPITRE 1. POURQUOI L’IPV6
Équipe réseau Lothaire
certains usages courants.
Présence de IPsec systématique : la fonctionnalité n’est pas la nouveauté, mais plutôt l’assurance
qu’elle sera supportée par tout matériel ou logiciel supportant l’IPv6.
Entêtes IP simplifiés : non seulement le champ checksum a disparu (il délègue le travail de vérification
aux couches supérieures) et n’a plus besoin d’être recalculé systématiquement par les routeurs, mais
les entêtes ont été réduites, allégeant ainsi d’autant la charge des réseaux. Une autre conséquence
de cette délégation du calcul du checksum est qu’il sera calculé au niveau de TCP pour l’ensemble
du paquet plutôt que pour l’entête seul. Il devient également obligatoire pour UDP.
Mobilité et renumérotation : les mécanismes mis en place par l’IPv6 permettent facilement de dis-
tinguer les préfixes réseau des identifiants d’interface.
Multicast valorisé : des groupes multicast génériques permettent de contacter des machines par type,
en envoyant par exemple une requête de découverte du DHCP à tous les routeurs en multicast,
plutôt qu’à l’ensemble des machines du réseau en broadcast.
Autoconfiguration stateless l’IPv6 permet à une machine de s’insérer dans un réseau sans aucune
configuration manuelle et sans DHCP à gérer.
1.5
Des paquets plus cohérents
Alors que la structure des paquets IPv4 a été conçue à une époque où personne n’imaginait l’ampleur
qu’allait prendre le modèle TCP/IP, la norme IPv6 est une occasion de corriger les erreurs qui ont été
commises. La figure 1.1 donne un aperçu du nouveau format des paquets.
Version
Type de trafic (8
Label du flux (20 bits)
(4b)
bits)
Taille des données (16 bits)
Prochain entête (8b)
Hop limit (8 bits)
Adresse source (128 bits)
Adresse de destination (128 bits)
Figure 1.1 – Paquet IPv6.
Les différences importantes sont :
– Disparition du champ IP Header Length (la taille des entêtes est fixe).
– Le TTL (Time To Live) est renommé en Hop Limit puisque c’était déjà son usage en IPv4. 7
– Aucun champ checksum, qui nécessitait un nouveau calcul à chaque routage en IPv4 à cause du
TTL qui était inclus dedans (la tâche est déléguée à la couche transport).
– La taille des données n’inclut pas la taille des entêtes.
7. La RFC 791 indiquait initialement pour le TTL : « This field indicates the maximum the datagram is allowed to
remain in the internet system. [...] The time measured in units of seconds. ».
7 / 143
Julien VAUBOURG

link to page 16 link to page 16 link to page 16 link to page 16 link to page 16 link to page 16 link to page 16 link to page 151 Yarding
CHAPITRE 1. POURQUOI L’IPV6
Équipe réseau Lothaire
– Des entêtes optionnels peuvent être ajoutés à la suite de l’entête, notamment pour le numéro de
fragmentation.
Un algorithme de découverte du MTU de bout en bout (Path MTU Discovery, RFC 1191) est destiné
à être déployé massivement, pour éviter toute fragmentation, celle-ci réduisant considérablement le débit
(si un seul paquet est perdu, tout doit être retransmis). En cas de fragmentation, celle-ci n’est plus du
ressort des routeurs intermédiaires, qui doivent se contenter de retourner un message ICMPv6 Packet Too
Big
. L’émetteur aura alors pour charge de reproposer le paquet qu’il aura lui-même découpé, permettant
ainsi aux routeurs intermédiaires de nécessiter moins de puissance.
La MTU minimale est de 1280 octets (contre 68 en IPv4) et la taille maximale d’un paquet est de
65535 octets, comme en IPv4 (avec l’option jumbogram de la RFC 2675, qui permet de l’augmenter
jusqu’à 4 Go).
1.6
État du déploiement de l’IPv6 en France
1.6.1
FAI publics
L’opérateur Nerim semble être le premier à avoir proposé de l’IPv6, en proposant des /48 natifs
systématiques à ses abonnés dès 2003 8. Pour résoudre les cas de figure où l’accès natif est impossible,
il propose aussi des tunnels à encapsulation sur de l’IPv4.
Vient ensuite l’opérateur Free qui propose des adresses IPv6 très attendues dès 2007 pour les abonnés
dégroupés. Dans le communiqué de presse 10, Iliad précise qu’il est « l’un des premiers opérateurs dans le
monde à faire évoluer son réseau 
». Comme nous le verrons dans la partie dédiée au 6rd, cette affirmation
n’est pas tout à faire vraie puisqu’ils utilisent un mécanisme d’encapsulation qui leur permettent justement
de ne pas faire évoluer leur réseau. Ils se limitent à offrir un /64, qui permet tout de même bien plus
d’adresses qu’un particulier ne pourra jamais avoir besoin. Toutefois, en considérant que les 64 derniers
bits d’une adresse doivent être réservés pour l’autoconfiguration stateless (abordée dans la suite de ce
document), ce préfixe ne permet pas de faire des sous-réseaux depuis une ligne Free.
Le 26 mai 2011, c’est une certaine Chloé qui annonce l’ouverture d’une période de bêta-tests du côté
de SFR-Neufbox 11. On apprend dans une news Cisco 12 que SFR aurait utilisé le CGv6 13 avec un ASR
1000 pour migrer son réseau. On peut donc en déduire que SFR se contente aussi d’encapsuler de l’IPv6
sur de l’IPv4.
Présent depuis 2009 sur le réseau MPLS 14 (groupe de l’IETF chargé de standardiser un certain
nombre de techniques de transport sur des trames de niveau 2), Orange ne propose toujours pas d’IPv6 à
ses abonnés. Malgré tout il ne l’ignore pas totalement sur ses infrastructures, puisqu’il propose des VPN
8. http://www.nerim.fr/ipv6
9. http://ipv6pourtous.free.fr/rani/
10. http://www.iliad.fr/presse/2007/CP_IPv6_121207.pdf
11. http://atelier.sfr.fr/beta-tests/la-neufbox-sfr-passe-a-l-ipv6
12. http://newsroom.cisco.com/press-release-content?type=webcontent&articleId=358080
13. http://www.cisco.com/en/US/netsol/ns1017/networking_solutions_solution_category.html
14. http://datatracker.ietf.org/wg/mpls/charter/
8 / 143
Julien VAUBOURG

link to page 17 link to page 17 link to page 17 link to page 17 link to page 17 link to page 18 link to page 17 link to page 17 link to page 18 link to page 151 Yarding
CHAPITRE 1. POURQUOI L’IPV6
Équipe réseau Lothaire
IPv6 à destination des entreprises (voir la jolie vidéo 15). Pour la suite, un projet plus large semble être
dans les rails dans le cadre de « Conquêtes 2015 » comme en témoigne son communiqué de presse 16.
L’accès aux particuliers serait prévu pour 2013 avec une nouvelle Livebox en 2012. Bien qu’il soit le plus
gros opérateur français, l’« Internet by Orange » lui vaut une fois de plus d’être à la traîne derrière ses
concurrents.
1.6.2
Réseaux de recherche
Renater, le réseau français pour l’éducation et la recherche, est aux coude-à-coude avec Nerim pour
l’innovation en France, puisqu’il propose aussi dès 2003 de l’IPv6 sur l’ensemble de son réseau 17. Il précise
que tous les routeurs sont en double pile, et qu’il utilise le réseau GÉANT pour communiquer en IPv6
avec le reste du monde. Environ 160 préfixes /48 ont été alloués en sa qualité de LIR (Local Internet
Registry 
). Il propose également une carte de France publique de l’état de ses connexions IPv6 en temps
réel 18.
Le réseau fédérateur GÉANT propose de l’IPv6 depuis 2002, et dresse un bilan de la situation de
l’IPv6 dans plusieurs pays du monde 19.
1.6.3
Sites web populaires
La figure 1.2 propose une analyse du top 100 des sites les plus visités par les français en mai 2012
selon Alexa 20, en colorisant en vert les sites accessibles en IPv6 21.
Seuls 10% des sites populaires sont accessibles en IPv6, dont 50% provient des serveurs de Google.
Certains sites comme ovh.com sont accessibles en IPv6 via une adresse spécifique (ipv6.ovh.com), ce qui
ne rend leur site web accessible que pour les initiés.
Le constat n’est pas très encourageant, mais migrer un site web en IPv6 n’est pas techniquement
compliqué. Il tient donc probablement plus de la fainéantise des éditeurs que de l’incompétence tech-
nique ou du coût financier de la migration. Si tous les internautes disposaient de l’IPv6 et que tous les
datacenters le mettaient aussi à disposition, il y a fort à parier que le tableau changerait très rapidement.
Cette liste à elle-seule justifie l’importance de la nécessité de faire cohabiter l’IPv4 avec l’IPv6.
1.6.4
IPv6 day
En 2011 a eu lieu la première journée mondiale de l’IPv6 (logo en figure 1.3), organisée par l’Internet
Society aidée par de grosses compagnies. Alors qu’elle était destinée à encourager les acteurs du monde
15. http://ipv6.orange-business.com
16. http://mobile.orange.fr/content/ge/high/v2_a_propos_d_orange/cp/244685.pdf
17. http://www.renater.fr/deploiement-ipv6-sur-le-reseau-renater?lang=fr
18. http://pasillo.renater.fr/weathermap/weathermap_france_ipv6.html
19. http://www.geant.net/Network/NetworkTopology/Pages/IPv6.aspx
20. http://www.alexa.com/topsites/countries/FR
21. while read site; do (dig AAAA +short +tcp $site | grep -v \\. > /dev/null) && echo "\\item
{\\color{green} $site}" || echo "\\item {\\color{red} $site}"; done < sites.txt >> sites_ip6.txt
9 / 143
Julien VAUBOURG

link to page 18 link to page 18 link to page 19 link to page 19 link to page 151 Yarding
CHAPITRE 1. POURQUOI L’IPV6
Équipe réseau Lothaire
1. google.fr
26. lequipe.fr
51. priceminister.com
76. caisse-epargne.fr
2. facebook.com
27. blogger.fr
52. skyrock.fm
77. 01net.com
3. google.com
28. sfr.fr
53. www.doctissimo.fr
78. canalplus.fr
4. youtube.com
29. programme-tv.net
54. deezer.com
79. ad6media.fr
5. yahoo.fr
30. allocine.fr
55. cdiscount.fr
80. voila.fr
6. fr.wikipedia.org
31. linternaute.com
56. pinterest.com
81. canalblog.com
7. live.fr
32. laredoute.fr
57. journaldunet.com
82. webrankinfo.com
8. t.co
33. www.googleusercontent.com
58. boursorama.fr
83. new.livejasmin.com
9. leboncoin.fr
34. apple.com
59. badoo.com
84. rueducommerce.fr
10. www.orange.fr
35. vente-privee.com
60. societe.com
85. pornhub.com
11. www.free.fr
36. microsoft.com
61. lexpress.fr
86. xvideos.com
12. fr.linkedin.com
37. pole-emploi.fr
62. aufeminin.com
87. lepoint.fr
13. ebay.fr
38. ovh.net
63. nouvelobs.com
88. societegenerale.fr
14. twitter.com
39. tumblr.com
64. flickr.fr
89. vivastreet.co.uk
15. commentcamarche.net
40. adcash.com
65. youporn.com
90. reverso.net
16. viadeo.com
41. leparisien.fr
66. becoquin.com
91. wordreference.com
17. amazon.fr
42. seloger.com
67. meteofrance.com
92. adserverpub.com
18. lemonde.fr
43. tf1.fr
68. fnac.com
93. labanquepostale.fr
19. dailymotion.com
44. xhamster.com
69. credit-agricole.com
94. conduit.com
20. over-blog.com
45. voyages-sncf.com
70. liberation.fr
95. mobile.free.fr
21. blogger.com
46. ovh.com
71. bnpparibas.com
96. adobe.com
22. figaro.fr
47. paypal.com
72. clubic.com
97. banquepopulaire.fr
23. msn.fr
48. 20minutes.fr
73. babylon.com
98. pixmania.com
24. pagesjaunes.fr
49. jeuxvideo.com
74. advertstream.com
99. groupon.com
25. wordpress.com
50. bing.fr
75. laposte.net
100. amazon.com
Figure 1.2 – Les 100 sites les plus visités par les français et l’IPv6 (sites compatibles en vert).
entier à tester leurs infrastructures en IPv6, la version 2012 avait pour objectif de les encourager à
proposer leurs services en IPv6 de façon durable.
Figure 1.3 – Logo de la journée mondiale pour l’IPv6 le 06/06.
En France, des FAI comme Orange ou SFR ont participé à cette journée mondiale aux côtés d’acteurs
mondiaux comme Cisco 22 ou Google 23, qui aura maintenant lieu tous les ans à la date symbolique du
06/06.
La figure 1.4 page 11 semble prouver qu’au niveau mondial, que ce soit grâce à cette initiative
22. http://www.cisco.com/web/solutions/trends/ipv6/world_day.html
23. http://www.google.com/intl/en/ipv6
10 / 143
Julien VAUBOURG

link to page 19 link to page 151 Yarding
CHAPITRE 1. POURQUOI L’IPV6
Équipe réseau Lothaire
populaire ou non, l’utilisation d’IPv6 dans le monde explose depuis ces dernières années (mesures réalisées
par Google 24).
Figure 1.4 – Utilisation de l’IPv6 au travers du temps, mesurée par Google.
24. http://www.google.com/ipv6/statistics.html
11 / 143
Julien VAUBOURG

link to page 151 Yarding
CHAPITRE 1. POURQUOI L’IPV6
Équipe réseau Lothaire
12 / 143
Julien VAUBOURG

link to page 21 2
Adressage
« I don’t know if it’s what you want, but it’s what you get. » - Larry Wall (1990)
2.1
Conventions d’écriture
Les nouvelles adresses IP comporteront 128 bits, soit 16 octets. Pour faciliter leur lecture, celles-ci
sont découpées en blocs de 16 bits séparés par le symbole deux-points :
1 2001:0db8:0000:0000:0000:abcd:def0:1234
Tous les zéros en tête de bloc peuvent être supprimés, et les quadruplets de zéros réduits à un seul
nibble :
1 2001:db8:0:0:0:abcd:def0:1234
Plus simple encore, une suite (de 1 à 7) de blocs de zéros peut être induite par un double deux-points :
1 2001:db8::abcd:def0:1234
Cette notation indique aux interpréteurs de remplacer ce double symbole par autant de zéros qu’il
n’en faut pour arriver aux 128 bits nécessaires, sur la totalité de l’adresse donnée. Par souci d’unicité des
possibilités d’extension, le double deux-points ne peut être utilisé qu’à un seul endroit dans l’adresse.
La notion historique de classes a totalement disparue, au profit de l’utilisation exclusive des préfixes
et de la notation CIDR avec le slash et le masque, déjà utilisées en IPv4. Les masques canoniques
disparaissent donc, au grand bonheur des administrateurs.
Ainsi, pour un préfixe sur 60 bits tel que 2001:0db8:0000:ba3 :
1. http://groups.google.com/groups?selm=10502@jpl-devvax.JPL.NASA.GOV&hl=en

link to page 32 link to page 32 link to page 23 link to page 151 Yarding
CHAPITRE 2. ADRESSAGE
Équipe réseau Lothaire
2001:0db8::ba30:0:0:0:0/60
2 ou
2001:db8:0:ba30::/60
4 ou encore
2001:0db8:0000:ba30:0000:0000:0000:0000/60
Comme en IPv4, une adresse d’interface peut être suivie de son masque de réseau grâce à la notation
CIDR.
Dans un contexte de requête HTTP, l’adresse IPv6 doit obligatoirement être entre crochets pour
différencier le port du reste de l’adresse (ainsi que dans d’autres cas d’ambiguïté, comme avec SCP) :
1 HTTP : [2001:db8::abcd:def0:1234]:8080
2 SCP : [2001:db8::abcd:def0:1234]:/etc/passwd
Concernant le calcul des sous-réseaux IPv6, l’outil sipcalc apporte une précieuse aide :
sipcalc -6 2001:db8::/48 -S /56
2 -[ipv6 : 2001:db8::/48] - 0
3
4 [Split network]
5 Network
- 2001:0db8:0000:0000:0000:0000:0000:0000 -
6
2001:0db8:0000:00ff:ffff:ffff:ffff:ffff
7 Network
- 2001:0db8:0000:0100:0000:0000:0000:0000 -
8
2001:0db8:0000:01ff:ffff:ffff:ffff:ffff
9 Network
- 2001:0db8:0000:0200:0000:0000:0000:0000 -
10
2001:0db8:0000:02ff:ffff:ffff:ffff:ffff
11 Network
- 2001:0db8:0000:0300:0000:0000:0000:0000 -
12 ...
La section 2.9 page 24, concernant les bonnes pratiques, apporte des informations complémentaires
sur l’utilisation de ces adresses.
2.2
Adresses unicast
2.2.1
Généralités
Il s’agit du même type d’adresse (RFC 4291, section 2.5) que son homologue IPv4. C’est donc le
type d’adresse le plus classique, composé d’un préfixe réseau à longueur variable suivi d’un identifiant
d’interface (parfois dérivé des adresses MAC, sur 64 bits).
La figure 2.1 illustre le mode de diffusion.
On distingue plusieurs sous-catégories.
14 / 143
Julien VAUBOURG

link to page 23 link to page 151 Yarding
CHAPITRE 2. ADRESSAGE
Équipe réseau Lothaire
Figure 2.1 – Représentation schématique d’une diffusion unicast.
2.2.2
Link-local Unicast
Adresses de lien local, non-routables en local comme sur Internet. C’est un peu l’équivalent des
adresses 169.254/16 du zéroconf de l’IPv4.
Elles utilisent toutes le préfixe fe80::/10, elles sont donc souvent directement reconnaissables par
leur premier bloc. Elles sont systématiquement générées lors de l’utilisation de l’autoconfiguration state-
less
.
2.2.3
Unique Local Unicast
Ces adresses peuvent être utilisées sur un lien local comme les précédentes, mais qui pourra être
partagé entre plusieurs sites par un tunnel. Elles ne sont pas non plus routables sur Internet, et c’est la
catégorie qui se rapproche le plus des adresses privées IPv4 (RFC 1918).
Leur différence par rapport au type étudié ci-avant dépend de l’utilisation d’un algorithme censé
assurer leur unicité en cas de branchement avec un autre site, détaillé dans la RFC 4193.
Elles utilisent toutes le préfixe fc00::/7, mais avec le huitième bit en partant de la gauche positionné
à 1 si le préfixe est défini localement. Puisque la valeur 0 n’est pas possible actuellement (usage futur),
elles sont reconnaissables par leur premier bloc qui commence systématiquement par fd.
Des outils comme UltraTools permettent de les générer sans se soucier du fonctionnement de
l’algorithme détaillé dans la RFC.
Ce type d’adresse remplace le type site-local unicast, rendu obsolète.
2.2.4
Global Unicast
Tout ce qui ne correspond ni à l’une des autres catégories d’adresses unicast, ni à une adresse multicast
ou anycast, est une adresse globale. Il s’agit des adresses qui sont uniques dans le monde, et qui sont
par conséquent routables sur Internet.
Elles se composent d’un préfixe de routage global, suivi du préfixe de sous-réseau et de l’identifiant
2. http://ultratools.com > UltraTools > IPv6 Tools > Local IPv6 Range Generator
15 / 143
Julien VAUBOURG

link to page 24 link to page 24 link to page 24 link to page 24 link to page 151 Yarding
CHAPITRE 2. ADRESSAGE
Équipe réseau Lothaire
d’interface. L’IANA fournit la liste des préfixes affectés aux différents RIR, qui permettent donc de
classer les IP rencontrées sur le réseau mondial par région du monde.
Si le préfixe 2001:db8::/32 semble appartenir à l’APNIC (Asie-Pacifique), il n’est en réalité pas
routable sur Internet puisqu’il s’agit des adresses à utiliser pour les exemples des documentations (RFC
3849).
2.3
Adresses multicast
2.3.1
Généralités
Ce type d’adresse (RFC 4291, section 2.7) correspond précisément à son homologue IPv4. Il s’agit
d’adresses virtuelles gérées par les routeurs, qui redistribuent des paquets à tous les membres inscrits
dans un groupe, à l’instar du fonctionnement d’une liste de diffusion de courriels.
La figure 2.2 illustre le mode de diffusion.
Figure 2.2 – Représentation schématique d’une diffusion multicast.
Elles utilisent toutes le préfixe ff00::/8 4. Elles sont donc reconnaissables par leur premier bloc qui
commence systématiquement par ff.
2.3.2
Structure
Le format d’une IP multicast est donné en figure 2.3.
8 bits
4 bits
4 bits
112 bits
1111 1111
Drapeaux : 0RPT
Portée
Identifiant de groupe
Figure 2.3 – Format d’une IP multicast.
Les quatre bits qui suivent le préfixe désignent les drapeaux (flags) :
0 (zéro !) : Il s’agit d’un zéro immuable.
3. http://iana.org/assignments/ipv6-address-space/ipv6-address-space.xml
4. Liste complète : http://en.wikipedia.org/wiki/Multicast_address#IPv6
16 / 143
Julien VAUBOURG

link to page 25 link to page 25 link to page 25 link to page 25 link to page 26 link to page 151 Yarding
CHAPITRE 2. ADRESSAGE
Équipe réseau Lothaire
T (Temporaire ? ) : Il doit être à 0 lorsque c’est une adresse affectée de façon permanente (well-known
address) par l’IANA, sinon il est à 1.
P (issue du Préfixe ? ) : Il doit être à 0 si l’adresse multicast ne correspond pas au préfixe diffusé sur
le réseau, ce qui est obligatoirement le cas si le drapeau T est lui-même à 0, sinon il sera à 1 (RFC
3306).
R (utilise un Rendez-vous ? ) : Il sera à 1 si l’adresse multicast utilise un point de « rendez-vous » 5
(auquel cas P est à obligatoirement à 1, ce qui signifie que T aussi), et sera donc la plupart du
temps à 0.
Les quatre bits qui suivent les drapeaux correspondent à la portée de l’adresse (scope), qui peuvent
limiter son rayonnement à l’interface (1) pour les tests, au lien local (2), au site correspondant au réseau
local (5), à Internet (e) ou à des zones plus variées décrites dans la RFC 4291 6.
Cette façon de faire permet de contacter des services efficacement en ajustant le type d’accès. Ainsi,
en définissant l’identifiant 123 pour tous les serveurs NTP, on aura la possibilité de contacter différents
niveaux de serveurs selon le préfixe associé (tableau 2.1).
Adresse
Serveurs NTP contactés
ff01::123
Ceux qui sont sur la même interface
ff02::123
Ceux du même lien
ff05::123
Ceux du LAN
ff0e::123
Tous y compris sur Internet
Table 2.1 – Exemple d’utilisation de la portée des adresses multicast avec NTP.
2.3.3
Adresses utiles
Un certain nombre d’adresses multicast sont normalisées par l’IETF (drapeau T positionné à 0), et
sont documentées dans la RFC 2461 7.
Les plus utilisées (portée de lien local) sont référencées dans le tableau 2.2.
Les systèmes Debian (par exemple) associent par défaut un domaine à ces adresses (/etc/hosts) :
1 # The following lines are desirable for IPv6 capable hosts
2 ::1
ip6-localhost ip6-loopback
3 fe00::0 ip6-localnet
4 ff00::0 ip6-mcastprefix
5 ff02::1 ip6-allnodes
6 ff02::2 ip6-allrouters
5. http://www.cisco.com/en/US/prod/collateral/iosswrel/ps6537/ps6552/whitepaper_c11-508498.
html
6. Ou sur http://www.iana.org/assignments/ipv6-multicast-addresses/ipv6-multicast-addresses.xml.
7. Ou sur http://en.wikipedia.org/wiki/Multicast_address#IPv6.
17 / 143
Julien VAUBOURG

link to page 26 link to page 26 link to page 1 link to page 151 Yarding
CHAPITRE 2. ADRESSAGE
Équipe réseau Lothaire
Nom
Adresse
Équivalent IPv4
Fonction
Tous les nœuds et routeurs du lien local (util-
isée par exemple pour les interfaces qui n’ont
pas encore d’adresse mais qui veulent recevoir
all-nodes
ff02::1
224.0.0.1
une réponse, notamment pour savoir s’il y a du-
plication dans l’algorithme DAD, abordé par la
suite)
Tous les routeurs du lien local (utilisée par ex-
all-routers
ff02::2
224.0.0.2
emple pour solliciter une annonce de préfixe sur
le réseau)
Permet de contacter un nombre restreint de ma-
chines, notamment pour faire une association
solicited-node
ff02::1:ff*
Aucun
MAC-IP (protocole NDP) plutôt que de broad-
caster comme le faisait l’ARP
Table 2.2 – Adresses multicast couramment utilisées (portée locale).
2.3.4
Trame ethernet
L’adresse ethernet (MAC) d’une trame à destination d’un groupe multicast est dérivée de l’adresse
IP du groupe (RFC 5342 et 2464), comme décrit dans la figure 2.4.
16 bits
32 bits
ff02::1:ff00:0
32 derniers bits de l’adresse IPv6 de l’interface
Figure 2.4 – Format d’une adresse ethernet multicast.
La figure 2.5 illustre cette conversion.
8
Figure 2.5 – Conversion d’une adresse IP multicast en adresse ethernet multicast (adresse all-nodes).
18 / 143
Julien VAUBOURG

link to page 28 link to page 28 link to page 151 Yarding
CHAPITRE 2. ADRESSAGE
Équipe réseau Lothaire
2.3.5
Abonnements systématiques
Étant données les notions étudiées ci-avant, les groupes multicasts utilisés dans les différents algo-
rithmes nécessitent que les machines rejoignent des groupes automatiquement, parfois en fonction de la
nature de leur rôle sur le réseau.
Exemple de groupes multicast IPv6 automatiquement rejoints par une Debian en autoconfiguration
stateless (par défaut) :
1 # Adresse MAC qui a servie pour l’autoconfiguration des adresses IPv6
ip link show dev eth0
3 2: eth0: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state
UP mode DEFAULT qlen 1000
4
link/ether 00:21:70:ec:b4:9b brd ff:ff:ff:ff:ff:ff
5
6 # Adresses IPv6
ip -6 addr show dev eth0
8 2: eth0: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qlen 1000
9
inet6 2001:660:4503:105:221:70ff:feec:b49b/64 scope global dynamic
10
valid_lft 2591946sec preferred_lft 604746sec
11
inet6 fe80::221:70ff:feec:b49b/64 scope link
12
valid_lft forever preferred_lft forever
13
14 # Abonnements multicast
15 ip -6 maddress show dev eth0
16 2:
eth0
17
inet6 ff02::fb
18
inet6 ff02::202
19
inet6 ff02::1:ffec:b49b users 2
20
inet6 ff02::1
La signification des inscriptions pour un poste utilisateur est renseignée dans le tableau 2.3 page 20.
Exemple de groupes multicast IPv6 automatiquement rejoints par un routeur Cisco en autoconfigu-
ration stateless (par défaut) :
1 # Adresses IPv6 et groupes multicast rejoints
Router# show ipv6 interface fa 0/1
3
4
IPv6 is enabled, link-local address is FE80::217:59FF:FE02:8DB9
5
No Virtual link-local address(es):
6
Global unicast address(es):
7
2001:660:4503:105::2, subnet is 2001:660:4503:105::/64
8
Joined group address(es):
9
FF02::1
10
FF02::2
11
FF02::1:FF00:2
12
FF02::1:FF02:8DB9
19 / 143
Julien VAUBOURG

link to page 28 link to page 28 link to page 28 link to page 151 Yarding
CHAPITRE 2. ADRESSAGE
Équipe réseau Lothaire
La signification des inscriptions pour un routeur est renseignée dans le tableau 2.4 page 20.
Groupe multicast
Équivalent IPv4
Signification
Écoute des trames mDNS (résolutions DNS sans
ff02::fb
224.0.0.251
configuration de serveur DNS)
Écoute des trames de broadcast RPC (Remote
ff02::202
Via l’adresse de broadcast
Procedure Calls)
Adresse solicited-node correspondant à la fois à
son adresse IP de lien local en fe80: et son adresse
globale en 2001:, puisque les 24 derniers bits de
ff02::1:ffec:b49b
Aucun
chacune sont identiques (il s’agit aussi des 24
derniers bits de l’adresse MAC) - le users 2 signifie
que deux processus écoutent sur la socket corre-
spondante
Adresse all-nodes, qui remplace plus ou moins le
broadcast (en beaucoup moins sollicitée, et de
ff02::1
224.0.0.1
laquelle on pourrait éventuellement se désinscrire
bien que ça ne soit pas du tout conseillé)
Table 2.3 – Groupes multicast automatiquement rejoints par une Debian.
Groupe multicast
Équivalent IPv4
Signification
ff02::1
224.0.0.1
Les routeurs écoutent aussi l’adresse all-nodes
Adresse all-routers, jointe automatiquement dès lors que
le unicast-routing global est activé pour l’IPv6
ff02::2
224.0.0.2
ahttps://supportforums.cisco.com/thread/2155384?
tstart=0
Adresse solicited-node correspondant à l’adresse unicast
ff02::1:ff00:2
Aucun
globale en 2001:
Adresse solicited-node correspondant à l’adresse de lien
local en fe80:, différente de celle utilisée pour l’adresse
ff02::1:ff00:8db9
Aucun
globale puisque cette dernière n’a pas utilisé l’autoconfig-
uration mais a été fixée manuellement
Table 2.4 – Groupes multicast automatiquement rejoints par un routeur Cisco.
Toutes ces adresses multicast sont de type lien local (ff02:) : contrairement aux adresses de portée
supérieure, elles ne donnent pas lieu à une inscription sur les routeurs, qui ne connaissent donc pas la
composition des groupes. Lorsqu’une trame est à destination d’une adresse multicast de ce type (donc
adressée à une MAC en 33:33:), elle est transmise par les switchs sur l’ensemble des interfaces, de la
même façon que du broadcast IPv4. Si cette façon de faire ne réduit pas les charges réseau et n’évite pas
les problèmes de boucle de niveau 2, elle réduit tout de même la charge des cartes réseaux, puisqu’elles
peuvent rejeter le paquet simplement en comparant l’adresse MAC de destination avec leurs tables
multicast locales, sans nécessiter de désencapsulation.
20 / 143
Julien VAUBOURG

link to page 29 link to page 29 link to page 151 Yarding
CHAPITRE 2. ADRESSAGE
Équipe réseau Lothaire
2.4
Adresses de broadcast
Le broadcast a été supprimé et ne doit plus être pris en considération dans les plans d’adressage, au
profit de l’utilisation massive du multicast. Le groupe multicast qui se rapproche le plus du fonctionnement
du broadcast traditionnel correspond au groupe all-nodes donné en exemple et censé correspondre à tous
les nœuds (mais dont l’inscription est à la discrétion de la machine).
La figure 2.6 illustre le mode de diffusion.
Figure 2.6 – Représentation schématique d’une diffusion broadcast.
Avec cette nouvelle approche, l’IPv6 tente de résoudre les problèmes de tempêtes de broadcast,
fréquemment rencontrés en version 4. Les groupes prédéfinis permettent de contacter les machines par
type de service, en évitant ainsi de charger des machines qui n’ont aucune chance d’être concernées par
le message.
2.5
Adresses anycast / réseaux
Les adresses anycast (RFC 4291, section 2.6) ne sont pas différenciables des adresses unicast (seule
les interfaces qui les utilisent savent qu’elles sont anycast).
Elles permettent de contacter une machine parmi un lot sans en avoir conscience. Ainsi, ce sera la
première qui répondra (souvent la plus proche topologiquement parlant) qui sera utilisée, et les autres
ne recevront aucun des paquets transmis. Ce type d’adresse peut donc être affecté à plusieurs interfaces
sur un réseau.
La figure 2.7 illustre le mode de diffusion.
Figure 2.7 – Représentation schématique d’une diffusion anycast.
21 / 143
Julien VAUBOURG

link to page 45 link to page 45 link to page 151 Yarding
CHAPITRE 2. ADRESSAGE
Équipe réseau Lothaire
L’une des principales utilisations de cette opportunité concerne les routeurs, en donnant la possibilité
de contacter automatiquement le routeur le plus proche d’un sous-réseau donné. Il a été standardisé
qu’il suffit de contacter en unicast l’adresse correspondant au préfixe de réseau suivi de zéros (ce qu’on
appelait autrefois l’adresse du réseau) pour contacter le routeur qui sera en capacité de nous répondre le
plus rapidement possible. C’est une solution pour la redondance des routeurs qui n’est pas obligatoire,
mais qui est plus simple à mettre à en œuvre que l’utilisation du HSRP. Sur un routeur Cisco, l’IOS
ne respecte pas cette norme par défaut, et se contente uniquement de prévenir du caractère unicast de
l’adresse si l’utilisateur tente de l’attribuer à une interface.
2.6
Adresses de boucles locales
Les administrateurs qui ne voient pas beaucoup le soleil et qui ont 127.0.0.1 écrit sur leur paillasson,
devront le troquer pour une version plus récente avec ::1 inscrit dessus.
L’adresse :: correspond logiquement à l’adresse IPv4 0.0.0.0 et ne sera donc utilisée que pour
définir les passerelles par défaut, ou comme adresse source des paquets de découverte de son IP.
2.7
Déterminer rapidement le type d’une adresse
Outre les débuts de blocs souvent reconnaissables, des outils permettent de lever toute ambiguïté sur
un type d’adresse.
Le logiciel ipcalc présent dans la plupart des distributions GNU/Linux offrait un couteau suisse pré-
cieux pour tous les administrateurs réseaux fainéants (et par conséquent compétents). Ils seront heureux
de savoir qu’il existe un équivalent pour ces nouvelles adresses angoissantes, qui s’appelle logiquement
ipv6calc.
Le fonctionnement est un peu moins optimal que son prédécesseur, mais offre beaucoup plus de
possibilités de conversion.
Plutôt que de copier le man bien fourni, voici simplement un exemple :
ipv6calc -qi fe80::216:3eff:fed6:2ba0
2 Address type: unicast, link-local
3 Error getting registry string for IPv6 address: reserved(RFC4291#2.5.6)
4 Interface identifier: 0216:3eff:fed6:2ba0
5 EUI-48/MAC address: 00:16:3e:d6:2b:a0
6 MAC is a global unique one
7 MAC is an unicast one
8 OUI is: Xensource, Inc.
L’analyse d’une adresse de lien local permet ici de déterminer du même coup le type d’interface
physique, en passant par l’adresse MAC (EUI-48). Dans ce cas précis, cette dernière est incluse dans
l’adresse IPv6, ce point étant détaillé dans la section 4.2 page 37, dédiée à l’autoconfiguration stateless.
L’option -i permet de demander un affichage de tout ce que peut déduire le logiciel de cette adresse,
22 / 143
Julien VAUBOURG

link to page 31 link to page 31 link to page 151 Yarding
CHAPITRE 2. ADRESSAGE
Équipe réseau Lothaire
dont il détermine aussi le type automatiquement. L’option -q permet quant à elle de supprimer les lignes
qui ne servent qu’à décrire le fonctionnement de l’outil.
Des options –-in et –-out permettent de faire un certain nombre de conversions (dont certaines ne
semblent pas possibles actuellement), en précisant les types adéquats listés par les commandes :
ipv6calc --in -h
2 [...]
ipv6calc --out -h
4 [...]
Les tests permettront peut-être de révéler d’autres types d’adresses qui n’ont pas été référencés ci-
dessus. Soit ils seront abordés dans les sections qui correspondent à leur utilité (principalement pour la
cohabitation IPv4-IPv6), soit ils sont obsolètes (comme les adresses site-local unicast), soit ils font partie
de solutions qui n’ont pas été retenues pour ce document.
2.8
Sélectionner l’IP de sortie
C’était déjà possible en version 4, mais avoir plusieurs adresses IP pour une même interface devient
quelque chose de classique (voire systématique, dans le cas de l’autoconfiguration stateless avec les
adresses de liens locaux, par exemple) en version 6.
Quelques commandes systèmes demandent de rajouter le nom de l’interface à utiliser lorsqu’elles
demandent une adresse IP. Pour ce faire, il faut ajouter son nom à la fin de celle-ci, en le séparant par
un symbole pourcent. Par exemple, pour une interface Unix :
1 2001:db8::abcd:def1:1234%eth0
Cette technique permet de forcer l’interface par laquelle sortiront les paquets, mais pas de sélectionner
précisément l’adresse source qui sera utilisée. Il ne semble pas y avoir d’équivalent au pourcentage pour
ça, et ce serait donc plutôt à la discrétion de la commande de fournir un paramètre pour la préciser
(comme le ping de Windows, ou le ping étendu de Cisco).
Si l’adresse source n’est pas forcée, la RFC 3484 prévoit cet algorithme, qui sera appliqué par le
système :
1. Si la destination est une adresse locale, il utilise celle-ci pour sortir.
2. Sinon il sélectionne l’adresse de plus petite portée, partagée avec celle de destination.
3. En cas d’égalité, il évite les adresses au format déprécié (dont la durée de vie conseillée est dépassée,
mais pas la durée de validité).
4. Puis il privilégie les adresses de type « home » 9.
5. Il préfère ensuite une adresse de l’interface utilisée pour sortir.
6. Il continue en privilégiant le label correspondant 10.
7. Les adresses publiques sont utilisées en priorité sur celles restantes.
9. Cf. la section « 3.5. Mobility Addresses » de la RFC 3484.
10. Cf. la règle 6 de la section « 5. Source Address Selection » de la RFC 3484
23 / 143
Julien VAUBOURG

link to page 32 link to page 32 link to page 32 link to page 32 link to page 32 link to page 151 Yarding
CHAPITRE 2. ADRESSAGE
Équipe réseau Lothaire
8. Enfin, il choisit le plus long préfixe qui correspond.
Si, à la suite de toutes ces règles, il n’a pas encore trouvé de gagnant, il considère la dernière adresse
utilisée.
Une solution pour inciter le système à mettre en retrait certaines adresses est de jouer sur la troisième
règle. On notifiera donc qu’une adresse est dépréciée en forçant sa durée limite de validité à zéro (exemple
pour GNU/Linux) :
1 # En l’ajoutant
ip -6 addr add 2001:db8::abcd:def1:1234 dev eth0 preferred_lft 0
3 # En la modifiant
ip -6 addr change 2001:db8::abcd:def1:1234/64 dev eth0 preferred_lft 0
2.9
Bonnes pratiques
Les bonnes pratiques (best practices) référencées dans cette liste s’inspirent des conseils répertoriés
par Chris Grundemann 11, ARIN 12 (depuis la liste du NANOG) et mpreath 13 :
Préfixes de 64 bits pour les réseaux : Conformément à la RFC 4291, toutes les adresses unicast qui
ne sont pas des liens d’interconnexion devraient utiliser un préfixe de 64 bits.
Utilisation du EUI-64 : Ces adresses devraient également utiliser l’identifiant d’interface (EUI-64 formé
depuis l’EUI-48 correspondant à l’adresse MAC) pour former les 64 derniers bits, avec l’autocon-
figuration stateless.
Préfixes /48 pour les sites : Un site (un bâtiment, un étage, campus, AS, interco, etc.) devrait utiliser
systématiquement un /48.
Un /48 pour les adresses de l’infrastructure : Le premier ou le dernier /48 devrait être réservé pour
l’infrastructure (boucles locales, interconnexions, etc.).
Adresses de loopback : Les adresses de boucle locale devraient utiliser un préfixe /128 14, provenant
du premier /64 du /48 réservé pour l’infrastructure.
Liens d’interconnexion : Malgré la recommandation d’utiliser les identifiants d’interface, un autre /64
du préfixe réservé à l’infrastructure devrait servir pour tailler des /127 destinés aux liens d’inter-
connexion. Comme décrit dans la section 5 de la RFC 6164, cette façon de faire évite le problème
du ping-pong entre deux routeurs qui tentent de se renvoyer un paquet à destination d’une adresse
de leur réseau mais qui ne correspond à aucune des deux adresses 15. La seconde raison concerne le
cache des neighbors, qui risque de se faire polluer par des adresses qui restent en cours de résolu-
tion, jusqu’à ce que la mémoire soit pleine (cette attaque n’est pas spécifique aux interconnexions,
11. http://www.ipbcop.org/wp-content/uploads/2012/02/BCOP-IPv6_Subnetting.pdf
12. http://www.getipv6.info/index.php/IPv6_Addressing_Plans
13. http://mattreath.com/2011/07/17/ipv6-best-practices
14. La RFC 4291 propose d’utiliser directement un /64 pour les liens d’interconnexion, puisque le /48 réservé pour
l’infrastructure permet de toutes façons d’adresser 65536 /64.
15. La RFC 4443 sur l’ICMPv6 impose désormais aux routeurs de ne jamais faire suivre une route qui fait repartir un
paquet par le lien par lequel il est arrivé. Ce problème existait déjà en IPv4, mais la rareté des adresses encourageait
toujours les administrateurs à utiliser des /30 ou /31.
24 / 143
Julien VAUBOURG

link to page 33 link to page 33 link to page 135 link to page 135 link to page 151 Yarding
CHAPITRE 2. ADRESSAGE
Équipe réseau Lothaire
mais elles y sont particulièrement sensibles à cause du volume de leurs trafics). Enfin, certains
préfèrent utiliser un /64 pour obtenir des adresses courtes x:x:x:x::1 et x:x:x:x::2.
Taille des préfixes égales par niveau : Chaque niveau de la hiérarchie de l’adressage devrait avoir le
même préfixe. Cette recommandation semblait aussi naturelle en IPv4, mais était souvent con-
tournée pour découper un maximum les préfixes afin d’adresser des sites plus petits que d’autres
dans le but de faire des économies.
Numéro de VLAN dans les préfixes : Ajouter le numéro de VLAN dans l’adresse semble être une
pratique courante 16 : pour un site qui a le préfixe 2001:db8:42::/48, une machine dans le VLAN
201 aura pour préfixe 2001:db8:42:201.
Adresses de lien local pour les routeurs : La RFC 4861 impose aux interfaces des routeurs de pro-
poser une adresse de lien local, et celle-ci devrait toujours être utilisée pour les désigner lors de la
création des routes sur le lien local (elles sont utilisées automatiquement lorsque c’est l’autocon-
figuration stateless qui découvre la passerelle).
Adresse anycast des routeurs : Les interfaces des routeurs devraient utiliser l’adresse anycast corre-
spondant au préfixe du réseau (l’ancienne « adresse du réseau », par exemple 2001:db8:201::/64)
pour permettre de les retrouver facilement.
Sous-réseaux par nibble : Les caractères hexadécimaux (nibbles) ne devraient jamais être à l’inter-
section entre les bits de réseau et d’hôte. En d’autres termes, le préfixe devrait toujours être un
multiple de quatre, et les sous-réseaux devraient varier en fonction d’un seul caractère :
1 2001:db8:1000::/36
2 2001:db8:2000::/36
3 2001:db8:3000::/36
Plutôt que :
1 2001:db8:800::/37
2 2001:db8:1000::/37
3 2001:db8:1800::/37
Le RIPE met également à disposition un document 17 destiné à guider la conception d’un plan d’adres-
sage IPv6.
Concernant la sécurité, un exemple de politique de sécurité pour un routeur GNU/Linux est donné
en annexe page 127. Elle vise à verrouiller un maximum les échanges, tout en respectant au maximum
les différentes contraintes des RFC.
2.10
Jouer avec IPv6
Au delà des bonnes pratiques et du bon sens, la communauté des informaticiens a gardé son sem-
piternel sens de l’humour avec l’IPv6, qui permet de faire passer des messages à base d’un alphabet
limité dans ses nouvelles adresses.
16. Le réseau Lothaire procède de cette façon.
17. http://www.ripe.net/lir-services/training/material/IPv6-for-LIRs-Training-Course/IPv6_addr_
plan4.pdf/view
25 / 143
Julien VAUBOURG

link to page 34 link to page 34 link to page 34 link to page 34 link to page 34 link to page 151 Yarding
CHAPITRE 2. ADRESSAGE
Équipe réseau Lothaire
Le blog Coding Relic 18 propose une liste de mots anglais qui peuvent se glisser dans une adresse
IPv6, la plupart utilisant les chiffres pour ajouter des lettres, à la façon du leet speak 19.
Citons les plus connus et intelligibles en anglais :
1 dead beef babe f00d caca b00b bad bed d00d
En français, le plus classique étant probablement cafe:deca, la liste des possibilités est moins in-
téressante (liste des mots de 1 à 8 lettres, de A à F plus les O remplacés par des zéros 20) :
1 0de 0ff abbe acce:da acce:de acce:dee aede b0a b0b b0b0 b0f ba0b:ab baff:a baff:e
2 baff:ee bea bebe bec bee c0be:a c0c0 c0ca c0da c0de c0de:e c0fa:ce c0fa:cee ca
3 caca caca:0 caca:ba caca:be cade cafe ceda cede cede:e d0d0 dec dec0:da dec0:de
4 dec0:dee deca deca:de dece:da dece:de dece:dee ecaf:fa ecaf:fe ecaf:fee effa:ca
5 effa:ce effa:cee f0c faca:de fad0 fada fade fade:e fc0 fee
Certaines entreprises en profitent pour intégrer leur marque aux adresses de leurs serveurs :
dig AAAA +short facebook.com
2 2a03:2880:10:1f02:face:b00c:0:25
3 2a03:2880:10:8f01:face:b00c:0:25
4 2a03:2880:2110:3f01:face:b00c::
Enfin, on peut aussi y trouver des références culturelles 21 :
1 2001:db8::face:0f:b0e
Pour vérifier si une connexion utilise IPv6, le projet KAME 22 met à disposition sa célèbre tortue,
accessible en HTTP et qui ne dansera que si elle est interrogée via une adresse en 128 bits.
18. http://codingrelic.geekhold.com/2011/04/ipv6-addresses-for-fun-and-profit.html
19. http://en.wikipedia.org/wiki/Leet
20. for i in {1..8}/{a..f} {1..8}/o; do curl http://www.liste-de-mots.com/mots-nombre-lettre/$i/
| sed -n ’/liste-mots/{n;s|</p>$||;:b;h;s|.*, ||;/^[a-fo0-9]\+$/{s|o|0|g;s|....|&:|;s|:$||;p};x;
s|,[^,]\+$||;tb}’; done | unaccent UTF-8 | sort -u
21. http://en.wikipedia.org/wiki/Face_of_Boe
22. http://www.kame.net
26 / 143
Julien VAUBOURG

link to page 35 link to page 35 3
Compatibilité des systèmes
« The Web does not just connect machines, it connects people. » - Tim Berners-Lee (2008)
3.1
GNU/Linux
3.1.1
Noyau Linux
Première apparition de l’IPv6 en 1996, pour le noyau 2.1.8, et disparition du statut d’expérimental
en 2005 dans le noyau 2.6.12.
Les versions les plus récentes (2.6.x) supportent pleinement l’IPv6.
3.1.2
Debian / Ubuntu
L’IPv6 est activé par défaut et semble parfaitement fonctionnel pour un poste client, dès la version
4.0 (etch) de Debian en 2007. Côté Ubuntu, c’est la version 7.10 (Gutsy Gibbon) sortie la même année,
qui active IPv6 par défaut. Dans les deux cas, le client NDP et DHCPv6 semble disponible.
Pour le support d’IPv6 au niveau des logiciels empaquetés, l’intégration complète de IPv6 étant
un objectif (release goal 2) de la version Squeeze de Debian, c’est la version minimale conseillée. Pour
Ubuntu, la version 10.10 (Maverick Meerkat) semble être la première à particulièrement s’inquiéter de
cet aspect.
IPv6 peut être désactivé en ajoutant la ligne suivante au fichier /etc/sysctl.conf :
1. http://www.webfoundation.org/donations/knight2008/tbl-speech
2. http://wiki.debian.org/ReleaseGoals/FullIPv6Support

link to page 151 Yarding
CHAPITRE 3. COMPATIBILITÉ DES SYSTÈMES
Équipe réseau Lothaire
grep disable_ipv6 /etc/sysctl.conf
2
net.ipv6.conf.all.disable_ipv6 = 1
Il faut donc vérifier son absence, et contrôler l’activation d’IPv6 en cherchant une éventuelle adresse
locale :
ip a | grep inet6
2
inet6~::1/128 scope host
3
inet6 fe80::221:70ff:feec:b49b/64 scope link
Un ping6 sur l’adresse locale peut aussi permettre de tester la bonne activation (sinon connect :
Network is unreachable) :
ping6 ::1
2
PING ::1(::1) 56 data bytes
3
64 bytes from ::1: icmp_seq=1 ttl=64 time=0.044 ms
3.1.3
Fedora
L’IPv6 au niveau client semble parfaitement supporté à partir de la version 6 (Zod) de 2006, avec un
client NDP et DHCPv6. Au niveau des paquets, la version 13 (Goddard) semble un minimum pour ne
pas avoir de problèmes.
La vérification de la bonne activation de IPv6 peut se faire de la même façon que sous Debian. Pour
l’activer, si ça n’est pas déjà fait, il faut modifier le principal fichier de paramètres du réseau, ainsi que
celui concernant l’interface.
Pour /etc/sysconfig/network, on peut ajouter (le IPV6_DEFAULTGW, avec une adresse réelle, est
facultatif) :
1 NETWORKING_IPV6=Yes
2 IPV6_DEFAULTGW=2001:db8:2:657d:0:25:2:1234/64
Et pour /etc/sysconfig/network-scripts/ifcfg-eth0 (en adaptant le nom du fichier selon l’interface) :
1 IPV6INIT=yes
2 IPV6ADDR=2001:41D0:2:657d:0:25:2:1234
De la même façon que Debian, la plupart des outils d’administration réseau disposent de l’option -6.
3.2
Mac OS X
La première version qui semble supporter IPv6 correspond à la 10.2 (Jaguar) en 2002. Par contre, le
NDP n’est disponible qu’à partir de la 10.3 (Panther) et le client DHCPv6 qu’à partir de la version 10.7
28 / 143
Julien VAUBOURG

link to page 37 link to page 37 link to page 37 link to page 37 link to page 124 link to page 124 link to page 151 Yarding
CHAPITRE 3. COMPATIBILITÉ DES SYSTÈMES
Équipe réseau Lothaire
(Lion) - contrairement aux rumeurs 3. Au niveau logiciels, c’est finalement la version 10.7 (Lion) qu’il
faudra privilégier.
La configuration du réseau peut se faire graphiquement, aux mêmes emplacements que la configura-
tion IPv4, avec la possibilité de passer la configuration IPv6 en manuelle ou automatique.
Pour désactiver l’IPv6, les versions avant Lion possèdent l’option « Éteint ». Sinon, la commande
suivante est nécessaire :
networksetup -setv6off Ethernet
2 # ou bien
ip6 -x
3.3
Windows
3.3.1
Windows XP
Windows XP avec le service pack 2 (fin 2004) est la première version à supporter une version
incomplète de l’IPv6 (notamment au niveau des tunnels, sur lesquels nous reviendrons), avec le support
de NDP. Par contre il n’est pas activé par défaut, et il n’y a pas de client DHCPv6 6.
Pour activer l’IPv6 :
C:\> ipv6 install
2 Installation en cours...
3 Operation reussie.
Un simple ipconfig permet de valider la présence d’une adresse IPv6, et donc la bonne activation
du protocole. Un ping ::1 permet également cette vérification. Pour pinguer une machine du réseau,
à l’instar de GNU/Linux, il est nécessaire de préciser l’interface à l’aide du symbole pourcent (ping
ipv6_distante%5) si plusieurs cartes possèdent une adresse du même préfixe que l’IP à tester.
Pour afficher la liste des voisins connus, la commande ipv6 nc est disponible.
Pour ajouter une adresse à l’interface 5 :
C:\> ipv6 adu 5/fded:2092:eade:9f07:0:ffff:c0a8:5908
3. Cf. http://seclists.org/nanog/2011/Jul/417. La plupart des sites préviennent que Lion ne propose pas de
DHCPv6 parce que ce choix ne fait pas partie des modes de configuration réseau proposés, comme il l’est en IPv4. Pour
avoir confirmation qu’il est disponible, il suffit de choisir le mode automatique et de brancher un routeur qui stipule dans
ses Router Advertisements qu’il faut utiliser un DHCP. L’expérimentation du DDNS section 8.8 page 116, utilise cette
astuce.
4. http://ipv6int.net/systems/windows_xp-ipv6.html – À noter que Trumpet Winsock 5.0 (l’implémentation
la plus connue à l’époque, de l’API TCP/IP standardisée) supportait déjà l’IPv6 alors qu’elle est apparue sous Windows
95.
5. http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/sag_ip_
v6checklist.mspx?mfr=true
6. Il existe Dibbler, un client DHCPv6 libre qui peut être installé sous XP.
29 / 143
Julien VAUBOURG

link to page 151 Yarding
CHAPITRE 3. COMPATIBILITÉ DES SYSTÈMES
Équipe réseau Lothaire
Pour pinguer une adresse de même préfixe, il faudra préciser l’adresse source pour indiquer l’interface
à utiliser :
C:\> ping6 -s fded:2092:eade:9f07:0:ffff:c0a8:5908 fded:2092:eade:9f07:0:ffff:
c0a8:593d
Une ligne Microsoft TCP/IP version 6 est visible dans la fenêtre des Propriétés de Connexion au
réseau local, mais ne permet pas de configurer les interfaces graphiquement (pas de bouton Propriétés).
3.3.2
Windows Vista / 7
Dès sa sortie en 2006 (pour les entreprises, il faudra attendre un an de plus pour les particuliers),
Vista propose l’IPv6 activé par défaut, qui peut être configuré (ou désactivé) facilement depuis la fenêtre
des paramètres réseaux. Par défaut, c’est l’autoconfiguration stateless avec NDP qui est active, mais un
client DHCPv6 est disponible.
Concernant la configuration en ligne de commande, le commande ipv6 de XP a été remplacée par
netsh interface ipv6.
Par exemple, pour afficher les voisins connus :
C:\> netsh interface ipv6 show neighbors
3.4
Cisco
Un routeur Cisco active automatiquement le support de l’IPv6 dès lors qu’on lui indique une adresse.
La commande ipv6 unicast-routing permet d’autoriser le routage IPv6 entre les interfaces (équiv-
alente à la commande ip routing de l’IPv4). La configuration minimale d’un routeur Cisco sorti d’usine
ressemblera donc à :
Routeur> en
Routeur# conf t
Routeur(config)# ipv6 unicast-routing
Routeur(config)# int fa 0/0
Routeur(config-if)# ipv6 addr 2001:db8:a::1/64
Routeur(config-if)# no shut
Routeur(config-if)# int fa 0/1
Routeur(config-if)# ipv6 addr 2001:db8:b::1/64
Routeur(config-if)# no shut
De manière générale, la commande ipv6 remplace la commande ip, ainsi pour obtenir des IP des
interfaces :
Routeur# sh ipv6 int brief
2 FastEthernet0/0
[up/down]
3
FE80::217:59FF:FE02:8DB8
4
2001:DB8:A::1
30 / 143
Julien VAUBOURG

link to page 47 link to page 47 link to page 53 link to page 53 link to page 45 link to page 45 link to page 151 Yarding
CHAPITRE 3. COMPATIBILITÉ DES SYSTÈMES
Équipe réseau Lothaire
5 FastEthernet0/1
[up/down]
6
FE80::217:59FF:FE02:8DB9
7
2001:DB8:B::1
La liste des routes s’obtient de la même façon qu’en IPv4 (sh ipv6 route). Mais alors qu’en IPv4
tous les administrateurs ont rêvé que IOS adopte la notation CIDR pour les définir, l’IPv6 ne laisse pas
d’autre choix :
Routeur(config)# ipv6 route 2001:db8:c::/64 2001:db8:a::1
Certaines commandes apparaissent avec l’autoconfiguration stateless, et sont regroupées avec le
mot-clé nd (Neighbors Discovery ) au niveau de la configuration des interfaces :
– ipv6 nd dad attempts <0-600> : Force le nombre de tentatives (Neighbor Solicitation) que
doit effectuer une interface avant de conclure qu’une absence de réponse (Neighbor Advertisement)
signifie que l’adresse IP choisie est libre (cf. algorithme DAD section 4.2.3 page 39).
– ipv6 nd managed-config-flag : Positionne le drapeau qui permet d’indiquer dans les Routeur
Advertisement (RA) que les adresses IP doivent se récupérer en DHCP (cf. tableau 4.1 page 45).
– ipv6 nd other-config-flag : Positionne l’autre drapeau des RA, qui permettra de prévenir que
tout ce qui n’est pas adresse IP devra être réclamé au serveur DHCP (DNS, NTP, etc.).
– ipv6 nd prefix X:X:X:X::X/<0-128> : Permet de préciser le préfixe qui sera diffusé dans les
annonces pour l’autoconfiguration stateless des nœuds du réseau (par défaut, c’est le préfixe de
l’adresse de l’interface). Les durées maximales préférées et limites peuvent être ajoutées à la suite.
– ipv6 nd ra interval <4-1800> : Intervalle en secondes entre deux envois de RA non-sollicités
par un nœud.
– ipv6 nd ra suppress : Le routeur n’enverra plus de RA régulièrement, et ne répondra plus aux
Routeur Solicitation. Si un poste est en autoconfiguration stateless uniquement, il ne parviendra
jamais à prendre une adresse IP, en l’absence de préfixe connu (cf. section 4.2 sur l’autoconfiguration
stateless page 37).
Associer une adresse MAC avec une adresse IP ne se fait plus par la table ARP qui disparaît, mais
par la table des voisins (les adresses MAC sont en notation pointée) :
Routeur# sh ipv6 neighbors
2 IPv6 Address
Age Link-layer Addr State Interface
3 FE80::62FB:42FF:FEEF:E11A
0 60fb.42ef.e11a REACH Fa0/0
4 2001:DB8:4503:105:62FB:42FF:FEEF:E11A
0 60fb.42ef.e11a REACH Fa0/0
Ces commandes sont pour IOS, mais peuvent différer pour les autres systèmes de Cisco (par exemple
le neighbor du sh ipv6 neighbor de l’ASA ne prend pas de pluriel).
31 / 143
Julien VAUBOURG

link to page 151 Yarding
CHAPITRE 3. COMPATIBILITÉ DES SYSTÈMES
Équipe réseau Lothaire
32 / 143
Julien VAUBOURG

link to page 41 link to page 41 link to page 41 link to page 42 link to page 41 4
Autoconfiguration et DNS
« On the Internet, nobody knows you’re a dog. » - Peter Steiner
4.1
NDP et la récupération des adresses MAC sans ARP
4.1.1
Généralités
Le protocole ARP est banni de cette nouvelle version d’IP, au profit du protocole NDP (Neighbor
Discovery Protocol, RFC 2461).
Plutôt que d’envoyer un ARP Request à l’ensemble des nœuds, la machine qui cherchera à associer
une adresse MAC à une adresse IP utilisera le multicast pour envoyer en ICMPv6 un Neighbor Solicitation
à une adresse de type solicited-node (figure 4.1 page 33).
104 bits
24 bits
ff02::1:ff00:0
24 derniers bits de l’adresse IPv6 cible
Figure 4.1 – Format d’une adresse multicast solicited-node.
Un exemple est fourni en figure 4.2.
L’adresse cible étant obligatoirement inscrite au groupe multicast correspondant à son adresse solicited-
node 2, elle recevra cette réponse. Elle pourra donc retourner un message ICMPv6 de type Neighbor
1. http://www.unc.edu/depts/jomc/academics/dri/idog.html
2. Parler d’inscription pour une adresse multicast de lien local (ff02:/16) n’est pas tout à fait exact au niveau du
routeur, puisque dans ce cas l’interface se contentera d’écouter les messages sans envoyer de message à celui-ci, qui relaiera
sans se préoccuper de la composition du groupe.

link to page 151 Yarding
CHAPITRE 4. AUTOCONFIGURATION ET DNS
Équipe réseau Lothaire
Figure 4.2 – Conversion d’une adresse IP unicast en adresse multicast solicited-node.
Advertisement, qui permettra au demandeur de déduire l’adresse MAC recherchée de l’adresse source de
la trame et de compléter sa table des neighbors (équivalente à l’ancienne table ARP).
Le gain en terme d’encombrement des interfaces réseaux est providentiel : seules les quelques machines
du lien qui ont en commun leurs 24 derniers bits interpréteront la trame, et seront à même de déterminer
sa pertinence en fonction de l’adresse who-has contenue dans les données.
Puisque les adresses multicast de ce type ne sont pas routables, il convient de se méfier des problèmes
qui peuvent être rencontrés lors du trajet retour. Ce problème n’est pas spécifique à IPv6, puisque les
opérateurs de réseau qui routaient des adresses publiques IPv4 le rencontraient déjà et disposaient plus
ou moins des mêmes solutions. Toutefois, la généralisation des NAT rendait ce problème invisible la
plupart du temps. La nouveauté en IPv6 est donc qu’il se généralise jusqu’à impacter l’utilisateur lambda
derrière son boîtier ADSL.
Ce problème est illustré dans les sections suivantes qui détaillent trois situations possibles, en s’at-
tardant particulièrement sur les requêtes Who has, transportées en multicast via des messages ICMPv6
Neighbor Solicitation.
Le plan d’adressage choisi dans ces exemples est le suivant :
# Préfixe alloué par le responsable de R1
2001:0db8:abcd::/48
# Intercos
2001:0db8:abcd:1000::/52
2001:0db8:abcd:1000::/56
2001:0db8:abcd:1100::/56
2001:0db8:abcd:1200::/56
# Utilisateurs
2001:0db8:abcd:2000::/52
2001:0db8:abcd:2000::/56
2001:0db8:abcd:2100::/56
34 / 143
Julien VAUBOURG

link to page 43 link to page 151 Yarding
CHAPITRE 4. AUTOCONFIGURATION ET DNS
Équipe réseau Lothaire
4.1.2
Avec échanges de routes
En admettant que chaque routeur communique ses routes à celui qui le précède, l’envoi en multicast
d’une requête Who has au poste utilisateur préfixe :2100::20 (U4) ne pose aucun problème puisque
chaque routeur a conscience des sauts nécessaires et adresse donc les trames au routeur suivant plutôt
que de directement chercher à utiliser l’adresse ethernet multicast correspondante.
Comme toutes les interfaces adressées en unicast, la machine U4 écoute en multicast pour le groupe
correspondant à son adresse solicited-node calculée à partir de son adresse IP.
La règle du more specific s’appliquant, R1 utilisera la route Directly connected pour dialoguer avec R2
et considérera qu’il faut utiliser un saut pour toutes les machines hors du sous-réseau lui correspondant.
La figure 4.3 illustre ce cas.
Figure 4.3 – NDP avec diffusion des routes.
35 / 143
Julien VAUBOURG

link to page 44 link to page 44 link to page 151 Yarding
CHAPITRE 4. AUTOCONFIGURATION ET DNS
Équipe réseau Lothaire
4.1.3
Sans échange de routes
Dans le cas d’un FAI grand public positionné en R1, seul le préfixe est alloué et aucune route ne peut
être échangée. Chaque fois que l’utilisateur :2100::20 souhaitera sortir vers Internet, R1 considérera
qu’il est directement dans le même réseau que R2 puisqu’il n’a pas connaissance du redécoupage. Ainsi,
il enverra directement la trame en utilisant l’adresse multicast en version ethernet.
Comme illustré en figure 4.4, puisqu’il s’agit d’un multicast de lien local, il n’y a pas d’inscription au
groupe multicast auprès des routeurs. Ceux-ci communiquent donc les trames quoiqu’il arrive.
Figure 4.4 – NDP sans diffusion des routes.
4.1.4
Sans échange de routes avec proxies NDP
L’utilisation de proxies NDP (RFC 4389 3) permet de contourner le problème de l’absence des routes,
de façon similaire aux proxies ARP qui évitaient les NAT. Le routeur qui aura cette fonction écoutera tous
les paquets en se mettant en mode promiscuous (ou au moins en mode all-multicast), et recevra donc
3. Avec des erreurs non-corrigées documentées ici : http://www.rfc-editor.org/errata_search.php?rfc=4389
36 / 143
Julien VAUBOURG

link to page 45 link to page 45 link to page 151 Yarding
CHAPITRE 4. AUTOCONFIGURATION ET DNS
Équipe réseau Lothaire
la trame émise sur l’adresse ethernet multicast depuis le routeur du FAI, qu’il pourra relayer (figure 4.5
page 37).
Figure 4.5 – NDP sans diffusion des routes, avec l’utilisation d’un proxy.
4.2
Autoconfiguration stateless (SLAAC)
4.2.1
Généralités
Toutes les version récentes des systèmes d’exploitation les plus populaires supportent l’autoconfigu-
ration autonome (RFC 4862), en intégrant un client NDP. La méthode est souvent appelée « autocon-
figuration stateless » ou sans état (ou SLAAC pour Stateless Address AutoConfiguration) en raison de
l’absence de configuration au niveau du système.
La première étape pour une machine qui se configure de cette façon est de déterminer automatique-
ment son adresse IPv6. Elle utilise un préfixe de 64 bits auquel elle colle son adresse MAC (EUI-48)
légèrement adaptée (EUI-64) qui sert d’identifiant d’interface (interface/host ID).
37 / 143
Julien VAUBOURG

link to page 46 link to page 46 link to page 47 link to page 47 link to page 151 Yarding
CHAPITRE 4. AUTOCONFIGURATION ET DNS
Équipe réseau Lothaire
4.2.2
Construction automatique des adresses IP
Construction automatique de l’adresse IP :
1. Ajouter les octets fffe au milieu de l’adresse MAC de l’interface.
2. Positionner le septième bit de la MAC modifiée en partant de la gauche à 1 si l’adresse est unique
(ce qui est le cas pour toutes les adresses MAC par défaut 4) sinon 0.
3. Récupération du préfixe si c’est une adresse globale, sinon utilisation du préfixe d’adresse de lien
local.
4. Concaténation du préfixe avec l’adresse MAC ainsi modifiée.
Le mécanisme est illustré en figure 4.6.
Figure 4.6 – Autoconfiguration d’une adresse IP unicast avec l’autoconfiguration stateless.
Le préfixe global s’obtient en écoutant les diffusions ICMPv6 des Router Advertisement sur le réseau.
En général ce sont les routeurs qui se chargent de diffuser les préfixes toutes les cinq minutes, mais une
machine a la possibilité de réclamer cette diffusion immédiatement en utilisant un message ICMPv6 de
type Router Solicitation à destination de l’adresse all-routers (figure 4.7 page 39).
4. Ce septième bit correspond au bit U/L (Universal/Local ) positionné à 1 si l’adresse n’est pas unique. L’inverse a
été adopté dans cet algorithme pour faciliter l’administration des machines qui sera probablement manuelle si l’adresse
ethernet a été changée manuellement (par exemple, on pourra donc utiliser l’adresse de lien local fe80::1 plutôt que
fe80::200:0:0:1). Si l’adresse MAC est bien formée, il suffira donc de simplement inverser la valeur de ce bit. Si
l’adresse MAC n’est pas unique mais que son bit U/L est mal positionné, l’erreur se propagera dans l’adresse IPv6 calculée
automatiquement.
38 / 143
Julien VAUBOURG

link to page 26 link to page 26 link to page 47 link to page 97 link to page 97 link to page 151 Yarding
CHAPITRE 4. AUTOCONFIGURATION ET DNS
Équipe réseau Lothaire
Figure 4.7 – Diffusion des Router Advertisements.
La RFC 6106 précise que les diffusions des routeurs peuvent diffuser une adresse DNS à utiliser par le
même biais (RDNSS). Une interface configurée de cette façon garde toujours une adresse de lien local.
Pour activer la réception des messages RA des routeurs sous Mac OS avant Lion (ce qui peut aussi
être fait en ajoutant ip6mode=autohost dans /etc/rc.conf ) :
sysctl -w net.inet6.ip6.accept_rtadv=1
4.2.3
Duplicate Address Detection (DAD)
Afin de s’assurer que l’adresse choisie n’existe pas déjà sur le réseau, l’autoconfiguration stateless
utilise le NDP avec des messages ICMPv6, de la même façon qu’il l’utilise pour remplacer l’ARP.
Elle commence par envoyer un message Neighbor Solicitation à l’adresse multicast solicited-node
évoquée dans le tableau 2.2 page 18 (en utilisant l’adresse IP non-spécifiée composée de bits nuls
comme adresse source). Pour pouvoir recevoir une éventuelle réponse, elle s’abonne à l’adresse multicast
all-nodes de diffusion à tous les nœuds (le broadcast n’existant plus en IPv6). Si aucun nœud ne possède
cette adresse, elle n’aura aucune réponse malgré ses essais répétés. Dans le cas contraire, elle recevra un
message Neighbor Advertisement depuis l’IP en question vers l’adresse multicast de diffusion à tous les
nœuds, qui confirmera la présence d’un conflit (illustration d’une collision en figure 4.8).
Figure 4.8 – Détection d’une collision avec l’algorithme DAD.
Une expérimentation de l’attribution automatique des adresses en mode stateless est proposée en
section 8.2 page 89.
39 / 143
Julien VAUBOURG

link to page 47 link to page 47 link to page 151 Yarding
CHAPITRE 4. AUTOCONFIGURATION ET DNS
Équipe réseau Lothaire
4.2.4
Durées de vie
Les messages Router Advertisement qui se chargent de fournir le préfixe à utiliser précisent tou-
jours une durée de vie conseillée (preferred lifetime) et une durée de vie de validité (valid lifetime). Ce
mécanisme remplace la notion de bail mise en œuvre par le DHCP.
La plupart du temps, la durée de vie conseillée n’expirera pas grâce aux annonces régulières des
routeurs. Si ceux-ci ne viennent pas renouveler les baux, une adresse qui dépasse sa durée de vie conseillée
devient dépréciée (deprecated ). Les nouvelles sessions devront éviter ces adresses lors de leur sélection
de l’IP de sortie (cf. règle 3 de l’algorithme décrit dans la section 4.2.3 page 39), et les sessions en cours
continuent de l’utiliser. Dans le cas où c’est la durée de vie limite de validité qui est dépassée, l’adresse
est supprimée de l’interface et toutes les sessions en cours qui l’utilisent sont fermées. Ce comportement
est détaillé dans la RFC 4862.
Pour définir ces deux durées de vie sur un routeur Cisco (1000 secondes pour la durée de vie de
validité et 900 secondes pour la durée de vie conseillée) :
Routeur(config)# ipv6 nd prefix 2001:db8::/64 1000 900
Ces durées de vie peuvent éventuellement être infinies en remplaçant ces deux valeurs par un
infinite.
4.2.5
Problème de vie privée
La RFC 3041 décrit un problème de sécurité lié au calcul des adresses IP vu plus haut. Si une machine
dérive chaque fois son identifiant d’interface depuis son adresse MAC qui reste constante, il devient aisé
de le tracer de réseau en réseau en cherchant les 64 derniers bits identiques et les adresses deviennent
pondérables. Un algorithme de hashage constitue une extension du protocole, pour assurer la préservation
de la vie privée, qui doit prendre certains des mécanismes sus-mentionnés en considération.
Les objectifs de ce hashage sont donc les suivants :
1. Il doit prendre en considération l’algorithme de formation des adresses, c’est à dire conserver intact
le préfixe global récupéré sur le réseau, et appliquer la modification du septième bit à gauche, selon
l’unicité ou non de l’adresse MAC utilisée initialement.
2. Une adresse IP générée en autoconfiguration stateless doit toujours être associée à une date
d’expiration, ce doit donc aussi être le cas pour sa version hashée.
3. Les adresses IP visibles quand la machine communique ne doivent pas être prévisibles, pour éviter
que la procédure de hashage ne soit prédictible et ne permette de tracer la machine.
4. L’identifiant de l’interface doit être utilisé pour chacune des adresses de la machine. Dans le cas
contraire, il faudrait s’abonner à toutes les adresses multicast de type solicited-node (pour recevoir
les Neighbor Solicitation) correspondants à ces identifiants.
L’algorithme de hashage de la RFC suppose que la machine tient à jour une table de valeurs qui
serviront à calculer les prochaines adresses. Afin que la machine puisse être contactée sur le réseau
malgré ses adresses imprédictibles, celle-ci doit conserver son adresse dérivée de sa MAC en clair. Elle
l’utilisera donc pour recevoir les connexions entrantes, et se servira de son équivalent hashé pour sortir.
40 / 143
Julien VAUBOURG

link to page 49 link to page 151 Yarding
CHAPITRE 4. AUTOCONFIGURATION ET DNS
Équipe réseau Lothaire
Les adresses de sortie peuvent être calculée en utilisant les 64 derniers bits du hash MD5 de la dernière
valeur calculée (ou un nombre aléatoire pour la première itération), en tant qu’identifiant d’interface. Le
septième bit en partant de la gauche doit être adapté pour être conforme à la convention. Les 64 derniers
bits du hash MD5 sont stockés en tant que nouvelle valeur, qui servira au prochain calcul d’identifiant.
Cette méthode permet de s’affranchir des performances douteuses de la génération systématique de
nombres aléatoires, en évitant de redemander un aléa à chaque itération et en utilisant à la base l’adresse
MAC censée être unique.
Activer ce mécanisme pour Windows XP SP2/SP3 (pas d’IPv6 avant, et activation par défaut en-
suite) :
C:\> netsh interface ipv6 set privacy state=enabled
Pour les Mac OS compatibles, avant 10.7 (Lion) qui l’active par défaut :
sysctl -w net.inet6.ip6.use_tempaddr=1
Enfin côté GNU/Linux, si ça n’est pas déjà activé :
sysctl net.ipv6.conf.all.use_tempaddr=2
sysctl net.ipv6.conf.default.use_tempaddr=2
3
4 # Relancer l’interface, ou attendre le prochain RA
ifdown eth0
ifup eth0
Pour Windows la modification sera permanente (ajouter store=active pour que ça soit temporaire).
Pour GNU/Linux et Mac OS il faudra utiliser le fichier /etc/sysctl.conf pour garder la modification au
redémarrage.
Une méthode alternative de hashage destinée aux machines qui ne peuvent pas stocker de table de
valeurs peut être employée, mais elle dépasse le cadre de ce document destiné à des machines clientes
standards.
4.2.6
Inconvénients
L’autoconfiguration stateless convient parfaitement aux petits réseaux, qui peuvent ainsi se passer
totalement de configuration de leurs machines pour les faire communiquer entre elles. Toutefois, elle
devient problématique dès lors que le réseau nécessite de pouvoir associer une adresse à une machine. Un
mécanisme de conservation de journaux systèmes pour associer les adresses aléatoires avec les adresses
contenant les adresses MAC en clair anéantirait la possibilité alléchante de se passer des contraintes à
ce niveau, autrefois induites par l’utilisation des NAT.
De plus, l’utilisation d’une adresse aléatoire en sortie ne permet pas de lui associer un champ PTR
systématique au niveau du DNS, ce qui incite certains serveurs exigeants à les considérer plus facilement
comme malveillantes.
Au niveau de la sécurité, laisser les machines s’arranger entre elles n’est pas anodin. De nombreuses
5. https://bugs.launchpad.net/ubuntu/+source/procps/+bug/176125
41 / 143
Julien VAUBOURG

link to page 50 link to page 50 link to page 32 link to page 32 link to page 151 Yarding
CHAPITRE 4. AUTOCONFIGURATION ET DNS
Équipe réseau Lothaire
attaques de type redirectspoofing ou flooding sont décrites dans la RFC 3756, véritable bible du petit
pirate de l’autoconfiguration stateless. Certaines de ces attaques pourraient être évitées en utilisant le
mécanisme SEND (SEcure Neighbor Discovery, RFC 3971/3972), qui impose aux machines de se calculer
des adresses dites CGA (Cryptographically Generated Address) à l’aide de leur adresse calculée en clair
et d’une clé publique (RFC 3972). Ce mécanisme est prévu par les messages de sollicitation et annonces
de voisins, qui peuvent embarquer les clés publiques. Cette solution entache la simplicité de ce type
d’autoconfiguration.
Une solution plus simple que SEND consiste à définir une ACL au niveau du commutateur principal,
qui s’appliquera sur tous les ports sauf ceux légitimes à envoyer des RA (le 137 correspondant aux
Redirect Message qui sont aussi contrôlés au passage) :
Switch(config)# ipv6 access-list RA-snooping
Switch(config-ipv6-acl)# deny icmp any any router-advertisement any
Switch(config-ipv6-acl)# deny icmp any any 137 any
Switch(config-ipv6-acl)# permit ipv6 any any
Toutefois, cette solution ne résout pas tous les problèmes, et nécessite des commutateurs suffisam-
ment évolués pour supporter l’utilisation des ACL.
Pour toutes ces raisons, un réseau qui nécessite une administration massive avec un souci de traçabilité
de l’activité, tend à impliquer de préférer la seconde méthode d’autoconfiguration, plus traditionnelle.
Dans tous les cas, désactiver l’autoconfiguration stateless sur les serveurs et autres machines qui ne sont
pas concernées par ce mode de configuration semble une saine initiative.
Voir également les règles de pare-feu conseillées dans la section 2.9 page 24.
4.2.7
Désactiver
Sous GNU/Linux, l’autoconfiguration stateless peut être désactivée avec les commandes suivantes :
sysctl -w net.ipv6.conf.all.accept_ra_defrtr=0
sysctl -w net.ipv6.conf.default.accept_ra_defrtr=0
sysctl -w net.ipv6.conf.all.autoconf=0
sysctl -w net.ipv6.conf.default.autoconf=0
L’autoconfiguration utilise les Router Advertisements (RA) pour récupérer les paramètres. Cependant,
la version autoconf ne concerne que l’attribution automatique des adresses formées grâce à la distribution
des préfixes. Alors que la version ra se charge spécifiquement de découvrir et positionner toute seule la
route par défaut en trouvant l’adresse de lien local du routeur, avec en plus une route par préfixe trouvée
sur l’ensemble des RA reçus (découverte automatique des passerelles).
Chaque fois qu’un RA est reçu, les temps d’expiration des adresses autoconfigurées sont remis à leur
maximum indiqué par le RA, uniquement pour les préfixes annoncés à ce moment là. Si un préfixe n’est
plus annoncé, il finira par expirer, mais ne sera pas supprimé pour autant au prochain RA.
6. Une vidéo éloquante de l’arrêt d’un Windows avec un simple flood de RA, avec les explications (qui concernent aussi
les *BSD), est disponible ici : http://samsclass.info/ipv6/proj/flood-router6a.htm.
7. Merci à Romain BOISSAT (http://chroot-me.in).
42 / 143
Julien VAUBOURG

link to page 151 Yarding
CHAPITRE 4. AUTOCONFIGURATION ET DNS
Équipe réseau Lothaire
Pour désactiver temporairement les adresses obtenues par autoconfiguration :
ip -6 addr flush dynamic
Deux acteurs externes se font souvent remarquer lorsque l’administrateur souhaite reprendre le con-
trôle complet de ses interfaces :
– Le mDNS : il faut alors stopper le service avahi-daemon.
– Les gestionnaires de réseaux : il faut bien penser à stopper aussi tout ce qui est wicdNetwork-
Manager (pour GNU/Linux), etc. Ces démons ont tendance à supprimer régulièrement tout ce
qu’ils n’ont pas configuré eux-mêmes, sur toutes les interfaces dont ils ont connaissance (ou a min-
ima 
lorsqu’elles sont relancées logiciellement). À noter que certaines versions de NetworkManager
(dans Ubuntu 12.04 par exemple), nécessitent de cocher son option Ignorer les routes obtenues
automatiquement
, sous peine sinon de le voir ajouter une route par destination contactée.
4.3
Autoconfiguration stateful (DHCPv6)
4.3.1
Généralités
Cette méthode d’autoconfiguration utilise un serveur DHCPv6, de façon très similaire au protocole
DHCPv4, moyennant un léger reconditionnement des messages échangés et l’utilisation des adresses
anycast (RFC 3315). Par exemple, pour recenser la liste des serveurs DHCP du réseau, le client enverra
un message de type SOLICIT (correspondant à l’ancien DHCPDISCOVER) à l’adresse anycast du routeur
du sous-réseau (comme indiqué lors de la présentation du type anycast), qui renverra un message de type
ADVERTISE (anciennement DHCPOFFER).
Comme dans sa version 4, le DHCP pourra retourner un domaine ainsi que des adresses DNS. La
mise en place de relais est toujours possible.
Une nouveauté intéressante se situe du côté de la renumérotation des réseaux, qui peut s’avérer
nécessaire dans le cas d’un changement de FAI, par exemple. Le serveur a la possibilité de diffuser en
multicast un message de type RECONFIGURE, qui incitera tous les clients à lui envoyer une réponse
de type RENEW (ou INFORMATION REQUEST, selon la configuration du serveur) pour acquérir les
informations à jour. L’effet du changement est alors immédiat.
Les différents messages utilisés par cette nouvelle version de DHCP sont décrits dans la section
suivante.
4.3.2
Protocole
Les messages DHCP (envoyés en ICMPv6) qui existaient dans DHCPv4 changent de nom (l’ancien
nom est rappelé entre parenthèses), et des nouveautés sont ajoutées :
SOLICIT (DHCPDISCOVER) : Permet au client de faire un appel général sur son réseau pour lo-
caliser les serveurs DHCPv6. Le message est envoyé en multicast à l’adresse ff02::1:2 (RFC
43 / 143
Julien VAUBOURG

link to page 53 link to page 53 link to page 52 link to page 151 Yarding
CHAPITRE 4. AUTOCONFIGURATION ET DNS
Équipe réseau Lothaire
3315).
ADVERTISE (DHCPOFFER) : Réponse des serveurs DHCPv6 aux SOLICIT, en unicast.
REQUEST (DHCPREQUEST) : Utilisé par le client pour demander les paramètres de configuration
au serveur DHCPv6 sélectionné.
CONFIRM : C’est une nouveauté, et elle permet au client de simplement s’assurer auprès du serveur
que son ou ses adresses sont toujours valides.
RENEW (DHCPREQUEST) : Permet au client de demander un prolongement du bail, ou mettre à
jour ses paramètres si ceux-ci ont changés depuis.
REBIND (DHCPREQUEST) : Ce message a la même fonctionnalité que le RENEW, mais il est utilisé
pour interroger en multicast l’ensemble des serveurs DHCPv6, lorsque le serveur DHCP d’origine
ne répond plus.
RELEASE (DHCPRELEASE) : Envoyé par le client au serveur pour indiquer à ce dernier la valeur
des paramètres actuellement utilisés.
DECLINE (DHCPDECLINE) : Permet au client de signifier au serveur que les paramètres transmis
ne peuvent pas être utilisés.
REPLY (DHCPACK et DHCPNACK) : Il s’agit du message contenant la réponse du serveur DHCP
pour les deux types d’interrogations RENEW et REBIND, ou pour confirmer la bonne réception
des deux types de messages précédents.
INFORMATION-REQUEST (DHCPINFORM) : Permet simplement au client de demander de nou-
veaux paramètres de configuration.
RECONFIGURE (DHCPFORCERENEW) : Permet au serveur d’indiquer à ses clients que les paramètres
doivent être actualisés, et qu’il serait bon qu’ils le sollicitent avec un message RENEW ou INFORMATION-
REQUEST
.
RELAY-FORWARD : C’est une seconde nouveauté, et c’est utilisé par les relais pour transmettre à
un serveur (ou un autre relais) le message initial du client, qui sera contenu dans les options.
RELAY-REPLY : Il s’agit du pendant du type précédent, permettant de répondre à la question du
client initial au travers d’un relais.
Concernant les relais DHCPv6 en particulier, le fonctionnement diffère un peu de celui de son ancêtre
(figure 4.9 page 45).
4.3.3
Compatibilité des clients
Contrairement au NDP utilisé par l’autoconfiguration stateless et installé par défaut sur tous les
systèmes récents, le mode stateful nécessite un client DHCP qui n’est pas toujours présent sur les
machines.
Côté Windows, si on exclut la version XP qui ne dispose pas de client par défaut (mais sur lequel on
peut installer un client libre 8), les versions suivantes ne nécessitent pas d’installation supplémentaire.
Des drapeaux M (ManagedFlag ) et O (OtherConfiguration) sont à la disposition de l’administrateur
pour trouver des compromis entre l’autoconfiguration stateless et stateful (qu’on appellera DHCPv6
8. Dibbler : http://klub.com.pl/dhcpv6/#DOWNLOAD
44 / 143
Julien VAUBOURG

link to page 53 link to page 151 Yarding
CHAPITRE 4. AUTOCONFIGURATION ET DNS
Équipe réseau Lothaire
Figure 4.9 – Fonctionnement d’un relais DHCPv6.
stateless, de la RFC 3736) et peuvent être combinés comme indiqué dans le tableau 4.1 (la dernière
configuration est un peu étrange et n’a pas beaucoup d’intérêt).
O
M
SLAAC (avec RDNSS)
DHCPv6
0
0
Gère tout
Désactivé
1
1
Désactivé
Gère tout
1
0
Gère les IP
Gère le reste dont les DNS
0
1
Gère le reste dont les DNS
Gère les IP
Table 4.1 – Signification des drapeaux de répartition des tâches pour l’autoconfiguration.
Ces drapeaux peuvent être positionnés avec la commande suivante (versions supérieures à XP),
managed correspondant au flag M et advertise au flag O :
C:\> netsh interface ipv6 set interface nom_interface managed=enable advertise=
disable
Côté GNU/Linux, le client est disponible directement dans les paquets, et s’appelle en général isc-
dhcp-client (pour la version standard, sinon Dibbler, disponible aussi dans les paquets, semble aussi très
usité) pour les distributions basées sur Debian. La version ISC (Internet Systems Consortium) ne semble
pas permettre d’affiner la configuration des drapeaux comme sous Windows.
La version Dibbler les propose, via le fichier de configuration du client :
1 iface nom_interface {
2
stateless
3
option dns-server
4
option domain
45 / 143
Julien VAUBOURG

link to page 117 link to page 117 link to page 124 link to page 124 link to page 151 Yarding
CHAPITRE 4. AUTOCONFIGURATION ET DNS
Équipe réseau Lothaire
5 }
Une expérimentation du DHCPv6 statique est disponible à la section 8.7 page 109. Le DHCPv6
dynamique est utilisé lors de l’expérimentation de la section 8.8 page 116.
4.3.4
Configuration des serveurs
Le partage entre le SLAAC et le DHCPv6 se fait aussi côté routeur. Pour un routeur Cisco, on utilisera
les options managed-config-flag et other-config-flag :
Routeur(config)# int fa 0/0
Routeur(config-if)# ipv6 nd managed-config-flag
Routeur(config-if)# ipv6 nd other-config-flag
Par exemple, pour déléguer la configuration des adresses au mode stateless mais fournir les serveurs
DNS en DHCPv6 (ce qui semble obligatoire tant que le RDNSS ne sera pas mieux supporté) :
Routeur(config)# ipv6 dhcp pool DNSPool
Routeur(config-dhcp)# dns-server 2001:db8::1
Routeur(config-dhcp)# domain-name u1.example
Routeur(config-dhcp)# int ethernet 0/0
Routeur(config-if)# ipv6 address 2001:db8::1/64
Routeur(config-if)# ipv6 enable
Routeur(config-if)# ipv6 nd other-config-flag
Routeur(config-if)# ipv6 dhcp server DNSPool
La même chose peut-être obtenue en configurant un relais plutôt que de laisser l’infâme DHCP de
l’IOS faire le boulot :
Routeur(config-if)# ipv6 dhcp relay destination 2001:db8::2
Si radvd est utilisé pour le stateless sur un GNU/Linux :
1 interface eth0
2 {
3
AdvManagedFlag off;
4
AdvOtherConfigFlag on;
5 };
Lorsqu’une plage d’IPv6 est indiquée au serveur DHCP pour indiquer les adresses disponibles, il ne
faut pas oublier que ::10 ne suit pas ::9, mais qu’il y a ::a, ::b, ::c, ::d, ::e et ::f entre
les deux.
4.3.5
Adresses statiques (DUID)
Plutôt que d’utiliser systématiquement les adresses MAC pour identifier les machines, le DHCPv6 se
concentre sur les DUID (DHCP Unique Identifier de la section 9 de la RFC 3315).
46 / 143
Julien VAUBOURG

link to page 55 link to page 117 link to page 117 link to page 151 Yarding
CHAPITRE 4. AUTOCONFIGURATION ET DNS
Équipe réseau Lothaire
Les deux principaux types de DUID sont DUID-LL (Link-Layer ) et DUID-LLT (Link-Layer plus Time).
Comme leur nom l’indique, les deux se basent sur l’adresse MAC (dans le cas d’une utilisation d’ethernet)
mais le second ajoute un timestamp dans la construction, comme illustré en figure 4.10.
Figure 4.10 – Confection d’un identifiant DHCP de type DUID.
Le DUID-LLT est celui utilisé par défaut par les clients DHCP de la version ISC. L’identifiant est
calculé une première fois avec le timestamp courant et stocké dans le fichier de baux (/var/lib/dhcp/d-
hclient.leases6 
). Si celui-ci est régénéré pour une raison ou une autre, l’identifiant change, et les tables
d’association DUID-IP sur les serveur DHCP ne sont donc plus valides. Le DUID utilisé par le client est
visible dans les paquets DHCPv6 scannés par les sniffers.
Ainsi, il vaut mieux préférer une version totalement statique (s’il existe déjà, penser à supprimer le
fichier de baux /var/lib/dhcp/dhclient6.leases auparavant, sinon il s’évertuera à utiliser le DUID-LLT
calculé lors des sessions précédentes) :
dhclient -D LL eth0
Cette contrainte complique l’utilisation du DHCP statique en IPv6.
Le DHCPv6 statique ne semble pas encore supporté sur les équipements Cisco, mais est très bien
supporté sur la version serveur de l’ISC. Un exemple de configuration (avec des relais DCHP) est donné
pour l’expérimentation de la mobilité IPv6 en section 8.7 page 109.
4.4
Résolutions DNS
4.4.1
Généralités
Puisque les adresses IPv6 sont quatre fois plus longues que les adresses IPv4, ce sont les champs
DNS AAAA qui contiendront ces adresses. Un même domaine peut faire cohabiter une réponse pour A et
pour AAAA, et ce sont les requêtes qui décideront ce qu’elles demandent.
Exemple de double réponse :
host ipv6actnow.org
2 ipv6actnow.org has address 193.0.19.50
3 ipv6actnow.org has IPv6 address 2001:67c:2e8:11::c100:1332
47 / 143
Julien VAUBOURG

link to page 56 link to page 56 link to page 51 link to page 51 link to page 151 Yarding
CHAPITRE 4. AUTOCONFIGURATION ET DNS
Équipe réseau Lothaire
Exemple de résolution inverse (nouveau domaine ip6.arpa, qui remplace le ip6.int) :
host 2001:67c:2e8:11::c100:1332
2 2.3.3.1.0.0.1.c.0.0.0.0.0.0.0.0.1.1.0.0.8.e.2.0.c.7.6.0.1.0.0.2.ip6.arpa domain
name pointer buzzard.ipv6.ripe.net.
Calculer un PTR avec ipv6calc :
ipv6calc --in ipv6 --out revnibbles.arpa 2001:67c:2e8:11::c100:1332
2 2.3.3.1.0.0.1.c.0.0.0.0.0.0.0.0.1.1.0.0.8.e.2.0.c.7.6.0.1.0.0.2.ip6.arpa.
L’IANA a ajouté des enregistrements AAAA à six root-servers en 2008, rendant possible la résolution
de noms de domaine entièrement en IPv6.
Des enregistrements A6 sont parfois cités dans la littérature. Alors que la documentation de IBM 9
qualifie les AAAA de « Obsolete format of IPv6 address », un mémo 10 (subjectif) sur le site de l’IETF
conseille d’oublier les champs A6 (« move A6 document to historic state »), principalement pour des
raisons de sécurité. Le principal apport des champs A6 consiste à pouvoir fragmenter les requêtes pour
obtenir des fichiers de zones plus simples à gérer (voir le mémo), au détriment de la quantité de travail
pour les resolvers. Le déploiement actuel de l’IPv6 semble de toutes façons avoir largement donné raison
aux « quadras » (AAAA).
4.4.2
DHCPv6
À l’instar de son prédécesseur, le DHCPv6 est habilité à distribuer des adresses de serveurs DNS. Son
fonctionnement est détaillé dans la section 4.3 page 43.
Tous les systèmes ne proposent pas de client DHCPv6 par défaut :
– Des clients DHCPv6 pour GNU/Linux sont disponibles la plupart du temps dans les dépôts officiels :
isc-dhcp-client ou dibbler-client.
– Chez Mac OS X, il est disponible par défaut depuis la version 10.7 (Lion).
– Pour Windows, il est aussi disponible par défaut depuis Vista.
– Enfin pour Cisco le Features Navigator indique qu’il serait disponible depuis la version 15.2(2)S de
IOS.
4.4.3
RDNSS
Les options RNDSS (Recursive DNS Server ) et DNSSL (DNS Search List) sont des ajouts récents
du protocole NDP. La RFC 6106 qui les documente explique que tant que les machines étaient en double
pile, elles pouvaient utiliser les DNS en IPv4. Mais dès lors que la machine est entièrement IPv6, un
DHCPv6 était nécessaire pour diffuser les adresses de DNS, ramenant le protocole NDP au niveau de la
futilité étant donné l’importance de ces adresses pour l’autoconfiguration des postes clients.
9. http://pic.dhe.ibm.com/infocenter/aix/v7r1/index.jsp?topic=%2Fcom.ibm.aix.files%2Fdoc%
2Faixfiles%2Fnamed.conf.htm
10. http://tools.ietf.org/html/draft-ietf-dnsext-aaaa-a6-01
48 / 143
Julien VAUBOURG

link to page 51 link to page 51 link to page 97 link to page 97 link to page 57 link to page 57 link to page 57 link to page 151 Yarding
CHAPITRE 4. AUTOCONFIGURATION ET DNS
Équipe réseau Lothaire
Le RNDSS permet de diffuser les adresses des serveurs de nom de domaine via les annonces de
l’autoconfiguration stateless, tandis que le DNSSL permet de diffuser la liste des suffixes des domaines
à utiliser par défaut sur le réseau.
Puisque ces options sont récentes, elles ne sont pas supportées partout :
– Le monde GNU/Linux semble le plus en avance sur ce point, puisque la plupart des versions récentes
des distributions supportent le RDNSS par défaut.
– Comme pour le client DHCPv6, Mac OS X ne supporte cette option par défaut que depuis la
version 10.7 (Lion).
– Du côté du monde Windows le constat est plus pessimiste puisqu’il n’y a pas de support natif y
compris sur Seven, mais uniquement le logiciel libre rdnssd-win32 à installer.
– Au niveau serveur chez Cisco, cette option n’est pas encore implémentée.
Un serveur DNS récursif est un serveur DNS qui déléguera la question à un autre serveur DNS pour
retransmettre la réponse, lorsqu’il ne la connait pas lui-même. Il s’agit du type de serveur DNS que tous
les clients finaux utilisent, et qui s’oppose aux serveurs DNS uniquement destinés à faire autorité sur un
domaine, sans pour autant être apte à répondre à toutes les requêtes d’une machine (évitant ainsi un
cas fréquent de déni de service). Il s’agit donc du même type d’adresse de serveur DNS qu’un serveur
DHCP est habitué à distribuer.
L’autoconfiguration stateless entièrement en IPv6 n’aura aucun sens tant que cette option ne sera
pas mieux supportée par les systèmes. Des possibilités de mixage de DHCPv6 et RDNSS sont disponibles
dans la section 4.3 page 43. L’expérimentation à la section 8.2 page 89 prouve que le RDNSS est malgré
tout très bien supporté sous GNU/Linux.
4.4.4
mDNS
Le DNS multicast consiste à interroger le réseau plutôt qu’un serveur DNS désigné pour résoudre
des noms de domaine. Ce mécanisme fait partie des outils zéroconf 11. Il n’est pas une nouveauté d’IPv6,
mais peut constituer une piste à explorer pour la distribution des adresses DNS.
Les deux principales spécifications existantes sont LLMNR 12 (Microsoft) et le couple mDNS/DNS-
SD 13 (Apple). Il existe une troisième spécification SLP (Hewlett-Packard) peu utilisée, mais qui a le mérite
d’être la seule à avoir réussi à faire l’objet d’un consensus suffisant pour aboutir sur une normalisation
de l’IETF (RFC 2608 et RFC 3224).
Alors que LLMNR n’est utilisé que sur Windows, mDNS/DNS-SD est largement utilisé sous Mac
OS X avec l’implémentation Bonjour/Rendezvous et est disponible sous GNU/Linux avec Avahi (qui est
activé par défaut dans quasiment toutes les distributions).
L’utilisation classique du mDNS est de rechercher une machine sur le lien local à partir de son nom
plutôt que de son IP, en lui ajoutant le suffixe .local réservé à cet usage. Ainsi, pour une nouvelle
imprimante simplement branchée directement sur une machine ou via un commutateur, l’utilisateur
pourra se contenter de saisir myprinter.local dans son navigateur pour obtenir la page web de son
11. http://www.zeroconf.org
12. RFC informational 4795
13. http://tools.ietf.org/html/draft-cheshire-dnsext-multicastdns-06
49 / 143
Julien VAUBOURG

link to page 27 link to page 27 link to page 58 link to page 59 link to page 124 link to page 124 link to page 151 Yarding
CHAPITRE 4. AUTOCONFIGURATION ET DNS
Équipe réseau Lothaire
nouveau périphérique. Concrètement, en utilisant le suffixe du mDNS, le système a interrogé le réseau
en demandant qui était myprinter à l’adresse multicast ff02::fb, en UDP sur le port 5353. La première
machine à écouter cette adresse de diffusion qui se reconnait et qui répond en unicast, répond à la
question grâce à l’adresse source de sa réponse.
Cette fonctionnalité est disponible par défaut sur quasiment tous les systèmes, qui écoutent donc
tous par défaut l’adresse multicast mDNS (comme en témoigne par exemple la section 2.3.5 page 19 qui
analyse les abonnements par défaut d’une Debian).
Il est possible d’étendre cette fonctionnalité à des résolutions plus larges (récursives) de noms de
domaine, de façon à se passer complètement de serveur DNS. Cette possibilité n’est jamais activée par
défaut puisque c’est un trou de sécurité béant : la première réponse arrivant du réseau fait foi quelque
soit sa provenance (risque de spoofing/fishing ).
À titre de documentation, voici comment activer ce mode de résolution sous Debian 14 (paquet
nss-mdns) :
1. Vérifier que mdns est bien présent sur la ligne hosts de /etc/nsswitch.conf (c’est le cas par défaut).
2. Ajouter search local dans /etc/resolv.conf.
3. Activer la résolution des noms de domaine en multicast, en créant le fichier /etc/mdns.allow avec
simplement le caractère * dedans.
4.4.5
Résolutions inverses des adresses autoconfigurées (DDNS)
Une pratique courante pour lutter contre le spamming ou le flooding consiste à vérifier systéma-
tiquement si l’IP qui cherche à contacter le service (par exemple un SMTP) possède bien un champ
PTR. Certains vont même jusqu’à vérifier ensuite que le domaine retourné correspond bien à l’IP initiale.
Alors que les serveurs sont souvent adressés statiquement, cette problématique se pose surtout pour les
réseaux wifi librement accessibles. Bien que la problématique ne soit pas nouvelle, elle est à nouveau
naturellement amplifiée par l’absence de NAT, qui ne nécessitait que l’enregistrement des quelques IPv4
publiques qui étaient utilisées pour sortir.
En mode stateful (DHCPv6), le DHCP peut communiquer avec un serveur DNS pour ajouter au-
tomatiquement un domaine et un reverse chaque fois qu’une IPv6 est allouée. Comme en IPv4, il s’agit
du DDNS (Dynamic DNS, RFC 2136 et 3007) présenté en figure 4.11.
Une expérimentation est réalisée dans la section 8.8 page 116.
Pour le mode stateless, la même manipulation est réalisable. Mais puisque chaque machine s’attribue
elle-même une adresse IP, elle doit être elle-même autorisée à ajouter dynamiquement des entrées dans le
serveur DNS. Chacune d’entre elle devra donc posséder une clé de chiffrement limitée et référencée auprès
du serveur DNS. La manipulation est donc bien réalisable mais pas vraiment envisageable. Ce nouveau
problème, additionné à celui du RDNSS qui n’est pas encore exploitable, met l’autoconfiguration stateless
dans une situation bien inconfortable face aux DNS.
Citons tout de même quelques projets qui tentent de répondre au problème des PTR automatiques
pour le mode stateless :
14. http://0pointer.de/lennart/projects/nss-mdns/
50 / 143
Julien VAUBOURG

link to page 59 link to page 59 link to page 151 Yarding
CHAPITRE 4. AUTOCONFIGURATION ET DNS
Équipe réseau Lothaire
Figure 4.11 – Injections dynamiques d’enregistrements DNS par le DHCP.
– AllKnowingDNS 15 Propose de répondre à la volée des PTR basées sur les adresses IPv6 de-
mandées, en lui déléguant la zone .ip6.arpa.
– gen6dns 16 Le fonctionnement est plus simple, puisqu’il s’agit d’un utilitaire destiné à générer
directement la base de données du serveur DNS, en créant les PTR de toutes les adresses possibles
pour un préfixe donné.
– RFC 4472 : Commentaires informationnels concernant les problèmes liés aux DNS dans l’utilisation
des IPv6 en production.
15. http://all-knowing-dns.zekjur.net
16. http://www.hznet.de/tools.html
51 / 143
Julien VAUBOURG

link to page 151 Yarding
CHAPITRE 4. AUTOCONFIGURATION ET DNS
Équipe réseau Lothaire
52 / 143
Julien VAUBOURG

link to page 61 link to page 31 link to page 31 5
IPv6 dans un monde IPv4
« We need to be the change we wish to see in the world. » - Gandhi
5.1
Cohabitation (double pile)
Il s’agit de la solution la plus massivement utilisée pour la configuration des machines : le système
gère une double pile (dual-stack), en autorisant les communications IPv4 et IPv6. Tous les systèmes sus-
évoqués qui supportent l’IPv6 implémentent la double pile, qui est active par défaut à partir de l’instant
où au moins une adresse de chaque est renseignée.
Si l’interface doit contacter un hôte en utilisant une IPv4, elle utilisera son IPv4. Si c’est une IPv6,
elle choisira une IPv6 pour sortir. Dans le cas où un nom de domaine est utilisé, si celui-ci ne possède
qu’un champ A elle utilisera son IPv4 et si elle ne possède qu’un AAAA ce sera une IPv6.
Les critères de sélection pour l’IPv6 de sortie sont rappelés dans la section 2.8 page 23. Ces mêmes
critères permettent de définir le choix entre l’IPv4 et l’IPv6 en cas de double réponse du DNS. Certaines
applications comme le navigateur web Safari contournent ces critères en sélectionnant une IP par version
puis en testant celle qui répond le plus rapidement.
Cette solution est simple à mettre en œuvre et convient parfaitement aux particuliers en permettant
de faire cohabiter des applications inaptes à l’IPv6 avec d’autres plus modernes. Dans le cas de l’ad-
ministration d’un parc informatique, cette cohabitation impose de configurer deux fois chaque machine,
d’avoir deux plans d’adressage fonctionnels et de contrôler deux jeux de règles pour le pare-feu. Au niveau
des machines, la double pile entraine tacitement une charge supplémentaire, qui sera particulièrement
lourde lorsqu’une application tentera une connexion en IPv6 qui échouera au bout d’un certain temps,
avant de retenter en IPv4 (la règle sur les systèmes GNU/Linux est en général de toujours préférer la
version IPv6).
1. Dans Arun Gandhi Shares the Mahatma’s Message, Michel W. Potts, India.

link to page 63 link to page 151 Yarding
CHAPITRE 5. IPV6 DANS UN MONDE IPV4
Équipe réseau Lothaire
La numérotation du parc entièrement en IPv6 est tentante, mais ne permettra pas aux utilisateurs de
traverser les océans IPv4 pour atteindre les îles IPv6 (jusqu’au jour où le problème sera inversé), ni de
contacter directement une machine qui ne dispose pas d’une adresse digne de notre nouveau millénaire.
La première partie des solutions présentées ci-dessous expose des solutions pour utiliser de l’IPv6
lorsque les utilisateurs n’ont qu’un accès IPv4 (avec une double pile pour pouvoir utiliser celui-ci). La
seconde partie s’intéresse aux solutions possibles pour passer l’ensemble de son parc en IPv6 sans double
pile, tout en permettant les connexions vers des serveurs IPv4.
5.2
Faire de l’IPv6 sur un réseau IPv4 (protocole 41)
5.2.1
Encapsulation IP
Cette section traite des tunnels avec encapsulation IP utilisant le protocole 41, destiné à faire passer
des paquets IPv6 au-dessus de réseaux entièrement IPv4 (typiquement l’accès à Internet). Les postes
clients doivent être au minimum capables de faire de l’IPv6, et devront disposer d’une double pile s’ils
veulent pouvoir faire de l’IPv4 en même temps.
Au niveau des entêtes IP, le protocole 16 correspond à TCP et le protocole 17 à UDP. L’introduc-
tion d’un nouveau protocole numéroté 41, permet de définir un standard (RFC 2473) qui modifiera le
comportement des routeurs, selon le type de tunnel utilisé.
Le principe de base est le même pour tous : deux réseaux entièrement IPv6 sont reliés par un
réseau IPv4. Le routeur de sortie (R1) du premier réseau encapsule les paquets IPv6 dans des paquets
IPv4 (c’est à dire qu’il ajoute les entêtes IPv4 au début du paquet IPv6, qui se retrouve alors dans sa
zone de données/payload), le paquet transite sans problème au travers des réseaux IPv4, pour enfin
être désencapsulé par le routeur d’entrée (R2) du second réseau IPv6 (suppression des entêtes IPv4) et
transmis tel quel. Un exemple simple est illustré en figure 5.1.
Les extrémités du tunnel peuvent aussi être prises en charge par les pare-feux si ceux-ci le permettent.
L’encapsulation (mise en tunnel) d’un paquet comptant pour un franchissement de routeur, le Hop Limit
est incrémenté de 1. Puisque les paquets ainsi encapsulés ajoutent des octets (entêtes IPv4) aux paquets,
il faudra parfois fragmenter pour respecter la MTU entre les deux routeurs (ou l’augmenter à 1280 quand
c’est possible, au détriment des performances).
Il existe différentes façons d’utiliser ce mécanisme, qui sont détaillées dans les sections suivantes.
5.2.2
Tunnels statiques
Il est possible de créer des tunnels statiques respectant stricto sensu le schéma ci-avant, en configurant
les routeurs à la main.
Les machines U1 et U2 ne connaissent que l’IPv6, le tunnel est totalement transparent pour eux et ne
nécessite aucune configuration à leur niveau. Par contre, si des réécritures interviennent durant le trajet,
54 / 143
Julien VAUBOURG

link to page 63 link to page 99 link to page 99 link to page 151 Yarding
CHAPITRE 5. IPV6 DANS UN MONDE IPV4
Équipe réseau Lothaire
Figure 5.1 – Fonctionnement de base d’un tunnel IPv6 pour l’IPv4.
le transfert peut être difficile, notamment à cause des NAT 2.
Les tunnels statiques de ce type correspondent au cas où il faut relier deux sites IPv6 séparés par un
réseau IPv4. Mais il faudra monter ce type de tunnel manuellement pour chacune des destinations IPv6
à joindre, ce qui est impossible dans le cas du surf web imprédictible d’un des deux utilisateurs. Pour
automatiser la création de ces tunnels, différentes solutions décrites dans la suite sont envisageables.
Une expérimentation mettant en place un tunnel statique est proposée en section 8.3 page 91.
5.2.3
Tunnels 6to4
Afin de permettre la création de ces tunnels à la volée, la RFC 3056 propose d’utiliser un préfixe
standardisé par l’IANA : 2002::/16.
Comme dans l’exemple précédent, les deux routeurs devront posséder une adresse IPv4 publique.
C’est à partir de celle-ci que sera déduit tout le sous-réseau (annoncé par le routeur avec des Router
Advertisements 
ou du DHCPv6) qui se trouvera derrière. Pour se faire, il suffit d’ajouter la valeur en
hexadécimale de cette IP à la suite du préfixe donné par l’IANA. Le résultat sera un préfixe sur 48 bits.
2. Un document de l’IETF de 2003 traite de ce problème en détail :
http://tools.ietf.org/html/draft-palet-v6ops-proto41-nat-03.
55 / 143
Julien VAUBOURG

link to page 32 link to page 32 link to page 65 link to page 65 link to page 151 Yarding
CHAPITRE 5. IPV6 DANS UN MONDE IPV4
Équipe réseau Lothaire
L’outil ipv6calc déjà présenté permet de faire ça facilement (exemple avec l’adresse de R1) :
ipv6calc --in ipv4addr --out ipv6addr --action conv6to4 193.100.0.1
2 2002:c164:1::
L’adresse IPv6 de la machine U1 qui se trouve derrière R1 pourrait donc avoir comme adresse :
2002:c164:1::10/48.
Une autre solution consiste à laisser l’IPv4 sous forme décimale dans l’IPv6 pour laisser le système
calculer lui-même :
ping6 2001:db8:b::193.100.0.1
2 PING 2001:db8:b::193.100.0.1(2001:db8:b::c164:1) 56 data bytes
Dans le cas de la migration d’un parc informatique, plusieurs habitudes se retrouvent souvent :
1. Recopier l’intégralité de l’ancienne IPv4 à la fin de la nouvelle IPv6 : 192.168.1.10 7→ ::c0a8:10a
qui peut aussi être notée ::192.168.1.10, pour les nostalgiques.
2. Reporter le dernier octet de l’ancienne adresse IPv4 à la fin de la nouvelle adresse IPv6 : .10
7→ ::10, ce qui permet de commencer à réellement se détacher de l’ancien modèle IP.
3. Laisser l’autoconfiguration faire son travail, et utiliser les adresses MAC (éventuellement masquées
automatiquement), ce qui semble la façon la plus saine de faire dans un environnement IPv6
(conformément aux bonnes pratiques présentées en section 2.9 page 24).
Grâce au préfixe standardisé et l’intégration de l’adresse publique IPv4 du routeur dans toutes les
adresses au travers du préfixe du réseau généré, deux routeurs qui supportent le 6to4 communiquent
parfaitement entre eux au travers d’un réseau IPv4 (on admet que R1 et R2 sont dans le schéma utilisé
jusqu’à lors sont des routeurs 6to4) :
1. U1 envoie un paquet IPv6 à destination d’une autre adresse en 2002:, qu’il confie donc à sa
passerelle par défaut R1.
2. Puisque l’adresse de destination n’est pas locale, R1 se prépare à envoyer le paquet vers le réseau
mondial.
3. Puisque l’adresse de destination est en 2002:, il en déduit qu’il faut utiliser le mécanisme 6to4
pour envoyer ce paquet sur sa patte IPv4 reliée à Internet.
4. Il commence par extraire l’adresse IPv4 du routeur 6to4 de destination, grâce aux 4 octets suivant
le préfixe de l’IANA.
5. Il encapsule le paquet IPv6 dans un paquet IPv4 en utilisant le protocole 41 présenté ci-dessus, et
l’adresse à l’IPv4 extraite correspondant à R2.
6. R2 reçoit ce paquet, constate qu’il s’agit du protocole 41 et désencapsule donc le paquet IPv6.
7. Par mesure de sécurité, il vérifie si les 4 octets après 2002: de l’IPv6 source correspondent bien à
l’adresse IPv4 source du paquet avant désencapsulation.
8. Si c’est le cas, il transmet le paquet IPv6 tel quel à la machine de destination appartenant à son
réseau.
Un exemple est donné en figure 5.2 page 57.
56 / 143
Julien VAUBOURG

link to page 66 link to page 66 link to page 101 link to page 101 link to page 151 Yarding
CHAPITRE 5. IPV6 DANS UN MONDE IPV4
Équipe réseau Lothaire
Figure 5.2 – Communication d’un nœud 6to4 à un autre.
Ce mécanisme fonctionne parfaitement de routeur 6to4 à routeur 6to4, mais ne permet pas de
contacter une adresse IPv6 qui n’est pas en 2002: et qui ne dispose donc pas d’un tel routeur. Il faudra
alors utiliser des relais 6to4.
Comme illustré en figure 5.3 page 58, ces relais fonctionneront comme de simples passerelles par
défaut à utiliser dans le cas d’une adresse IPv6 qui n’est pas dans le réseau local et qui n’utilise pas le
préfixe 6to4.
Le relais à utiliser peut être défini statiquement au niveau du routeur, ou pointer sur l’adresse anycast
192.88.99.1 (transformée en son équivalent 6to4 2002:c058:6301::) de la RFC 3068 qui chargera le
réseau de trouver le relais le plus proche.
Un relais 6to4 n’annonce que la route 2002::/16 sans la redécouper du côté de l’Internet IPv6,
afin de ne pas polluer les tables de routage IPv6 avec des adresses issues d’adresse IPv4. Puisque le
retour nécessite aussi un relais qui sera choisi d’une façon imprédictible, la route peut être asymétrique
et entraîner des problèmes (notamment pour la traçabilité). De plus, le relais externe peut poser de gros
soucis de sécurité (vie privée comme déni de service).
Si U1 (et U2 dans les exemples précédents) souhaite contacter une machine IPv4, il devra disposer
en plus d’une double pile avec un double adressage de la part du routeur.
Une expérimentation du 6to4 avec un relais est proposée en section 8.4 page 93.
57 / 143
Julien VAUBOURG

link to page 66 link to page 151 Yarding
CHAPITRE 5. IPV6 DANS UN MONDE IPV4
Équipe réseau Lothaire
Figure 5.3 – Communication d’un nœud 6to4 à un nœud IPv6 natif à l’aide d’un relais.
5.2.4
Tunnels 6rd
Le principal problème du 6to4 réside dans l’impossibilité de contrôler les relais qui mènent à l’Internet
IPv6, entraînant des problèmes de stabilité et de sécurité. Le protocole 6rd a été conçu dans le but de
pallier ce problème, en permettant au FAI de gérer ses propres relais dans ses propres domaines.
L’innovation a été conduite par le français Rémi Després, et testé pour la première fois par le FAI
français Free pour proposer des adresses IPv6 à ses abonnés. En cinq semaines, depuis la proposition
de Rémi Desprès à Free jusqu’à l’annonce officielle aux abonnés en passant par toutes les étapes de
décisions hiérarchiques et de marketing, le second plus gros fournisseur d’accès à haut débit français a pu
proposer une connectivité IPv6 totalement transparente pour l’ensemble de ses abonnés. Le succès d’une
telle opération a eu un retentissement mondial et a valu à l’IETF de créer la RFC 5969 qui normalise
le protocole en évoquant « a successful commercial "rapid deployment" of the 6rd mechanism by a
residential service provider 
».
Le 6rd est une application du 6to4, à ces différences près :
– Les préfixes IPv6 utilisés sont issus des préfixes qui appartiennent au FAI, plutôt que des sous-
ensembles du préfixe normalisé 2002::/16 du 6to4.
– Il est donc impossible de différencier du trafic sorti d’un réseau 6rd d’un trafic IPv6 natif (ce qui
vaut à la France d’avoir artificiellement 95% de son trafic IPv6 soit-disant natif, principalement
en provenance de Free).
– Il peut y avoir plusieurs préfixes IPv6 différents, chacun correspondant à un domaine 6rd.
– La taille du préfixe IPv6 est libre.
– La taille allouée à l’adresse IPv4 incorporée est libre aussi : si l’ensemble des adresses IPv4 du
domaine peuvent être agrégées en un sous réseau, le préfixe de celui-ci n’a pas besoin d’être
3. Page 15 de http://meetings.ripe.net/ripe-57/presentations/Colitti-Global_IPv6_statistics_-_
Measuring_the_current_state_of_IPv6_for_ordinary_users_.7gzD.pdf
58 / 143
Julien VAUBOURG

link to page 151 Yarding
CHAPITRE 5. IPV6 DANS UN MONDE IPV4
Équipe réseau Lothaire
renseigné (par exemple, si toutes les adresses appartiennent à 10.0.0.0/8, seuls les 24 derniers
bits sont utiles).
59 / 143
Julien VAUBOURG

link to page 69 link to page 151 Yarding
CHAPITRE 5. IPV6 DANS UN MONDE IPV4
Équipe réseau Lothaire
Ces différences ont fait le succès du 6rd :
– En utilisant ses propres préfixes, le FAI contrôle tous les relais, ce qui annihile la plupart des défauts
du 6to4.
– Les paquets encapsulés étiquetés protocole 41 ne sortent donc pas de l’infrastructure du FAI.
– Ainsi la MTU des paquets IPv4 peut être augmentée (ou celle des IPv6 diminuée) pour empêcher
la fragmentation liée aux doubles entêtes.
– Les relais peuvent être joignables avec des adresses anycast propres au FAI (une par domaine 6rd),
offrant ainsi des possibilités de redondance automatique.
– L’IANA a ajouté une option OPTION_6RD (section 7.1.1 de la RFC 5969) pour configurer au-
tomatiquement un routeur pour un domaine 6rd précis.
– Les routeurs des abonnés peuvent facilement ajouter un support 6to4 (avec des adresses sup-
plémentaires qui utilisent le préfixe 6to4) qui sera utilisé pour contacter toutes les machines en
2002::/16 sans passer par les relais.
Contraintes à respecter :
– La taille du préfixe IPv6 plus le nombre de bits nécessaires pour représenter l’IPv4 incluse ne doit
pas dépasser 64 bits pour permettre l’autoconfiguration à partir des adresses MAC sur les réseaux
des abonnés.
– À cause des adresses anycast utilisées pour les relais, les paquets IPv4 utilisant le protocole 41
ne doivent pas subir de fragmentation (il n’y a pas de garantie que deux relais partageant la
même adresse anycast n’utilisent pas le même identifiant de fragmentation, ce qui entraînerait des
recompositions hasardeuses).
– Il doit y avoir un domaine 6rd (donc un préfixe IPv6) interne si le FAI utilise du NAT en sortie.
Inconvénients :
– Pour respecter la contrainte des 64 bits maximum, les préfixes IPv6 des domaines 6rd doivent être
relativement petits, ce qui implique une consommation assez importante du préfixe total alloué au
FAI (qui peut aussi nécessiter des préfixes pour de l’IPv6 natif).
– Comme pour le 6to4, les adresses IPv4 devraient être fixes pour faciliter la traçabilité.
L’abonné devra bénéficier d’une double pile pour pouvoir continuer à accéder à l’Internet IPv4.
Du côté du FAI, cette solution lui permet de proposer une connectivité IPv6 à ses abonnés en un
temps record, mais ne lui permet pas d’être prêt pour l’avenir : si un sniffer était placé entre le boîtier
ADSL de l’abonné et la prise murale, il n’y verrait pas un seul paquet IPv6, puisque tout est encapsulé
et que le réseau du FAI est resté entièrement en IPv4. Un exemple de communication avec l’extérieur
d’un réseau 6rd est disponible en figure 5.4.
La nouvelle option de DHCPv4 (option-code) OPTION_6rd permet d’ajouter les champs suivants
au annonces DHCP :
IPv4MaskLen : Valeur entre 0 et 32 qui représente le nombre de bits de poids fort qui sont commun
à toutes les IPv4 du domaine 6rd (donc la représentation des IPv4 dans les IPv6 se fera sur 32 -
IPv4MaskLen bits).
60 / 143
Julien VAUBOURG

link to page 104 link to page 104 link to page 69 link to page 70 link to page 70 link to page 70 link to page 70 link to page 151 Yarding
CHAPITRE 5. IPV6 DANS UN MONDE IPV4
Équipe réseau Lothaire
Figure 5.4 – Communication IPv6 via un réseau 6rd.
6rdPrefixLen : Le préfixe IPv6 dédié au domaine 6rd annoncé (32 - IPv4MaskLen + 6rdPrefixLen
doit donc être inférieur ou égal à 128 et idéalement à 64).
6rdBRIPv4Address : Une ou plusieurs adresses IPv4 (éventuellement anycast) qui permettent de con-
tacter les relais pour le domaine 6rd.
Un exemple d’expérimentation du 6rd avec un relais anycast est proposé en section 8.5 page 96.
5.2.5
Tunnels ISATAP
Les tunnels ISATAP (Intra-Site Automatic Tunnel Protcol ) sont destinés à être utilisés à l’intérieur
d’un site, pour relier des machines obligatoirement en double pile au travers d’un tunnel IPv4. Ce sont
les machines qui établissent le tunnel entre elles et non les équipements réseau. Le tunnel utilise un
protocole de couche liaison de données, et permet donc aux machines de se considérer directement sur le
même lien. Ce type de tunnel ne passe pas les NAT, il doivent donc être utilisés soit dans un adressage
entièrement privé (éventuellement avec un VPN) soit dans un adressage entièrement public.
Chaque machine client doit supporter ISATAP, qui est disponible sous Windows (à partir de XP),
GNU/Linux et Cisco mais en version pre-alpha pour Mac OS. Pour ce qui est des téléphones IP,
webcams, imprimantes et autres, l’utilisation de ce genre de tunnel est impossible.
Le protocole (RFC 5214) n’impose pas de préfixe comme c’est le cas pour le 6to4, mais un format
spécifique pour les 8 derniers octets (figure 5.5 page 62).
Les adresses IPv6 contiennent donc les adresses IPv4 des hôtes, ce qui permet de les extraire comme
dans le cas du 6to4. L’algorithme d’extraction est illustré en figure 5.6 page 62.
Le protocole de couche 2 utilisé n’est pas ethernet mais un lien local NBMA NonBroadcast Multiple-
Access (comme pour le 6rd) : le nonbroadcast implique l’inopérance du multicast. Puisque le passage
des paquets sur le réseau se fait intégralement en IPv4, le NDP n’est pas nécessaire pour la résolution
des adresses MAC.
4. http://www.momose.org/macosx/isatap.html
61 / 143
Julien VAUBOURG

link to page 151 Yarding
CHAPITRE 5. IPV6 DANS UN MONDE IPV4
Équipe réseau Lothaire
Figure 5.5 – Confection d’une adresse ISATAP.
Figure 5.6 – Fonctionnement de ISATAP.
La RFC 5214 prévoit également un mécanisme de passerelle ISATAP pour communiquer avec le
monde IPv6 extérieur. Un serveur DNS est utilisé pour gérer la découverte des routeurs ISATAP, ce qui
ressemble à un viol des concepts fondamentaux de conception des réseaux, avec un étrange mélange des
couches.
En fonctionnant ainsi en couche 2 et en n’ayant besoin d’aucune intervention sur les équipements
réseaux (qui doivent tout de même autoriser le transport du protocole 41), ISATAP est un très bon
moyen de virtualiser une connexion ad-hoc en IPv6, entre deux machines séparées par un réseau IPv4
qui supportent le protocole. Passé ce cas d’utilisation, les contraintes imposées et les moyens à déployer
pour faire plus, le laissent sans avenir face au 6to4/6rd.
62 / 143
Julien VAUBOURG

link to page 71 link to page 71 link to page 151 Yarding
CHAPITRE 5. IPV6 DANS UN MONDE IPV4
Équipe réseau Lothaire
5.3
Autres solutions pour faire de l’IPv6 sur un réseau IPv4
5.3.1
Encapsulation UDP pour mieux passer les NAT (Teredo)
Dans le cas de l’utilisation de NAT pour les réseaux IPv4, les tunnels 6to4 et ses dérivés imposent
aux routeurs les gérant d’implémenter directement les fonctionnalités d’encapsulation. D’une manière
générale, tous les routeurs ne proposent pas ces options, et peuvent être une barrière à l’établissement
des tunnels. L’encapsulation UDP (couche 4) plutôt que IP (couche 3) permet non seulement de passer
les NAT facilement, mais aussi les pare-feux qui n’ont plus besoin d’être configurés pour laisser passer le
protocole 41.
Teredo est une solution proposée par Microsoft standardisée par l’IETF avec la RFC 4380, qui utilise
ce type d’encapsulation et qui est disponible sur la plupart des versions des systèmes d’exploitation qui
supportent l’IPv6 (l’avantage d’une solution proposée par Microsoft étant que Windows ne freine pas les
autres systèmes).
Son fonctionnement n’est pas très différent des autres types de tunnels :
– Préfixe IPv6 2001:0000::/32 spécifique à Teredo qui embarque des adresses IPv4.
– Système client/serveur pour communiquer d’une adresse Teredo à l’autre.
– Relais connectés à l’Internet IPv6 à contacter pour sortir.
La première étape pour l’établissement d’un tunnel Teredo est de permettre à la machine de découvrir
le type du NAT derrière lequel elle se trouve (ip1 et p1 sont mappés automatiquement au niveau du NAT
sur des équivalents privés, et chaque envoi en UDP donne lieu à l’établissement de règles dynamiques
de NAT plus ou moins strictes pour permettre au serveur de répondre). Les types de NAT sont détaillés
dans le tableau 5.1.
Type de NAT
Envoi
Conditions de retour
Commentaire
full-cone
ip1:p1 7→ ip2:p2
*:* 7→ ip1:p1
Type de NAT des boîtiers ADSL.
Une ip1 publique différente
symétrique
ip1:p1 7→ ip2:p2
ip2:p2 7→ ip1:p1
pour chaque connexion.
restricted cone
ip1:p1 7→ ip2:p2
ip2:* 7→ ip1:p1
restricted port
ip1:p1 7→ ip2:p2
ip2:p2 7→ ip1:p1
Table 5.1 – Les différents types de NAT (échanges UDP).
Puisque l’UDP donne lieu à la création de règles NAT automatiques, c’est un excellent moyen (appelé
hole punching ) de passer les NAT sans devoir configurer une règle PAT avec un port statique à la main, à
condition que des paquets soient régulièrement envoyés pour maintenir le mappage actif. C’est la raison
pour laquelle les protocoles comme SIP (téléphonie IP) utilisent beaucoup cette technique qui permet
de ne pas contraindre les utilisateurs lambda à devoir aller manipuler leur boîtier ADSL.
Pour déterminer le type de NAT derrière lequel l’utilisateur se trouve, les logiciels clients utilisent un
mécanisme de type STUN (Simple Traversal of UDP through NAT ) simplifié (section 5.2.1 de la RFC
5. http://upload.wikimedia.org/wikipedia/commons/6/63/STUN_Algorithm3.svg
63 / 143
Julien VAUBOURG

link to page 72 link to page 72 link to page 72 link to page 73 link to page 73 link to page 73 link to page 73 link to page 151 Yarding
CHAPITRE 5. IPV6 DANS UN MONDE IPV4
Équipe réseau Lothaire
4380). Il s’agit d’une série de questions-réponses depuis le NAT vers un serveur STUN (dans notre cas,
ce sont les serveurs Teredo qui font office) qui visent à déterminer les restrictions en fonction des paquets
reçus ou non. Les réponses STUN permettent aussi de connaître son IP ainsi que son port public.
À partir des informations déduites des échanges STUN, l’utilisateur est à même de construire son
adresse IPv6 Teredo, en suivant le schéma disponible en figure 5.7 page 64.
Figure 5.7 – Confection d’une adresse Teredo.
Dans le cas d’un NAT full-cone (simplement appelé cone NAT dans la littérature de Microsoft, le
reste étant des restricted NAT), le drapeau permet au relais de savoir qu’il n’a pas besoin de passer
par des échanges avec le serveur pour transmettre son paquet encapsulé (les échanges réguliers du client
avec le serveur permettent de laisser le port UDP mappé - et renseigné dans les adresses - dans le NAT,
et la nature de celui-ci permet à n’importe qui de l’exploiter).
Si un NAT symétrique est détecté, le client Teredo avertit l’utilisateur qu’il ne pourra pas faire de
tunnel Teredo 6.
Enfin, s’il s’agit d’un NAT restricted, le protocole prévoit un échange de paquets bubble en utilisant
le serveur, qui permettront de demander au client d’envoyer un paquet UDP directement au relais. Ainsi,
un nouveau hole punching sera mis en place et le relais pourra déterminer le port à utiliser pour une
communication directe (il devra reconnaitre le client grâce à son adresse IP, ce qui explique pourquoi le
NAT symétrique n’est pas supporté).
Les serveurs Teredo ne sont pas destinés à faire transiter du trafic. Contrairement aux relais, ils ne
sont destinés qu’à recevoir des paquets de taille minimale : ceux permettant de garder le port UDP
mappé, ceux permettant de demander un contact client-relais (paquets bubbles) et ceux destinés à faire
des requêtes de ping vers d’autres hôtes.
Un client Teredo commence par trouver son adresse et initier un tunnel avec le serveur (figure 5.8
page 65). Il pourra ensuite discuter via le tunnel réservé, y compris à travers un NAT restricted (figure 5.9
page 65).
6. Une extension SymTeredo a été proposée pour résoudre ce cas : http://ieeexplore.ieee.org/xpl/freeabs_
all.jsp?reload=true&arnumber=1633339.
64 / 143
Julien VAUBOURG

link to page 73 link to page 73 link to page 151 Yarding
CHAPITRE 5. IPV6 DANS UN MONDE IPV4
Équipe réseau Lothaire
Figure 5.8 – Découverte de l’adresse Teredo et réservation d’un tunnel.
Figure 5.9 – Fonctionnement de Teredo avec un NAT de type restricted.
Explications pour la figure 5.9 page 65 :
1. Le client IPv6 natif envoie son paquet IPv6 à destination du client Teredo en l’adressant à un relais
qui annonce le préfixe Teredo, comme à n’importe quel routeur.
65 / 143
Julien VAUBOURG

link to page 74 link to page 75 link to page 75 link to page 151 Yarding
CHAPITRE 5. IPV6 DANS UN MONDE IPV4
Équipe réseau Lothaire
2. Après une série de vérifications, le relais extrait le drapeau de NAT et conclut qu’il s’agit d’une
machine derrière un NAT restricted (bit à 0). Ne pouvant pas lui transmettre directement le paquet,
il extrait l’adresse de son serveur Teredo associé, et lui envoi un paquet bubble encapsulé dans un
paquet UDP IPv4.
3. Le serveur Teredo se contente de router le paquet, ayant l’autorisation d’utiliser le port UDP
mappé.
4. Le client désencapsule le paquet UDP et trouve un paquet IPv6 bubble : il envoie donc à son tour
un paquet encapsulé de même nature au relais Teredo (dont il détermine l’adresse à partir des
IP sources du premier paquet), créant ainsi une règle dynamique de retour dans le NAT, avec un
nouveau port.
5. Le relais associe la provenance du paquet bubble avec celui qu’il vient d’envoyer grâce à l’IP du
client, et détermine le port à utiliser grâce au port source du paquet qu’il vient de recevoir. Il
peut alors directement transmettre le paquet de l’hôte natif IPv6, via le nouveau port. Il stockera
ces informations dans une table avec un temps d’expiration, pour éviter de redemander un port à
chaque échange.
Les tunnels Teredo sont soumis à de gros problèmes de sécurité 7.
5.3.2
Tunnels brokers
Les tunnels brokers (RFC 3053) proposent une approche différente, en utilisant un tunnel IPv4
permanent, à l’instar d’un VPN. Une fois le client connecté au tunnel server, les échanges en IPv6 se
font au travers de la nouvelle interface virtuelle, qui utilise le mode d’encapsulation qu’elle désire.
Pour enregistrer les nouveaux utilisateurs et leur donner accès aux tunnels servers, des nœuds connus
de type broker sont utilisés. Ceux-ci seront éventuellement payants, et se chargeront en plus d’attribuer
les adresses IPv6 (tirées d’un préfixe lui appartenant, formatées comme bon lui semble) et d’indiquer
au client comment établir le tunnel avec le tunnel server indiqué. Les clients doivent donc posséder le
logiciel spécifique au tunnel broker, qui lui permettra d’établir la liaison avec le tunnel server. Un exemple
est donné en figure 5.10 page 67.
Cette solution très sécurisée (les tunnels peuvent être aussi chiffrés) nécessite plus de ressources que
les autres, et n’est destinée qu’aux particuliers isolés.
Quelques brokers connus :
– SixXS : http://www.sixxs.net.
– Freenet6 : http://go6.net.
– Hurricane Electric : http://tunnelbroker.net.
– BT IPv6 : http://www.ipv6.bt.com.
Plusieurs brokers disposent d’un logiciel client compatible directement dans (par exemple) les dépôts
Debian :
– Paquet aiccu pour SixXS.
7. http://www.symantec.com/avcenter/reference/Teredo_Security.pdf
66 / 143
Julien VAUBOURG

link to page 76 link to page 76 link to page 151 Yarding
CHAPITRE 5. IPV6 DANS UN MONDE IPV4
Équipe réseau Lothaire
Figure 5.10 – Fonctionnement d’un tunnel broker.
– Paquet gogoc (protocole TSP) pour Freenet.
Si cette solution sécurise les échanges, elle n’est pour autant pas garante de la protection de la vie
privée ou de la neutralité du Net, si l’utilisateur utilise un broker qu’il ne contrôle pas.
5.3.3
Sans encapsulation avec le NAT64/DNS64
Ces technologies concernent en général plutôt les réseaux entièrement IPv6, qui ont une connexion
IPv6 à disposition, mais qui souhaitent continuer à pouvoir contacter des IPv4. Toutefois, lorsque le
DNS64 est configuré pour transformer l’intégralité des A en faux AAAA, le réseau n’a plus besoin de la
connectivité IPv4.
La différence fondamentale avec la plupart des technologies présentées ici, est qu’il n’utilise pas
d’encapsulation et ne nécessite que l’utilisation d’un routeur capable de faire du NAT64. Pour plus
d’informations sur ces technologies et l’astuce permettant de se passer de connexion IPv6, se reporter à
la section 5.4.3 page 68.
5.3.4
Serveurs mandataires (proxies)
Passer par une passerelle applicative permet de recevoir des données en IPv4 pour les transmettre
en IPv6 au destinataire final, ou inversement. Cette solution est très simple à mettre en œuvre, mais
n’est disponible que pour un nombre réduit de protocoles habitués à être proxifiés (HTTP, SMTP, POP,
IMAP, FTP, DNS, SIP, etc.).
Les serveurs mandataires ont aussi la fâcheuse tendance à rapidement devenir des goulots d’étran-
glement.
67 / 143
Julien VAUBOURG

link to page 76 link to page 76 link to page 76 link to page 76 link to page 151 Yarding
CHAPITRE 5. IPV6 DANS UN MONDE IPV4
Équipe réseau Lothaire
5.4
Faire de l’IPv4 sur un réseau IPv6
5.4.1
Généralités
Toutes les solutions abordées ci-avant nécessitent une double pile pour faire cohabiter l’IPv4 et l’IPv6.
Cette section présente les solutions pour bénéficier d’un réseau entièrement IPv6 (comme dans un
6to4 sans IPv4), tout en laissant la possibilité aux usagers de contacter des machines restées en IPv4
(sans double pile). Cette façon de faire permet de réellement passer son réseau en IPv6, sans doubler sa
charge de travail en conservant un double adressage avec un double jeu de règles pour le pare-feu, et
sans encapsulation. Il s’agit donc aussi de la meilleure façon de se préparer pour l’avenir.
Ces solutions se basent sur un mécanisme de translation d’adresses.
5.4.2
NAT-PT et NATPT-PT
Ces deux technologies (RFC 2766), souvent reprises dans la littérature, ont été rendues obsolètes par
la RFC 4966 et ne doivent plus être employées.
Elles ne seront pas conséquent plus supportées sur les futurs IOS de Cisco.
Il est remplacé avantageusement par le NAT64.
5.4.3
NAT64 / DNS64
Le NAT64 est l’une des dernières solutions disponible pour traduire des paquets IPv6 en IPv4. Mal-
heureusement, ses spécifications n’ont pas encore été officialisées par l’IETF (RFC PROPOSED STAN-
DARD
). Malgré le retard de la normalisation, des solutions logicielles fonctionnelles sont déjà disponibles.
Le NAT64 utilise le format d’adresses de la RFC 6052 illustré en figure 5.11 page 68, qui décrit
comment transformer une IPv4 en IPv6 en utilisant le préfixe 64:ff9b::/96.
Figure 5.11 – Confection normalisée d’une adresse IPv6 depuis une adresse IPv4.
8. Cf. « Is NAT-PT still supported in IOS (even though it’s deprecated by the IETF) ? » ici : http://www.cisco.
com/web/learning/le21/le39/docs/tdw130_qa.pdf
9. http://blog.ioshints.info/2011/03/nat-pt-is-dead-long-live-nat-64.html
68 / 143
Julien VAUBOURG

link to page 77 link to page 77 link to page 77 link to page 77 link to page 151 Yarding
CHAPITRE 5. IPV6 DANS UN MONDE IPV4
Équipe réseau Lothaire
Ce préfixe étant destiné à être utilisé uniquement à l’intérieur du réseau, il peut être changé par un
préfixe libre, à condition d’ajouter un octet null à partir du bit 64 si le préfixe IPv6 est plus petit que 96
(section 2.3 de la RFC 6052).
Le NAT64 va de paire avec le DNS64, illustré en figure 5.12 page 69. Celui-ci est chargé de résoudre les
noms de domaine comme n’importe quel serveur DNS. Sauf que si la réponse est en IPv4 uniquement,
il transformera cette dernière en IPv6 en respectant un formatage précis. Son ancêtre le NATPT-PT
modifiait les réponses DNS provenant de n’importe quel serveur directement dans les paquets, pour
modifier les A en AAAA, ce qui rendait la solution un peu plus transparente, mais bien plus lourde que le
DNS64.
Figure 5.12 – Fonctionnement d’un DNS64, allié indispensable du NAT64.
La passerelle du réseau IPv6 doit avoir accès un accès à l’Internet IPv4 en plus de l’IPv6, comme
illustré en figure 5.13 page 69.
Figure 5.13 – Fonctionnement du NAT64.
Lorsqu’un paquet est envoyé à destination d’une adresse IPv6 fictive, la passerelle NAT64 se charge
de transformer ce paquet en un paquet IPv4 (sans l’encapsuler) en utilisant l’adresse IPv4 de destination
extraite de l’adresse fictive. Elle utilisera une règle de NAT, comme en NAT44, pour être capable d’associer
les réponses.
69 / 143
Julien VAUBOURG

link to page 78 link to page 78 link to page 78 link to page 78 link to page 78 link to page 78 link to page 151 Yarding
CHAPITRE 5. IPV6 DANS UN MONDE IPV4
Équipe réseau Lothaire
Le NAT64 stateless utilise une plage IPv4 privée interne pour créer ses règles de NAT (ce qui double
les conversions, mais permet de ne pas avoir à stocker l’état des connexions), illustré en figure 5.14
page 70.
Figure 5.14 – Mécanismes internes du NAT64 stateless.
Dans cet exemple, le NAT64 stateless a choisi l’IP 192.168.1.2 parmi les adresses qu’il avait à
disposition et l’a associée de façon unique à l’IPv6.
La version stateful (RFC 6146 et figure 5.15 page 70) associe directement les IPv6 aux IPv4, en
conservant l’état des connexions, comme les NAT/PAT44 habituels.
Figure 5.15 – Mécanismes internes du NAT64 stateful.
Un document intitulé Performance of NAT64 versus NAT44 in the Context of IPv6 Migration 10
propose des tests de performance, notamment entre du NAT64 stateless et du NAT44 classique. Il utilise
les mêmes outils que ceux utilisés dans la partie expérimentations et permet de constater que cette
solution pourrait passer l’échelle aussi bien que du NAT classique. À noter tout de même qu’un NAT44
est ajouté au NAT64 pour la version stateless.
Côté DNS64, le serveur Bind supporte cette fonctionnalité depuis sa version 9.8 11, directement
dans ses options (sinon un autre utilitaire peut être employé, les deux cas étant envisagés dans les
expérimentations) :
10. http://www.iaeng.org/publication/IMECS2012/IMECS2012_pp638-645.pdf
11. Un chapitre est consacré au DNS64 dans l’Oreilly « DNS & BIND on IPv6 » , disponible ici : http://my.
safaribooksonline.com/book/networking/dns/9781449308025/dns64/27.
70 / 143
Julien VAUBOURG

link to page 106 link to page 106 link to page 112 link to page 112 link to page 80 link to page 80 link to page 151 Yarding
CHAPITRE 5. IPV6 DANS UN MONDE IPV4
Équipe réseau Lothaire
1
dns64 64:ff9b::/96 {
2
suffix ::;
3
recursive-only yes;
4
clients { ::1/128; };
5
mapped { !10/8; !172.16/12; !192.168/16; any; };
6
exclude { 64:ff9b::/96; };
7
break-dnssec yes;
8
};
Toutes ces contraintes sont optionnelles :
suffix : Si le préfixe du DNS64 est inférieur à 96, un suffixe peut être utilisé, sinon la contrainte :: est
positionnée par défaut.
recursive-only : Par défaut à no, cette contrainte permet d’indiquer si les transformations s’appliquent
aussi sur les zones du Bind en cours, ou non.
clients : Permet de n’activer la fonctionnalité DNS64 que pour un certain nombre de clients DNS (dans
cet exemple il s’agit du cas où le Bind est installé en local sur la machine utilisateur, et la valeur
par défaut est any).
mapped : Un AAAA modifié ne sera renvoyé que lorsque ces IP seront découvertes dans la version A. Le
point d’exclamation devant les trois plages de l’exemple (correspondant aux IP privées de la RFC
1918) permettent d’exclure des IP avant de toutes les accepter.
exclude : Lorsqu’un AAAA est découvert, il est retourné sans regarder la version A. Sauf pour les adresses
comprises dans les plages de cette contrainte, pour lesquelles ont renverra toujours un AAAA issu
du A (dans l’exemple, on décide de recalculer systématiquement soi même les AAAA lorsqu’il s’agit
manifestement déjà d’un AAAA modifié). C’est cette contrainte, lorsqu’elle a la valeur ::/0, que
le NAT64 peut être utilisé avec une connexion sans accès IPv6.
break-dnssec : Lorsque DNSsec est utilisé, les conversions de A en AAAA ne s’opèrent plus, puisque le
DNS64 qui transmets (forwarder ) va systématiquement casser les vérifications. Ce comportement
peut-être inversé avec cette contrainte.
Si les enregistrements A ont un champ PTR, les AAAA modifiés en auront aussi un automatiquement.
Le serveur DNS64 répondra toujours avec un PTR correspondant à l’IPv6 modifiée, configuré en CNAME
du PTR de l’IPv4.
Le NAT64/DNS64 a été expérimenté en mode stateless en section 8.6.1 page 98 et en mode stateful
à la section 8.6.2 page 104.
5.5
Récapitulatif
Le tableau 5.2 page 72 donne un aperçu de la mise en concurrence des solutions qui sont à disposition
pour faire de l’IPv6 avec ou sans lien IPv6, et en continuant de pouvoir accéder aux services IPv4.
71 / 143
Julien VAUBOURG

link to page 80 link to page 80 link to page 151 Yarding
CHAPITRE 5. IPV6 DANS UN MONDE IPV4
Équipe réseau Lothaire
Solution
Dbl pile
Lien IPv6
Encap.
Config.
Transparent
IP natives
Univ.
6to4
Oui
Oui (relais)
Oui (41)
Réseau
Oui
Non
Oui
6rd
Oui
Oui
Oui (41)
Réseau
Oui
Oui
Oui
NAT64
Non
Oui/Non
Non
Réseau
Oui
Oui
Oui
ISATAP
Oui
Non
Oui (41)
Utilisateur
Non
Oui
Oui
Teredo
Oui
Oui (relais)
Oui (UDP)
Utilisateur
Oui (+NAT)
Non
Oui
Brokers
Oui
Non
Oui (TCP)
Utilisateur
Non
Oui
Oui
Proxies
Non
Oui
Non
Utilisateur
Oui
Oui
Non
Table 5.2 – Comparatif des solutions pour faire cohabiter l’IPv4 et l’IPv6.
Précisions pour le tableau 5.2 page 72 :
– Double pile : Oui s’il faut garder la pile IPv4 pour pouvoir communiquer avec des services IPv4.
– Lien IPv6 : Oui s’il faut que le réseau ait accès à un lien IPv6 à au moins un endroit, pour que la
solution soit mise en place. Lorsque (relais) est indiqué, le lien n’est pas nécessaire si l’administrateur
décide d’utiliser des relais externes. Le NAT64 peut fonctionner de paire avec un lien IPv6, ou s’en
passer totalement.
– Encapsulation : Le type d’encapsulation est indiqué entre parenthèses, s’il y a lieu.
– Configuration Réseau signifie que la configuration se fait au niveau du routeur, que la solution
est accessible à l’ensemble du réseau et que les utilisateurs n’ont pas obligatoirement connaissance
de la solution déployée. Utilisateur signifie que la machine de l’utilisateur doit être configurée (et
compatible) spécifiquement pour cette solution, et qu’elles devront l’être une à une.
– Transparent : Oui si les nœuds qui sont contactés depuis le réseau qui opère la solution n’ont pas
besoin d’avoir connaissance de la solution utilisée (et donc d’être compatibles ou configurés pour).
– IPv6 natives : Oui si les IPv6 de sortie n’utilisent pas un préfixe particulier qui désigne la solution
mise en œuvre.
– Universelle : Oui si la solution fonctionne pour la couche IP sans distinction du type de trafic, non
si elle répond à des besoins applicatifs spécifiques.
5.6
Conclusion
La solution du NAT64 semble la plus optimale en terme de charge de travail pour l’administra-
teur, puisque c’est une solution totalement transparente sans encapsulation, qui concerne tout le réseau
à la fois, et qui ne nécessite pas de double adressage. Le NAT64 pouvant être configuré de façon à ne pas
nécessiter de lien IPv6, il répond à tous les cas d’utilisation. Puisque le réseau sous-jacent ne nécessite
pas de double pile, le réseau peut être entièrement géré en IPv6 et profiter pleinement des nouveautés,
a minima en interne.
Il est donc le meilleur moyen de préparer son réseau pour l’avenir : il pourra commencer sans lien
IPv6, continuer avec un lien IPv6 tout en gardant une compatibilité IPv4, et enfin terminer en remplaçant
la machine du NAT64 par un simple pare-feu, sans quasiment ne faire aucun changement sur le réseau.
72 / 143
Julien VAUBOURG

link to page 19 link to page 19 link to page 151 Yarding
CHAPITRE 5. IPV6 DANS UN MONDE IPV4
Équipe réseau Lothaire
La figure 1.4 présentée dans la section IPv6 day, page 11, indique la régression de l’utilisation des
méthodes alternatives comme le 6to4, au profit d’IPv6 natives (éventuellement en utilisant du 6rd, de
l’ISATAP ou du NAT64).
73 / 143
Julien VAUBOURG

link to page 151 Yarding
CHAPITRE 5. IPV6 DANS UN MONDE IPV4
Équipe réseau Lothaire
74 / 143
Julien VAUBOURG

link to page 83 6
Routage
« Efforts and courage are not enough without purpose and direction. » - John F. Kennedy
6.1
Généralités
Il y a peu de différences entre le routage IPv4 et le routage IPv6, sauf que celui-ci apporte de nouvelles
possibilités en terme de routage dynamique.
Le choix du chemin se fait toujours selon la règle du more longest, c’est à dire la route la plus précise.
Sur du matériel Cisco, le routage entre interfaces s’active pour l’unicast (fonctionnalité de routage
classique) et le multicast (inutile pour les adresses multicast de lien local qui ne sont pas routées) :
Routeur(config)# ipv6 unicast-routing
Routeur(config)# ipv6 multicast-routing
Ce document n’ayant pas pour vocation de former à la création d’un opérateur, la partie concernant
le routage dynamique sera succincte.
6.2
Statique
Aucune différence du côté du routage statique, pour lequel les outils ont tous été adaptés à l’identique.
À noter que la convention voudrait que les routeurs soient toujours indiqués par une adresse de lien local.
Ajouter une route statique avec une route par défaut et afficher la table (Cisco) :
1. http://www.presidency.ucsb.edu/ws/index.php?pid=74076

link to page 84 link to page 84 link to page 151 Yarding
CHAPITRE 6. ROUTAGE
Équipe réseau Lothaire
Routeur(config)# ipv6 route 2001:db8:c::/64 2001:db8:a::1
Routeur(config)# ipv6 route ::/0 2001:db8:c::1
Routeur# sh ipv6 route
Avec un système GNU/Linux :
ip route add 2001:db8:c::/64 2001:db8:a::1
ip route add default via 2001:db8:c::1
ip -6 route
6.3
Dynamique
6.3.1
Correction dynamique des chemins
La principale nouveauté concerne l’élaboration dynamique et participative du chemin le plus court.
Dans une configuration classique, une machine U1 décidera d’envoyer ses paquets à destination de
U2 en passant par sa passerelle par défaut R1, si U2 ne fait partie d’aucun des réseaux auxquels il est
directement relié (figure 6.1 page 76).
Figure 6.1 – Ajout dynamique d’une route plus optimisée.
Mais si R1 décide d’après ses règles de routage de transmettre les paquets à un routeur R2 qui est sur
le même lien (cas illustré par le schéma ci-dessus), la situation révèle que U1 aurait pu les transmettre
directement à R2 sans passer par R1, et donc qu’il lui manque une route.
R1 transmettra les paquets à R2, mais délivrera aussi un message ICMPv6 de type redirect, pour
annoncer la route de R2 à U1. Si celui-ci la prend en compte, les prochains paquets à destination de U2
passeront directement par la nouvelle règle de routage.
76 / 143
Julien VAUBOURG

link to page 1 link to page 86 link to page 86 link to page 85 link to page 85 link to page 85 link to page 85 link to page 151 Yarding
CHAPITRE 6. ROUTAGE
Équipe réseau Lothaire
6.3.2
Protocoles
La plupart des protocoles de routage dynamique ont évolué de façon à s’abstraire de la couche 3,
pour ne pas avoir à différencier un trafic pour IPv4 d’un trafic pour IPv6 :
RIPng : Basée sur le protocole RIPv2 (RFC 2453), la version RIPng (RFC 2080 et 2081) supporte
l’IPv6. Il utilise le port UDP 521 au lieu du port 520, différencie la table de routage IPv4 de la table
IPv6, utilise des adresses de lien local pour le next-hop, transmet les préfixes et met à disposition
l’adresse multicast ff02::9 correspondant à all-RIP-routers. Les authentifications sont basées sur
IPsec.
OSPFv3 : Contrairement à sa version précédente, la version 3 (RFC 5340) est indépendante du protocole
réseau, ce qui lui permet de supporter parfaitement l’IPv6. Le RouterID (sur 32 bits) sert à présent
à identifier directement le routeur, puisque les LSA Router et Network State ne contiennent plus
d’adresses de réseau, et doit donc être fixé manuellement (ou utiliser l’adresse IPv4). Le next-
header 
correspondant à OSPFv6 est 89 et comme RIPng l’authentification profite de la disponibilité
systématique d’IPsec. De la même façon aussi, il utilise de préférence les adresses de lien local.
L’adresse multicast ff02::6 correspond à OSPFv3 AllDR routers.
IS-IS : Contrairement à l’OSPF, IS-IS n’a pas attendu pour opérer en couche 2 puisqu’il observe ce
comportement depuis toujours. Il a donc toujours été opérationnel pour l’IPv6. Seuls trois types
d’information nouveaux sont apparus : IPv6 Reachability TLV pour annoncer les routes avec leur
préfixe et leur métrique, IPv6 Interface Address TLV pour transmettre les adresses de type lien
local et IPv6 NLPID pour annoncer le support de l’IPv6.
BGP4+ : Cette nouvelle version de BGP (RFC 2545) se base sur MBGP (Multiprotocol BGP, RFC
4760) et BGP4 (RFC 4271). Comme pour OSPFv3 le RouterID doit être fixé manuellement ou
utiliser une adresse IPv4.
La figure 6.2 page 78 apporte une représentation graphique des échanges BGP IPv6 entres les AS
enregistrés dans le Looking Glass du Ring (projet de mise à disposition de machines virtuelle au sein
des AS participants, pour permettre aux confrères de résoudre un problème de routage depuis l’intérieur
des AS distants) du NLNog (proposée par Job Snijders et reportée par Jérôme Nicolle sur la liste du
FRnOG).
Elle tend à prouver que l’Internet IPv6 est déjà bien en place et que le réseau est déjà loin de la
chimère qui est parfois dénoncée.
6.4
Préfixe spécial DDoS
La RFC 6666 publiée fin août 2012 prévoit que le préfixe 0100::/64 est désormais réservé à la
redirection du trafic potentiellement lié à un DDoS (Distributed Deny of Service).
3. http://lg.ring.nlnog.net/summary/lg01/ipv6
4. Groupe d’opérateurs réseaux néerlandais : http://nlnog.net.
5. Version haute résolution : http://instituut.net/~job/ring-lg/ipv6-bgp-adjacencies.jpeg (version IPv4 :
http://instituut.net/~job/ring-lg/ipv4-bgp-adjacencies2.png).
6. Merci à Stéphane Bortzmeyer, qui a annoncé la nouvelle sur la liste FRnOG le 21 août, et qui a publié un article sur
son blog, duquel cette section est inspirée : http://www.bortzmeyer.org/6666.html
77 / 143
Julien VAUBOURG

link to page 151 Yarding
CHAPITRE 6. ROUTAGE
Équipe réseau Lothaire
Figure 6.2 – Échanges BGP en IPv6 enregistrés par le Ring du NLNOG.
En cas d’attaque de ce type, une technique couramment utilisée est le RTBH (Remote Triggered
Black Hole, RFC 5635 et 3882), souvent raccourcie en black hole. La victime demande alors à son FAI
de rejeter tous les paquets provenant d’une plage précise d’adresses IP, éventuellement en précisant une
liste de ports. Ce dernier s’exécute en configurant ses règles de routage dynamique, pour rediriger les
paquets incriminés.
Les paquets peuvent être totalement oubliés, ou redirigés dans un tunnel qui aboutira sur un dispositif
d’analyse qui décidera de leur sort. Les adresses utilisées pour la redirection sont parfois des adresses
privées, ou issues de la plage des adresses de documentation. Cette façon de faire n’étant pas satisfaisante,
la nouvelle plage d’IP, désormais réservée, est destinée à servir pour ces redirections.
78 / 143
Julien VAUBOURG

link to page 151 Yarding
CHAPITRE 6. ROUTAGE
Équipe réseau Lothaire
Les adresses IP de la plage 0100::/64 indiquent donc clairement un trafic susceptible de venir d’un
DDoS, et ne doivent pas être routées en dehors de l’infrastructure de l’opérateur, au risque sinon de
propager l’attaque.
79 / 143
Julien VAUBOURG

link to page 151 Yarding
CHAPITRE 6. ROUTAGE
Équipe réseau Lothaire
80 / 143
Julien VAUBOURG

link to page 89 7
Mobilité
« I’m very excited about having the Internet in my den. » - Steve Jobs (1994)
7.1
Généralités
Le concept de mobilité s’applique lorsqu’un mobile (un ordiphone, une tablette, un ordinateur, etc.)
change d’adresse IP en changeant de réseau (wifi, GSM, etc.), tout en souhaitant rester joignable en
permanence via l’adresse connue de son équipement, sur son réseau personnel.
S’il ne change pas d’adresse en changeant de réseau, comme c’est le cas pour le roaming en wifi, le
mécanisme ne concerne pas la couche IP.
Cette notion n’est pas une nouveauté puisqu’elle existait déjà en IPv4 (RFC 2002), dans une version
qui n’était pas très exploitable étant donnée la complexité des réseaux IPv4 constitués de NAT et le
manque d’adresses disponibles. La version IPv6 (RFC 6275) résout ces problèmes, et apporte plus de
légèreté, moins de prérequis et plus de sécurité.
Dans les deux modes existants, le nœud qui souhaite utiliser le service de mobilité possédera deux
adresses :
– home address (HoA) : L’IPv6 de la machine qui est connue de tous, et qui appartient donc au
préfixe du LAN auquel il appartient initialement (maison ou bureau, selon les cas).
– care-of address (CoA) : L’IPv6 de mobilité, qui change selon les réseaux auxquels la machine se
connecte lors de son déplacement, imprévisible.
1. http://the99percent.com/articles/7044/9-Awesome-Interviews-with-Creative-Visionaries

link to page 90 link to page 90 link to page 91 link to page 91 link to page 91 link to page 91 link to page 91 link to page 91 link to page 151 Yarding
CHAPITRE 7. MOBILITÉ
Équipe réseau Lothaire
Nous parlerons, conformément à la littérature, de mobile (mobile node - MN) pour le nœud qui
se déplace, et de correspondant (correspondent node - CN) pour celui qui tente de joindre le mobile.
Lorsqu’il est sur son réseau initial, le routeur qui gère celui-ci est désigné comme home agent (HA) sinon
c’est le routeur d’accès (router access - RA).
7.2
Sans optimisation du chemin (tunnel bidirectionnel)
Ce mode correspond à celui par défaut, puisqu’il ne nécessite pas de configuration du côté du corre-
spondant, qui ignorera totalement les déplacements du mobile. Il tentera donc toujours de le contacter
avec sa home address, comme si le mobile restait en permanence dans son réseau.
Lorsque le mobile est dans son réseau initial (figure 7.1 page 82), le correspondant peut le contacter
normalement en utilisant son adresse connue et en passant par le home agent par les mécanismes de
routage habituels.
Figure 7.1 – Réseau de référence du mobile.
Dès lors que le mobile est en déplacement (figure 7.2 page 83), le correspondant continue de contacter
le home agent pour atteindre le mobile, il faut donc qu’il soit capable de transmettre les paquets à celui-ci
où qu’il soit.
Pour ce faire, dès lors que le mobile acquiert une adresse (par DHCP ou autoconfiguration stateless)
qui ne correspond pas à sa home address, il doit prévenir son home agent de l’endroit où il se situe pour
se faire livrer ses paquets (échanges en IPsec pour éviter les usurpations d’identité), comme illustré en
figure 7.3 page 83.
Ainsi, lorsque le correspondant souhaitera contacter le mobile, le home agent se chargera de trans-
mettre les paquets à l’adresse care-of (qui délivrera ensuite en interne le paquet à l’interface qui a gardé
la home address) reçue dernièrement par le mobile au travers du tunnel établi (figure 7.4 page 83).
Le tunnel étant bidirectionnel, les réponses à destination du correspondant l’emprunteront aussi.
Cette méthode ne nécessite qu’une compatibilité au niveau des équipements du mobile (routeur et
poste utilisateur), mais elle n’est pas optimale en terme de chemins. De plus, l’utilisation d’un tunnel
alourdit le processus et peut poser problème dans le cas d’application sensibles comme la téléphonie.
Pour ces raisons, une seconde méthode existe.
82 / 143
Julien VAUBOURG

link to page 151 Yarding
CHAPITRE 7. MOBILITÉ
Équipe réseau Lothaire
Figure 7.2 – Mobile en déplacement.
Figure 7.3 – Mise à jour de l’adresse care-of du mobile.
Figure 7.4 – Contact du mobile au travers de son home agent.
83 / 143
Julien VAUBOURG

link to page 92 link to page 92 link to page 151 Yarding
CHAPITRE 7. MOBILITÉ
Équipe réseau Lothaire
7.3
Avec optimisation des chemins
Cette méthode permet au correspondant de contacter directement le mobile en ayant connaissance
de son adresse care-of.
Le mobile commence par créer un tunnel avec son home agent de la même façon que dans la premier
mode. Puis, afin d’assurer la sécurité de ce système, le mobile doit avertir le correspondant de son adresse
care-of actuelle en utilisant un mécanisme dédié à cet usage. Le mécanisme est illustré en figure 7.5
page 84.
Figure 7.5 – Mobilité avec optimisation des chemins.
En passant à la fois par le tunnel et le chemin direct, le correspondant peut transmettre des clés qui
permettront de s’assurer que le mobile est bien celui qu’il prétend être. Ainsi, les deux jetons (keygen)
reçus seront utilisés par le mobile pour créer une clé de 20 octets qui servira à chiffrer les messages Binding
Update
. Ils serviront par la suite à indiquer au correspondant un déplacement (et donc une nouvelle
adresse care-of ). Les paquets qui suivront iront directement de la care-of à l’adresse du correspondant
et inversement, sans souffrir de la lourdeur d’un tunnel.
La procédure d’authentification échoue (probablement parce que le correspondant ne supporte pas
les fonctionnalités de mobilité), la communication se fera par le tunnel, dans le mode précédent.
Puisqu’il peut y avoir des paquets perdus le temps de la réception du message Binding Update, un
mécanisme de Fast Handover est décrit dans les RFC 5568 et 4260. Plusieurs home agents peuvent aussi
être utilisés pour assurer sa disponibilité.
7.4
Autres solutions
Deux autres solutions pour faire de la mobilité IPv6 existent, l’une étant de l’ordre de l’optimisation
et l’autre dans un esprit différent :
HMIPv6 : Il s’agit d’une extension (RFC 4140) de la mobilité IPv6 vue plus haut, consistant à imposer
une organisation hiérarchique au moment de la transmission des messages de mise à jour (Binding
Update
). Ainsi, ceux-ci seront systématiquement envoyés à un nouvel élément appelé Mobility
84 / 143
Julien VAUBOURG

link to page 93 link to page 93 link to page 93 link to page 93 link to page 93 link to page 93 link to page 93 link to page 151 Yarding
CHAPITRE 7. MOBILITÉ
Équipe réseau Lothaire
Anchor Point (MAP) qui se chargera la première fois d’en rediffuser à tous les correspondants.
Ces nœuds sont communiqués via les Router Advertisements distribués par le réseau sur lequel se
trouve le mobile. Lorsque le mobile changera de réseau, ce système parie sur le fait qu’il recevra
plusieurs fois le même nœud MAP à proximité, qu’il n’aura alors qu’à prévenir de son changement
de réseau. Du côté des correspondants, ils continuent à communiquer avec le nœud MAP, sans
qu’aucun changement ne leur soit communiqué. Dans ce cas, les messages de mise à jour ne sont
donc envoyés qu’en un seul exemplaire et à un nœud topologiquement proche, plutôt qu’aux n
correspondants éparpillés.
NEMO : Son fonctionnement ressemble beaucoup au premier mode avec le tunnel (la version optimi-
sation de routes n’existe pas encore), mais il concerne le réseau dans son intégralité plutôt que les
postes utilisateurs séparément. Ainsi, c’est le routeur (Mobile Router ) qui se charge du travail, en
diffusant des routes dynamiques. Puisqu’il permet de déplacer un réseau en entier, ce mécanisme
(RFC 3963) permet aussi d’apporter de la mobilité à des postes utilisateurs qui ne le supportent
pas.
7.5
Compatibilité
La plupart des RFC citées ci-dessus sont actuellement marquées PROPOSED STANDARD. Ces
fonctionnalités n’ont donc pas encore fait l’objet d’un intérêt démentiel, et ce retard se retrouve au
niveau des solutions logicielles existantes.
Il fut un temps où le site mobile-ipv6.org était la référence dans ce domaine. Ainsi, la plupart des
documentations s’y référent pour trouver les ressources nécessaires, alors que le site semble avoir disparu
depuis quelques années. On trouve également beaucoup de références au projet Nautilus6 2, qui fut un
groupe de travail sur ces questions jusqu’à 2008, et qui a produit quelques solutions logicielles qui semblent
condamnées à devenir obsolètes. Deux solutions, toutes deux basées sur le projet MIPL (apparemment
autrefois délivré par mobile-ipv6.org ) : l’une supportée par le projet USAGI et l’autre par UMIP.org.
Ces deux solutions semblent être uniquement destinées à GNU/Linux et BSD et permettent à un nœud
de devenir n’importe lequel des composants qui interviennent dans la mobilité. La solution de UMIP.org
semble être la plus à jour et la plus fonctionnelle. À noter que CentOS propose un paquet mipv6-deamon
dans son gestionnaire de paquets.
Du côté de Windows, c’est encore plus drôle : Windows XP et Server 2003 supportaient la mobilité
IPv6 (uniquement pour le mode correspondant 6) mais ils ont jugé que c’était trop compliqué de l’inclure
dans Vista 7. Par conséquent la fonctionnalité semble totalement abandonnée dans les nouvelles versions,
marquant ainsi une régression.
Enfin pour Mac, il ne semble n’y avoir qu’un port de SHISA 8, l’un des projets de Nautilus6 qui semble
à la fois pauvre en fonctionnalités et plus ou moins à l’abandon.
2. http://www.nautilus6.org
3. http://www.linux-ipv6.org
4. http://devjlanza.wordpress.com/2011/09/11/mobile-ipv6-user-space-daemons-in-linux-ubuntu/
5. http://www.microsoft.com/en-us/download/details.aspx?id=10905
6. http://www.seattlepro.com/uw/docs/IPv6/ipv6_faq.htm
7. http://blogs.technet.com/b/ipv6/archive/2007/05/08/mobile-ipv6.aspx
8. http://www.momose.org/macosx/mip6.html
85 / 143
Julien VAUBOURG

link to page 117 link to page 117 link to page 151 Yarding
CHAPITRE 7. MOBILITÉ
Équipe réseau Lothaire
Au niveau des équipements réseaux, le constat est plus encourageant puisque Cisco supporte les
fonctionnalités de home agent sur de nombreux modèles de routeurs.
Une tentative d’expérimentation du premier mode avec un routeur Cisco, un mobile Debian et un
correspondant Mac, est disponible dans la section 8.7 page 109.
86 / 143
Julien VAUBOURG

link to page 95 8
Expérimentations
« Talk is cheap. Show me the code. » - Linus Torvalds (2000)
« I don’t care if it works on your machine ! We are not shipping your machine ! » - Vidiu Platon
8.1
Généralités
Les expérimentations ont été effectuées à l’aide de :
– 1 MacBookPro (U2) : Max OS X Darwin
– 1 PC Dell Latitude E4300 (U1) : GNU/Linux Debian Wheezy i386
– 1 serveur Dell PowerEdge 2950 : GNU/Linux Debian Squeeze i386
– 1 switch Cisco 2960 : C2960 Software (C2960-LANBASE-M), Version 12.2(25)SEE2, RELEASE
SOFTWARE (fc1)
– 1 firewall Cisco ASA 5505 : Cisco Adaptive Security Appliance Software Version 9.0(0)11 (prêté
par Cisco/Axians, en version bêta)
– 2 AP wifi Cisco Aironet 1130AG (autonomes) : C1130 Software (C1130-K9W7-M), Version 12.4(10b)JA3,
RELEASE SOFTWARE (fc1)
– 5 routeurs Cisco 2811 : 2800 Software (C2800NM-ADVIPSERVICESK9-M), Version 12.4(24)T6,
RELEASE SOFTWARE (fc2)
Tous les équipements réseau ont été réinitialisés avant chaque expérimentation.
1. Talkischeap.Showmethecode.

link to page 96 link to page 96 link to page 151 Yarding
CHAPITRE 8. EXPÉRIMENTATIONS
Équipe réseau Lothaire
Les plans d’adressage utilisent les plages d’adresses IP ainsi que les TLD destinés à la documentation :
– RFC 5737 : 192.0.2.0/24 (TEST-NET-1) et 198.51.100.0/24 (TEST-NET-2)
– RFC 3849 : 2001:DB8::/32
– RFC 2606 : .example
Elles sont routables mais ne doivent pas utilisées en production.
Ces plans d’adressage sont conformes aux schémas destinés à expliquer les protocoles, disponibles
dans la section qui leur correspond. Les nuages ont parfois été remplacés par un routeur pour simuler le
réseau Internet. Les adresses n’utilisent jamais les EUI-64 pour une raison de clarté et pour une gestion
manuelle plus aisée.
La photo en figure 8.1 page 88 donne un aperçu de l’installation avec les différents équipements.
Figure 8.1 – Équipements utilisés pour les tests en laboratoire.
88 / 143
Julien VAUBOURG

link to page 97 link to page 97 link to page 151 Yarding
CHAPITRE 8. EXPÉRIMENTATIONS
Équipe réseau Lothaire
8.2
Autoconfiguration stateless (avec DNS) via un routeur GNU/Linux
Introduction
Le DNS n’étant pas prévu initialement pour l’autoconfiguration stateless, celle-ci est souvent décriée
puisqu’elle nécessite dans tous les cas un DHCP pour effectuer cette tâche.
L’objectif est donc de tester les facilités de l’autoconfiguration, en prenant en compte le RDNSS,
qui permet depuis récemment de diffuser des adresses DNS via les Router Advertisements. Une machine
dépourvue de toute configuration réseau particulière devra réussir à parfaitement s’insérer (obtenir une
adresse IP et un serveur DNS) dans un réseau IPv6, sans utiliser de DHCP.
Expérimentation
La machine utilisateur U1 étant une Debian, l’autoconfiguration stateless du poste est activée par
défaut, comme sur la plupart des systèmes.
La topologie et le plan d’adressage sont décrits dans la figure 8.2 page 89.
Figure 8.2 – Installation liée à l’expérimentation de l’autoconfiguration stateless (SLAAC).
Configuration du routeur R1 :
R1# apt-get install radvd
Configuration de Radvd (/etc/radvd.conf ) :
1 interface eth0
2 {
3
AdvSendAdvert on;
4
prefix 2001:db8::/64
5
{
6
};
7
RDNSS 2001:db8::9
89 / 143
Julien VAUBOURG

link to page 151 Yarding
CHAPITRE 8. EXPÉRIMENTATIONS
Équipe réseau Lothaire
8
{
9
};
10 };
Configuration de l’utilisateur U1 :
U1# apt-get install rdnssd
Patienter 10 minutes (par défaut le MaxRtrAdvInterval de Radvd est positionné à 600 secondes), ou
relancer l’interface réseau.
Nouvelle adresse IPv6 :
U1# ip -6 addr show dev eth0
2 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
3
inet6 2001:db8:0:0:221:70ff:feec:b49c/64 scope global dynamic
4
valid_lft 86336sec preferred_lft 14336sec
5
inet6 fe80::221:70ff:feec:b49c/64 scope link
6
valid_lft forever preferred_lft forever
Nouveau serveur DNS :
U1# cat /etc/resolv.conf
2 nameserver 2001:db8::9
Si d’autres serveurs étaient déjà configurés, il n’auront pas été écrasés.
Conclusion
Afin de diversifier les tests, mais aussi parce que Cisco ne semble pas du tout supporter le RDNSS,
une machine GNU/Linux a été utilisée en tant que routeur. Malheureusement, cette option essentielle
est encore trop récente pour pouvoir l’exploiter sur du matériel réseau classique, et continue donc de
condamner ce mode d’autoconfiguration.
Du côté des clients, GNU/Linux semble aussi plus ou moins le seul à être en avance et à supporter
parfaitement cette option. L’attribution des IP quant à elle, ne pose aucun problème, quelque soit les
postes utilisateurs supportant l’IPv6 ou le matériel réseau.
Bien que l’option n’ait pas été exploitée dans cette expérimentation, Radvd supporte aussi le DNSSL
depuis sa version 1.8 :
1 interface eth0 {
2
...
3
DNSSL lan.local { };
4 }
90 / 143
Julien VAUBOURG

link to page 99 link to page 99 link to page 151 Yarding
CHAPITRE 8. EXPÉRIMENTATIONS
Équipe réseau Lothaire
8.3
Tunnel statique
Introduction
L’objectif de cette expérimentation consiste à tester la faisabilité de la création d’un tunnel statique
IPv6 entre deux routeurs Cisco. Le tunnel devra faire permettre de faire communiquer deux réseaux
IPv6 entre eux, en passant par un routeur qui ne supporte que l’IPv4 et qui ne doit pas nécessiter de
configuration particulière.
Cette expérimentation permettra de comprendre le concept de la tunnelisation IPv6 over IPv4, pour
tester ensuite les tunnels dynamiques avec le 6to4 ou le 6rd.
Expérimentation
La topologie et le plan d’adressage sont décrits dans la figure 8.3 page 91.
Figure 8.3 – Installation liée à l’expérimentation des tunnels statiques.
Configuration du routeur R1 :
R1> en
R1# conf t
R1(config)# int fa 0/1
R1(config-if)# ipv6 addr 2001:db8:a::1/64
R1(config-if)# no shut
R1(config-if)# int fa 0/0
R1(config-if)# ip addr 192.0.2.1 255.255.255.0
R1(config-if)# no shut
R1(config-if)# int tunnel 0
10 R1(config-if)# ipv6 addr 2001:db8:c::1/64
11 R1(config-if)# tunnel mode ipv6ip
12 R1(config-if)# tunnel source 192.0.2.1
13 R1(config-if)# tunnel dest 198.51.100.2
14 R1(config-if)# exit
91 / 143
Julien VAUBOURG

link to page 151 Yarding
CHAPITRE 8. EXPÉRIMENTATIONS
Équipe réseau Lothaire
15 R1(config)# ipv6 unicast-routing
16 R1(config)# ip route 0.0.0.0 0.0.0.0 192.0.2.2
17 R1(config)# ipv6 route ::/0 Tunnel 0
Configuration du routeur INT4 :
INT4> en
INT4# conf t
INT4(config)# int fa 0/0
INT4(config-if)# ip addr 192.0.2.2 255.255.255.0
INT4(config-if)# no shut
INT4(config-if)# int fa 0/1
INT4(config-if)# ip addr 198.51.100.1 255.255.255.0
INT4(config-if)# no shut
INT4(config-if)# exit
10 INT4(config)# ip routing
Configuration du routeur R2 :
R2> en
R2# conf t
R2(config)# int fa 0/1
R2(config-if)# ip addr 192.51.100.2 255.255.255.0
R2(config-if)# no shut
R2(config-if)# int fa 0/0
R2(config-if)# ipv6 addr 2001:db8:b::1/64
R2(config-if)# no shut
R2(config-if)# int tunnel 0
10 R2(config-if)# ipv6 addr 2001:db8:c::2/64
11 R2(config-if)# tunnel mode ipv6ip
12 R2(config-if)# tunnel source 198.51.100.2
13 R2(config-if)# tunnel dest 192.0.2.1
14 R2(config-if)# exit
15 R2(config)# ipv6 unicast-routing
16 R2(config)# ipv6 route ::/0 Tunnel 0
Configuration de l’utilisateur U1 :
U1# ip a a 2001:db8:a::10 dev eth0
Configuration de l’utilisateur U2 :
U2# ip a a 2001:db8:b::10 dev eth0
Vérification du tunnel sur R1 :
R1# sh ipv6 int brief
2 [...]
3 Tunnel0
[up/up]
Test de U1 à U2 :
92 / 143
Julien VAUBOURG

link to page 101 link to page 101 link to page 151 Yarding
CHAPITRE 8. EXPÉRIMENTATIONS
Équipe réseau Lothaire
U1$ ping6 fc00::2:2
2 PING fc00::2:2(fc00::2:2) 56 data bytes
3 64 bytes from fc00::2:2: icmp_seq=1 ttl=62 time=2.61 ms
4 64 bytes from fc00::2:2: icmp_seq=2 ttl=62 time=2.69 ms
5 64 bytes from fc00::2:2: icmp_seq=3 ttl=62 time=2.52 ms
Conclusion
En prenant la peine de configurer les deux routeurs aux extrémités des réseaux IPv6, la création du
tunnel ne pose aucun problème, et permet de faire passer facilement de l’IPv6 au travers d’un réseau
IPv4.
Un complément intéressant serait de tester avec des équipements de pare-feu dotés d’une configura-
tion classique, pour constater les éventuels problèmes liés au protocole 41.
8.4
Tunnel 6to4 avec un relais
Introduction
L’expérimentation suivante vise à tester le bon fonctionnement et la facilité d’installation d’un relais
6to4. Deux réseaux uniquement IPv6 devront réussir à communiquer entre eux au travers d’un réseau
qui ne gère que l’IPv4 et qui ne devra pas nécessiter de configuration spécifique.
Contrairement au tunnel statique, le routeur à l’extrémité de la machine à contacter ne doit pas
nécessiter de configuration particulière. Un relais 6to4 doit donc être installé à l’intersection entre un
routeur qui ne gère que l’IPv4 et un autre qui ne gère que l’IPv6. L’expérimentation visera également à
tester l’adresse anycast normalisée pour ce type d’équipement.
Expérimentation
La topologie et le plan d’adressage sont décrits dans la figure 8.4 page 93.
Figure 8.4 – Installation liée à l’expérimentation du 6to4.
93 / 143
Julien VAUBOURG

link to page 151 Yarding
CHAPITRE 8. EXPÉRIMENTATIONS
Équipe réseau Lothaire
Configuration du routeur R1 :
R1> en
R1# conf t
R1(config)# int fa 0/1
R1(config-if)# ipv6 addr 2002:c000:201::1/64
R1(config-if)# no shut
R1(config-if)# int fa 0/0
R1(config-if)# ip addr 192.0.2.1 255.255.255.0
R1(config-if)# no shut
R1(config-if)# int tunnel 0
10 R1(config-if)# ipv6 addr 2002:c000:201:1::1/64
11 R1(config-if)# tunnel source fa 0/0
12 R1(config-if)# tunnel mode ipv6ip 6to4
13 R1(config-if)# exit
14 R1(config)# ipv6 unicast-routing
15 R1(config)# ipv6 route 2002::/16 tunnel 0
16 R1(config)# ipv6 route ::/0 2002:c633:6402::1
Configuration du routeur INT4 :
INT4> en
INT4# conf t
INT4(config)# int fa 0/0
INT4(config-if)# ip addr 192.0.2.2 255.255.255.0
INT4(config-if)# no shut
INT4(config-if)# int fa 0/1
INT4(config-if)# ip addr 198.51.100.1 255.255.255.0
INT4(config-if)# no shut
INT4(config-if)# exit
10 INT4(config)# ip routing
Configuration du routeur RR :
RR> en
RR# conf t
RR(config)# int fa 0/1
RR(config-if)# ip addr 198.51.100.2 255.255.255.0
RR(config-if)# no shut
RR(config-if)# int fa 0/0
RR(config-if)# ipv6 addr 2001:db8:a::1/64
RR(config-if)# no shut
RR(config-if)# int tunnel 0
10 RR(config-if)# ipv6 addr 2002:c633:6402::1/64
11 RR(config-if)# tunnel source fa 0/1
12 RR(config-if)# tunnel mode ipv6ip 6to4
13 RR(config-if)# exit
14 RR(config)# ipv6 unicast-routing
15 RR(config)# ipv6 route 2002::/16 tunnel 0
16 RR(config)# ipv6 route ::/0 2001:db8:a::2
94 / 143
Julien VAUBOURG

link to page 151 Yarding
CHAPITRE 8. EXPÉRIMENTATIONS
Équipe réseau Lothaire
Contrairement aux tunnels statiques, il n’y a pas de tunnel destination, l’adresse étant déduite
de l’IPv6 vers laquelle le paquet sera transmis.
Configuration du routeur INT6 :
RR> en
RR# conf t
RR(config)# int fa 0/0
RR(config-if)# ipv6 addr 2001:db8:a::2/64
RR(config-if)# no shut
RR(config-if)# int fa 0/1
RR(config-if)# ipv6 addr 2001:db8:b::1/64
RR(config-if)# no shut
RR(config-if)# exit
10 RR(config)# ipv6 unicast-routing
11 RR(config)# ipv6 route 2002::/16 2001:db8:a::1
12 RR(config)# ipv6 route ::/0 2001:db8:b::2
Configuration du routeur R2 :
R2> en
R2# conf t
R2(config)# int fa 0/1
R2(config-if)# ipv6 addr 2001:db8:b::2/64
R2(config-if)# no shut
R2(config-if)# int fa 0/0
R2(config-if)# ipv6 addr 2001:db8:c::1/64
R2(config-if)# no shut
R2(config-if)# exit
10 R2(config)# ipv6 unicast-routing
11 R2(config)# ipv6 route ::/0 2001:db8:b::1
Configuration de l’utilisateur U1 :
U1# ip a a 2002:c000:201::10/64 dev eth0
U1# ip -6 r a default via 2002:c000:201::1/64 dev eth0
Configuration de l’utilisateur U2 :
U2# ip a a 2001:db8:c::10/64 dev eth0
U2# ip -6 r a default via 2001:db8:c::1/64 dev eth0
Test de U1 à U2 :
U1$ ping6 2001:db8:c::10
2 PING 2001:db8:c::10(2001:db8:c::10) 56 data bytes
3 64 bytes from 2001:db8:c::10: icmp_seq=1 ttl=60 time=214 ms
4 64 bytes from 2001:db8:c::10: icmp_seq=2 ttl=60 time=3.83 ms
5 64 bytes from 2001:db8:c::10: icmp_seq=3 ttl=60 time=3.92 ms
Le routeur relais étant destiné à annoncer des routes en 2002::/16 (et qui ne peuvent être réduites),
il devrait rejoindre les autres routeurs relais en utilisant l’adresse anycast appropriée.
95 / 143
Julien VAUBOURG

link to page 151 Yarding
CHAPITRE 8. EXPÉRIMENTATIONS
Équipe réseau Lothaire
Modification de RR pour lui attribuer l’adresse anycast normalisée en IPv4 (ainsi que son équivalent
IPv6) :
RR(config)# int fa 0/1
RR(config-if)# no ip addr
RR(config-if)# ip addr 192.88.99.1 255.255.255.0
RR(config-if)# int tunnel 0
RR(config-if)# no ipv6 addr
RR(config-if)# ipv6 addr 2002:c058:6301::/48
7 %Tunnel0: Warning: 2002:C058:6301::/48 is a Subnet Router Anycast
Modification de INT4 pour lui ajouter une route IPv4 par défaut (RR n’appartient plus au même
sous-réseau que lui) :
INT4(config)# ip route 0.0.0.0 0.0.0.0 fa 0/1
Modification de R1 pour qu’il contacte l’adresse anycast des relais 6to4 (s’il recevait des routes
dynamiquement, ce ne serait donc pas obligatoirement le nôtre) :
R1(config)# no ipv6 route ::/0
R1(config)# ipv6 route ::/0 2002:c058:6301::
Nouveau test de U1 à U2 :
U1$ ping6 2001:db8:c::10
2 PING 2001:db8:c::10(2001:db8:c::10) 56 data bytes
3 64 bytes from 2001:db8:c::10: icmp_seq=3 ttl=60 time=3.84 ms
4 64 bytes from 2001:db8:c::10: icmp_seq=4 ttl=60 time=3.84 ms
5 64 bytes from 2001:db8:c::10: icmp_seq=5 ttl=60 time=3.88 ms
Conclusion
Un équipement peu coûteux comme un routeur Cisco 2800 permet de facilement mettre en place un
routeur 6to4 avec un relais vers un réseau IPv6 natif.
L’adresse anycast ne pose aucun problème, et la machine U1 a pu contacter U2, sans que celle-ci ait
connaissance de l’incapacité du réseau du U1 à communiquer en IPv6.
8.5
Tunnel 6rd avec relais
Introduction
Les tunnels 6rd sont proches des tunnels 6to4, mais nécessitent des configurations particulières,
comme la diffusion des préfixes personnalisés ou le nombre de bits utiles pour représenter les adresses
IPv4.
L’absence de maîtrise des relais 6to4 posant beaucoup de problème, l’objectif est de constater si
son successeur est aussi simple à mettre en place, en permettant à deux machines de communiquer de
96 / 143
Julien VAUBOURG

link to page 105 link to page 105 link to page 105 link to page 151 Yarding
CHAPITRE 8. EXPÉRIMENTATIONS
Équipe réseau Lothaire
la même façon que pour le 6to4. Une machine dans le domaine 6rd est ajoutée pour vérifier que la
configuration permet aussi de ne pas passer par le relais.
Expérimentation
La topologie et le plan d’adressage sont décrits dans la figure 8.5 page 97.
Figure 8.5 – Installation liée à l’expérimentation du 6rd.
Remarques :
– Pour simplifier la compréhension (et limiter le nombre de machines à utiliser), les réseaux Internet
n’ont pas été simulés.
– On considère que les préfixes 2001:db8::/32 et 192.0.2.1/24 ont été alloués au FAI.
– Contrairement au 6to4, une machine a été ajoutée pour tester les connexions au sein du domaine.
Après avoir mis en place la topologie conçue, un problème de version des IOS s’est posé : contrairement
au 6to4, le 6rd est encore trop récent et trop destiné à de gros matériels situés en cœur de réseau. Cette
technologie n’est donc pas disponible sur les machines qui sont à disposition pour ces expérimentations.
Pour connaître la liste des plate-formes supportées, se reporter au Cisco Features Navigator 2.
Voici la configuration du tunnel pour R1, correspondant à la conception (non-testée) :
R1> en
R1# conf t
R1(config)# int tunnel 0
R1(config-if)# tunnel source 192.0.2.1
2. http://tools.cisco.com/ITDIT/CFN/jsp/by-feature.jsp (By feature > Search for 6rd > IP Tunneling - 6RD
IPv6 Rapid Deployment > Add > Continue > Platform).
97 / 143
Julien VAUBOURG

link to page 107 link to page 107 link to page 151 Yarding
CHAPITRE 8. EXPÉRIMENTATIONS
Équipe réseau Lothaire
R1(config-if)# tunnel mode ipv6ip 6rd
R1(config-if)# tunnel 6rd prefix 2001:db8:a::/48
R1(config-if)# tunnel 6rd ipv4 prefix-length 24
R1(config-if)# exit
R1(config)# ipv6 route 2001:db8:a::/48 Tunnel 0
10 R1(config)# ipv6 route ::/0 2001:db8:a:2::
Explications :
– On considère que le sous-réseau 2001:db8:a::/48 a été retenu par le FAI pour servir dans son
domaine 6rd.
– Puisque toutes ses adresses IPv4 partagent le préfixe 192.0.2.0/24, il n’a besoin que du dernier
octet pour les différencier.
– Contrairement au 6to4, les adresses IPv6 des tunnels ne sont plus explicitement précisées et la
destination est une adresse anycast du domaine.
Conclusion
Cette technologie est malheureusement encore trop récente, et destinée aux équipement très fortement
orientés fournisseur d’accès à Internet. Les rares modèles Cisco sur lesquels elle est supportée n’étant pas
accessibles financièrement, l’expérimentation n’a pas pu aboutir.
Les recherches effectuées semblent toutefois indiquer que les possibilités de personnalisation sont
complètes.
8.6
Translations d’adresses avec un NAT64/DNS64
Introduction
Deux expérimentations sont réalisées pour le NAT64/DNS64 : en mode stateless et en mode state-
ful. L’objectif est d’évaluer la faisabilité de chacun avec les équipements disponibles, et comparer les
contraintes liées aux deux modes.
Un réseau uniquement IPv6 devra réussir à communiquer avec un réseau entièrement IPv4, sans
utiliser de tunnels et ainsi s’affranchir de ses contraintes. Les machines dans le réseau de provenance
devront faire résoudre leurs requêtes DNS par un serveur DNS64. Les faux AAAA générés par celui-ci
devront utiliser le préfixe prévu par la norme.
8.6.1
Stateless
Cette expérimentation utilise une machine GNU/Linux en l’absence de matériel réseau compatible.
La topologie et le plan d’adressage sont décrits dans la figure 8.6 page 99.
98 / 143
Julien VAUBOURG

link to page 76 link to page 76 link to page 151 Yarding
CHAPITRE 8. EXPÉRIMENTATIONS
Équipe réseau Lothaire
Figure 8.6 – Installation liée à l’expérimentation du NAT64 stateless.
Le DNS64, le NAT64 et le serveur DNS ont été installés sur une même machine (dans un cas réel,
au moins le serveur DNS serait externe), et le réseau Internet des schémas de la section 5.4.3 page 5.4.3
a été remplacé par un simple commutateur pour ne pas compliquer les configurations de tests.
Le serveur de passerelle (R1 ) utilise trois logiciels différents :
– bind9 : Répond aux requêtes DNS, en utilisant une base de données qui sera créée pour l’expéri-
mentation.
– totd : Écoute sur le port 53 de la machine et sert de serveur DNS pour l’utilisateur U1. Il transmet
toutes les requêtes DNS au vrai serveur DNS pour obtenir le A et/ou le AAAA correspondant à
la question. S’il parvient à récupérer un AAAA, il transmet la réponse directement à U1, sinon il
transforme le A en AAAA en injectant l’adresse IPv4 dans une adresse IPv6 du préfixe 64:ff9b::/96
avant de répondre. Bind peut directement assurer cette fonction s’il est à une version égale ou
supérieure à la 9.8. Les deux versions seront expérimentées.
– tayga : Assure les fonctionnalités de NAT64 en créant une nouvelle interface qui servira de tunnel.
Ce dernier se fait livrer tous les paquets adressés à une adresse IPv6 du préfixe 64:ff9b::/96. Il se
charge d’extraire l’IPv4 embarqué qu’il utilise comme adresse de destination du paquet IPv4 corre-
spondant qu’il fait sortir à l’autre bout, et utilise une adresse privée de la plage 192.168.1.0/24
comme adresse source. Les paquets qui sortent de son tunnel sont transmis à l’interface eth1 de
sortie qui assure les fonctionnalités de NAT classiques. À l’inverse, il reçoit par l’autre extrémité
tous les paquets IPv4 à destination d’une adresse de la plage 192.168.1.0/24 pour reproduire
des paquets IPv6 selon les règles qu’il a enregistrées et les transmettre à eth0.
Installation des logiciels (l’utilisation de Totd dépend de la version du Bind) :
R1# apt-get install totd bind9 conntrack
R1# wget http://ubuntu.wikimedia.org/ubuntu/pool/universe/t/tayga/tayga_0.9.2-4
_i386.deb
R1# dpkg -i tayga_0.9.2-4_i386.deb
Conntrack est ajouté pour logguer le NAT44 par la suite.
Configuration du fichier de configuration DNS pour les tests avec bind9 (/etc/bind/db.example) :
99 / 143
Julien VAUBOURG

link to page 151 Yarding
CHAPITRE 8. EXPÉRIMENTATIONS
Équipe réseau Lothaire
1 $TTL 604800
2 @ IN SOA example. root.example. (
3
3
; Serial
4
604800
; Refresh
5
86400
; Retry
6
2419200
; Expire
7
604800 ) ; Negative Cache TTL
8 ;
9 @ IN NS
example.
10 @ IN AAAA 2001:db8::1
11
12 u1
IN AAAA 2001:db8:a::10
13 u2
IN A 192.0.2.10
14 u3
IN AAAA 2001:db8:b::10
Création de la zone example (/etc/bind/zone.example) :
1 zone "example" {
2
type master;
3
file "/etc/bind/db.example";
4 };
Prise en compte de la nouvelle zone par Bind (ajouter à la fin de /etc/bind/named.conf ) :
1 include "/etc/bind/zones.example";
Si Totd est utilisé par la suite, Bind doit écouter sur un autre port que le 53 :
R1# sed ’s/listen-on-v6/listen-on-v6 port 5300/’ -i /etc/bind/named.conf.options
Et le NAT64 doit être configuré (/etc/totd.conf ) :
1 forwarder ::1 port 5300
2 prefix 64:ff9b::
3 port 53
Commentaires par ligne :
1. Serveur à utiliser pour obtenir une réponse pour la requête reçue (ici c’est le Bind qui vient d’être
installé).
2. Préfixe à utiliser pour créer les adresses IPv6 factices lorsqu’il n’y aura qu’un A de disponible au
niveau du Bind (transformera les A en AAAA simplement en collant l’IPv4 correspondante à la fin
du préfixe).
3. Port d’écoute, qui correspond au port standard des serveurs DNS.
Sinon (Bind ≥ 9.8), il est possible de configurer le NAT64 directement avec Bind (/etc/bind/-
named.conf.options) :
1
dns64 64:ff9b::/96 {
2
mapped { !10/8; !172.16/12; !192.168/16; any; };
100 / 143
Julien VAUBOURG

link to page 151 Yarding
CHAPITRE 8. EXPÉRIMENTATIONS
Équipe réseau Lothaire
3
exclude { 64:ff9b::/96; };
4
};
Contrairement au cas avec Totd, il n’y a pas de forwarder puisque Bind connait directement les
réponses, et on exclut en plus la conversion des plages d’adresses privées. Si le AAAA trouvé semble être
une adresse 64, le NAT64 décidera de la recalculer lui-même. Ces deux contraintes sont optionnelles.
Dans tous les cas, redémarrage de Bind (et Totd si besoin) puis test de la configuration :
R1# service totd restart
R1# service bind9 restart
R1# dig +short @::1 -p 5300 u2.example
4 192.0.2.10
Configuration du futur tunnel NAT64 (/etc/tayga.conf ) :
1 tun-device nat64
2 ipv4-addr 192.168.1.1
3 prefix 64:ff9b::/96
4 dynamic-pool 192.168.1.0/24
5 data-dir /var/local/tayga
Commentaires par ligne :
1. Nom de l’interface qui correspondra au tunnel NAT64 (ici « nat64 »).
2. Adresse que Tayga utilisera comme source pour envoyer ses propres messages d’erreur (le man
indique qu’elle peut appartenir à la plage fournie ligne 4, et qu’elle sera transformée en IPv6 avec
le préfixe utilisé pour le nat64 pour communiquer en IPv6).
3. Préfixe utilisé par le DNS64 pour créer les adresses IPv6 factices (RFC 6052).
4. Plage d’adresses IPv4 à disposition du NAT64 pour renseigner le champ IP source des paquets
IPv4 qu’il sortira de son tunnel (et avec lesquelles il récupérera les réponses dans l’autre sens).
Une plage privée a été choisie plutôt qu’une plage de documentation pour bien mettre en avant la
nécessité du NAT par la suite.
5. Un fichier dynamic.map sera enregistré dans ce dossier, qui permettra de retrouver les associations
IPv6-IPv4 en cas de redémarrage, pour les sessions en cours. Chaque adresse de ce fichier est
réservée pour 2h04 au maximum après le dernier paquet traduit (pour un pool en /24, il y aura
donc 254 adresses IPv6 différentes maximum sur une période de deux heures, la 255ième recevant
un message ICMPv6 unreachable).
Création des adresses et des routes pour le tunnel (ainsi que du dossier pour le fichier de la table
dynamique) :
R1# mkdir /var/local/tayga/
R1# tayga --mktun
R1# ip link set nat64 up
R1# ip route add 64:ff9b::/96 dev nat64
R1# ip route add 192.168.1.0/24 dev nat64
Commentaires par ligne :
101 / 143
Julien VAUBOURG

link to page 151 Yarding
CHAPITRE 8. EXPÉRIMENTATIONS
Équipe réseau Lothaire
1. Création de l’interface nat64 (tunnel).
2. Activation de l’interface.
3. Tous les paquets IPv6 à destination d’une adresse IPv6 appartenant au préfixe utilisé par le DNS64
pour créer des adresses factices doivent passer par le tunnel pour que celui-ci puisse extraire les
adresses IPv4 de destination et traduire les entêtes.
4. Dans le sens inverse, puisque les paquets sortent du tunnel en IPv4 avec une adresse source prise
dans la plage définie dans sa configuration, il faut que cette même plage soit routée par défaut
dans le tunnel pour que celui-ci puisse traduire les réponses IPv4 en IPv6.
En sortant du tunnel, les paquets IPv6 métamorphosés en paquets IPv4 utilisent des adresses IP source
privées (192.168.1.0/24). Il faut donc que la machine assume également un rôle de NAT classique pour
que les paquets sortant utilisent l’adresse publique (192.0.2.1) de l’interface de sortie (eth1) :
R1# iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
R1# iptables -A FORWARD -i eth1 -o nat64 -m state --state RELATED,ESTABLISHED -j
ACCEPT
R1# iptables -A FORWARD -i nat64 -o eth1 -j ACCEPT
Enfin, la machine agissant comme routeur, il faut activer ses fonctions de routage au niveau du
noyau :
R1# sysctl -w net.ipv4.conf.all.forwarding=1
R1# sysctl -w net.ipv6.conf.all.forwarding=1
Configuration IP de la machine, conformément au plan d’adressage (vérifier que le noyau a bien créé
les routes correspondantes aux adresses des interfaces) :
R1# ip addr add 2001:db8:a::1/64 dev eth0
R1# ip addr add 2001:db8:b::1/64 dev eth1
R1# ip addr add 192.0.2.1/24 dev eth1
Lancement du démon de Tayga qui se chargera d’assurer les fonctions de NAT64 du tunnel (mode
debug ) :
R1# tayga -d
Configuration IP et DNS (interroge par défaut le DNS64 de sa passerelle) de la machine utilisateur
U1 :
U1# ip addr add 2001:db8:a::10/64 dev eth0
U1# ip route add default via 2001:db8:a::1 dev eth0
U1# echo ’nameserver 2001:db8:a::1’ > /etc/resolv.conf
Test du DNS64 depuis U1 avec la machine U2 (uniquement IPv4) :
U1# host u2.example
2 u2.example has address 192.0.2.10
3 u2.example has IPv6 address 64:ff9b::c000:20a
Configuration IP de la machine utilisateur U2 :
102 / 143
Julien VAUBOURG

link to page 151 Yarding
CHAPITRE 8. EXPÉRIMENTATIONS
Équipe réseau Lothaire
U2# ip addr add 192.0.2.10/24 dev eth0
U2# ip route add default via 192.0.2.1 dev eth0
Configuration IP de la machine utilisateur U3 :
U3# ip addr add 2001:db8:b::10/64 dev eth0
U3# ip route add default via 2001:db8:b::1 dev eth0
Test de U1 à U2 (vers une IPv4) :
U1# ping6 u2.example
2 PING u2.example(64:ff9b::c000:20a) 56 data bytes
3 64 bytes from 64:ff9b::c000:20a: icmp_seq=4 ttl=61 time=0.568 ms
4 64 bytes from 64:ff9b::c000:20a: icmp_seq=5 ttl=61 time=0.388 ms
5 64 bytes from 64:ff9b::c000:20a: icmp_seq=6 ttl=61 time=0.352 ms
Affichage de Tayga côté serveur :
1 assigned new pool address 192.168.1.2 (2001:db8:a::10)
Traces de Tshark sur les différentes interfaces de la passerelle durant le ping :
1 Capturing on eth0
2
0.000000 2001:db8:a::10 -> 64:ff9b::c000:20a ICMPv6 Echo request
3
0.000539 64:ff9b::c000:20a -> 2001:db8:a::10 ICMPv6 Echo reply
4
5 Capturing on nat64
6
0.000000 2001:db8:a::10 -> 64:ff9b::c000:20a ICMPv6 Echo request
7
0.000173 192.168.1.2 -> 192.0.2.10 ICMP Echo (ping) request
8
0.002094
192.0.2.10 -> 192.168.1.2 ICMP Echo (ping) reply
9
0.002114 64:ff9b::c000:20a -> 2001:db8:a::10 ICMPv6 Echo reply
10
11 Capturing on eth1
12
0.000000
192.0.2.1 -> 192.0.2.10 ICMP Echo (ping) request
13
0.000229
192.0.2.10 -> 192.0.2.1 ICMP Echo (ping) reply
Test de U1 à U3 (vers une IPv6, aucun paquet dans le tunnel) :
U1# ping6 u3.example
2 PING u3.example(2001:db8:b::10) 56 data bytes
3 64 bytes from 2001:db8:b::10: icmp_seq=1 ttl=63 time=0.390 ms
4 64 bytes from 2001:db8:b::10: icmp_seq=2 ttl=63 time=0.399 ms
5 64 bytes from 2001:db8:b::10: icmp_seq=3 ttl=63 time=0.387 ms
Tayga dispose d’un service avec un démon (les deux lignes du milieu permettent de déléguer au
service la charge de créer les routes pour le préfixe IPv6 du DNS64 ainsi que la plage IPv4 du NAT64,
puis de créer les règles netfilter pour le NAT44 en sortie) :
R1# sed ’s/RUN="no"/RUN="yes"/’ -i /etc/default/tayga
R1# sed ’s/CONFIGURE_IFACE="no"/CONFIGURE_IFACE="yes"/’ -i /etc/init.d/tayga
R1# sed ’s/CONFIGURE_NAT44="no"/CONFIGURE_NAT44="yes"/’ -i /etc/init.d/tayga
103 / 143
Julien VAUBOURG

link to page 112 link to page 112 link to page 113 link to page 113 link to page 151 Yarding
CHAPITRE 8. EXPÉRIMENTATIONS
Équipe réseau Lothaire
R1# service tayga start
Malheureusement, Tayga n’intègre aucune fonctionnalité concernant les journeaux systèmes, pourtant
indispensable pour retrouver l’origine d’une connexion en cas de requête judiciaire. Puisque le fichier de
la table dynamique est réécrit entièrement à chaque nouvelle association (et donc inexploitable), la seule
solution trouvée est de récupérer les messages de sortie du mode debug (qui semble n’ajouter que cette
fonctionnalité). Le service devrait donc être désactivé au démarrage.
Envoyer en temps réel les associations IPv6/IPv4 de Tayga à Syslog :
R1# (stdbuf -oL tayga -d | grep --line-buffered assigned | logger -t NAT64) &
Envoyer en temps réel les nouvelles connexions avec les associations IPv4 privée/publique à Syslog :
R1# (conntrack -E -o extended | logger -t NAT64) &
Aperçu d’une connexion de U1 vers U2 sur le port 80 (dans /var/log/user.log, paramètre par défaut
de logger) :
1 Jul 13 16:02:11 R1 NAT64: assigned new pool address 192.168.1.2 (2001:db8:a::10)
2 Jul 13 16:02:11 R1 NAT64:
[NEW] ipv4
2 tcp
6 120 SYN_SENT src=192.168.1.2
dst=192.0.2.10 sport=49069 dport=80 [UNREPLIED] src=192.0.2.10 dst=192.0.2.1
sport=80 dport=49069
8.6.2
Stateful
Le NAT64 stateful n’est actuellement disponible que sur les Cisco ASR 1000 et les CRS-1 3.
Côté GNU/Linux, il existe le projet Ecdysis disponible aussi sous BSD. Malheureusement, la fondation
qui soutient ce projet a pointé quelques gros problèmes 4.
Dans le cadre des tests effectués pour la conception de ce document, Cisco (par l’intermédiaire de
l’intégrateur Axians) a fourni un équipement de pare-feu ASA 5505 avec une version du système ASA en
version bêta, qui supporte la création de règles NAT64 stateful. C’est donc sur ce matériel, qui devrait
être accessible pour tous prochainement, que cette expérimentation est réalisée.
La topologie et le plan d’adressage sont décrits dans la figure 8.7 page 105.
Le NAT stateful n’impose pas de passer par une plage d’adresse interne. Par contre, il faut bien
différencier l’adresse d’interconnexion de l’adresse de sortie du NAT, qui ne peuvent pas être regroupées
en une seule (le boîtier ADSL d’un particulier n’a qu’une IPv4 pour sortir, mais son FAI communique
avec elle via un lien d’interconnexion qui utilise une adresse que l’abonné ne connait pas).
Informations supplémentaires :
– IPv4 publique de sortie du NAT : 192.0.2.2
– Préfixe IPv6 utilisé pour transformer les A en AAAA : 2001:db8:c::/96
3. Cf. Tableau 4 ici : http://www.cisco.com/en/US/prod/collateral/iosswrel/ps6537/ps6553/white_
paper_c11-676278.html.
4. http://tnc2010.terena.org/files/jean_philippe_dionne.pdf
104 / 143
Julien VAUBOURG

link to page 151 Yarding
CHAPITRE 8. EXPÉRIMENTATIONS
Équipe réseau Lothaire
Figure 8.7 – Installation liée à l’expérimentation du NAT64 stateful.
– Le serveur DNS n’assure pas lui-même les fonctionnalités de NAT64 dans cet exemple : cette
situation est plus proche de ce qui sera probablement mis en place dans un premier temps, sur
le réseau d’une institution. Le serveur DNS64 se contentera donc d’interroger les serveurs DNS
habituels, qui ne seront pas modifiés le temps des tests. Il pourra utiliser Bind (apt-get install
bind9) si sa version est égale ou supérieure à 9.8, sinon ce sera Totd (apt-get install totd).
Contrairement à l’expérimentation en mode stateless, le préfixe 64:ff9b::/96 destiné à être utilisé
pour embarquer des adresses IPv4 ne peut pas être utilisé pour la traduction des A en AAAA. Il n’y a
aucune raison logique à ça (ces adresses ne sortent pas du réseau) mais l’IOS refuse catégoriquement :
1 NAT64/46 real destination/source network cannot contain 0.0.0.0/0 when well known
prefix used.
Configuration des interfaces de l’ASA :
ASA> en
ASA# conf t
ASA(config)# int vlan 1
ASA(config-if)# nameif inside
ASA(config-if)# security-level 1
ASA(config-if)# ipv6 address 2001:db8:a::1/64
ASA(config-if)# int vlan 2
ASA(config-if)# nameif outside
ASA(config-if)# security-level 2
10 ASA(config-if)# ipv6 address 2001:db8:b::1/64
11 ASA(config-if)# ip address 192.0.2.1/64
12 ASA(config-if)# int ethernet 0/0
13 ASA(config-if)# switchport access vlan 1
105 / 143
Julien VAUBOURG

link to page 114 link to page 114 link to page 115 link to page 115 link to page 151 Yarding
CHAPITRE 8. EXPÉRIMENTATIONS
Équipe réseau Lothaire
14 ASA(config-if)# no shut
15 ASA(config-if)# int ethernet 0/1
16 ASA(config-if)# switchport access vlan 2
17 ASA(config-if)# no shut
18 ASA(config-if)# exit
Configuration des objets sur l’ASA :
ASA(config)# object network ipv4-publique
ASA(config-network-object)# host 192.0.2.2
ASA(config-network-object)# object network ipv6-dns64
ASA(config-network-object)# subnet 2001:db8:c::/96
ASA(config-network-object)# object network ipv6-inside
ASA(config-network-object)# subnet 2001:db8:a::/64
ASA(config-network-object)# exit
Configuration du NAT64 sur l’ASA à partir des objets :
ASA(config)# nat (inside,outside) source static ipv6-inside ipv4-publique
destination static ipv6-dns64 any
Version ASDM (Configuration > Firewall > NAT Rules > Add ) en figure 8.8 page 106.
Figure 8.8 – Configuration de la règle de NAT64 stateful avec l’ADSM pour IOS 9.
Configuration du pare-feu (aucun filtrage et journaux systèmes en mode debug ) :
ASA(config)# access-list global_access extended permit ip any any log debugging
Version ASDM (Configuration > Firewall > Access Rules) en figure 8.9 page 107.
106 / 143
Julien VAUBOURG

link to page 106 link to page 106 link to page 45 link to page 45 link to page 151 Yarding
CHAPITRE 8. EXPÉRIMENTATIONS
Équipe réseau Lothaire
Figure 8.9 – Autorisation de tous les trafics avec l’ADSM pour IOS 9.
Configuration du serveur DNS :
DNS# ip addr add 2001:db8:b::2/64 dev eth0
DNS# // suite idem que pour l’infra stateless
Configuration du serveur DNS64 :
DNS# ip addr add 2001:db8:b::3/64 dev eth0
DNS# ip route add 2001:db8:a::/64 2001:db8:b::1 dev eth0
Si Totd est utilisé, configuration du DNS64 dans /etc/totd.conf (cf. commentaires dans la version
stateless) :
1 forwarder 2001:db8:b::2
2 prefix 2001:db8:c::
3 port 53
Sinon (Bind ≥ 9.8), configuration du DNS64 avec Bind (/etc/bind/named.conf.options) :
1
forwarders {
2
2001:db8:b::2;
3
};
4
5
dns64 2001:db8:c::/96 {
6
recursive-only yes;
7
};
Dans tous les cas, configuration du poste utilisateur U1 :
U1# ip addr add 2001:db8:a::10/64
U1# ip route add default via 2001:db8:a::1 dev eth0
U1# echo ’nameserver 2001:db8:b::3’ > /etc/resolv.conf
Configuration de U2 et U3 : idem que pour l’expérimentation stateless (section 8.6.1 page 98).
Effectuer ensuite les mêmes tests de ping et de résolutions DNS que dans l’expérimentation stateless.
Une machine U1 entièrement IPv6 a été testée en conditions réelles, sur le réseau Lothaire, qui a
lui-même nécessité quelques modifications supplémentaires :
1. Comme étudié dans la section consacrée à NDP (section 4.2 page 37), l’utilisation massive d’IP
publiques nécessite du routage sur le réseau du FAI. En considérant que c’est l’adressage de cette
expérimentation qui a été utilisée (ce qui n’est évidemment pas le cas), il faut rajouter une règle sur
les routeurs en amont qui route le réseau 2001:db8:a::/64 vers 2001:db8:b::1 (la propagation
de cette route a été concrétisée avec la directive redistributes static de IS-IS).
107 / 143
Julien VAUBOURG

link to page 131 link to page 131 link to page 151 Yarding
CHAPITRE 8. EXPÉRIMENTATIONS
Équipe réseau Lothaire
2. De la même façon, il faut annoncer des routes de 192.0.2.2/32 vers 192.0.2.1.
3. Configurer les ACL du réseau pour autoriser les entrées/sorties vers ces réseaux, et autoriser les
ports 53 pour les deux serveurs DNS.
4. Au niveau de l’ASA directement, il faut ajouter des routes par défaut pour l’IPv4 et l’IPv6 :
ASA(config)# ipv6 route outside ::/0 <ipv6-gateway>
ASA(config)# route outside 0.0.0.0 0.0.0.0 <ipv4-gateway>
5. Pour ne pas induire en erreur les autres machines du réseau attaché à la patte outside, il ne faut
pas que celle-ci diffuse des annonces Router Advertisement :
ASA(config)# int vlan 2
ASA(config-if)# ipv6 nd suppress-ra
Concernant les journaux systèmes, l’ASA utilise son propre Syslog qui peut naturellement être con-
figuré pour envoyer les données à un Syslog distant (exemple avec une connexion web de U1 vers U2) :
ASA(config)# logging enable
ASA(config)# logging buffered debugging
ASA(config)# do show logging
4 [...]
5 %ASA-6-302013: Built inbound TCP connection 3831 for inside:2001:db8:a::10/40524
(192.0.2.2/40524) to outside:192.0.2.10/80 (2001:db8:c::c000:20a/80)
Une version ASDM est disponible via Monitoring > Logging > Real-Time Log Viewer > View.
Conclusion
Les deux expérimentations sont un succès, les objectifs ont été atteints, à l’exception de l’utilisation
du préfixe normalisé avec l’ASA. Ce défaut est peut-être à mettre en lien avec l’aspect bêta du système,
pour lequel une documentation truffée d’erreurs a aussi été fournie.
Le constat est toutefois relativement décevant au niveau de la compatibilité des matériels : la version
stateless n’a pas pu être réalisée avec un équipement réseau Cisco, et la version stateful a nécessité de
réclamer un prêt chez Cisco. L’IOS 9 semble faire un gros effort sur l’IPv6, et c’est à souhaiter que le
NAT64 sera disponible sur un maximum d’équipement prochainement. Au niveau du DNS64, c’est une
très bonne chose que Bind soit en capacité de le gérer nativement, mais la version installée n’est pas
encore dans la Debian stable à ce jour.
La version stateless n’a pas l’air d’être à l’ordre du jour chez Cisco. L’expérimentation prouve que
l’utilisation d’une plage interne est relativement contraignante : elle doit être bien dimensionnée, et ne
pas correspondre à une plage qui sera potentiellement à router. L’absence de solution pour les jounaux
systèmes pour Tayga est surprenante et la solution mise en œuvre manque de recul pour pouvoir évaluer
sa capacité à suivre un trafic très important.
La conclusion générale de ce document prévoit en section 8.9 page 123, un retour d’expérience d’un
mois avec l’expérimentation stateful.
108 / 143
Julien VAUBOURG

link to page 117 link to page 117 link to page 89 link to page 89 link to page 151 Yarding
CHAPITRE 8. EXPÉRIMENTATIONS
Équipe réseau Lothaire
8.7
Mobilité IPv6, DHCPv6 statique et relais DHCPv6
Introduction
La mobilité est une technologie qui est restée dans l’ombre pendant des années en IPv4, tant les
contraintes liées aux NAT la portaient au rang de l’utopie. L’IPv6 prévoit une nouvelle version, et surtout
de nouveaux espoirs en offrant un climat favorable à son utilisation à grande échelle.
L’expérimentation devra réussir à faire communiquer un poste utilisateur distant avec un poste util-
isateur mobile. Ce dernier devra donc changer complètement de réseau, au cours d’une communication
avec ce premier, sans que celle-ci ne souffre du changement. En mode sans optimisation de chemins, le
réseau et la machine du côté du nœud distant ne doivent ni avoir connaissance de ce déplacement, ni
avoir besoin de supporter la mobilité en particulier.
Pour être dans des conditions réelles de mobilités, des points d’accès wifi sont utilisés pour passer
rapidement d’un réseau à l’autre. Pour respecter le plan d’adressage du schéma, et pour ajouter une autre
notion à l’expérimentation, un serveur DHCPv6 est utilisé pour adresser automatiquement les machine
en statique.
Expérimentation
La topologie et le plan d’adressage sont décrits dans la figure 8.10 page 109 (les noms des équipements
respectent les conventions données dans le chapitre page 81).
Figure 8.10 – Installation liée à l’expérimentation de la mobilité IPv6.
Configuration du point d’accès AP1 :
AP1> en
AP1# conf t
AP1(config)# dot11 ssid AP1
AP1(config)-dot11-ssid# authentification open
109 / 143
Julien VAUBOURG

link to page 151 Yarding
CHAPITRE 8. EXPÉRIMENTATIONS
Équipe réseau Lothaire
AP1(config-dot11-ssid)# guest-mode
AP1(config-dot11-ssid)# exit
AP1(config)# int Dot11Radio 0
AP1(config-if)# ssid AP1
AP1(config-if)# no shut
110 / 143
Julien VAUBOURG

link to page 151 Yarding
CHAPITRE 8. EXPÉRIMENTATIONS
Équipe réseau Lothaire
Configuration du point d’accès AP2 :
AP2> en
AP2# conf t
AP2(config)# dot11 ssid AP2
AP2(config)-dot11-ssid# authentification open
AP2(config-dot11-ssid)# guest-mode
AP2(config-dot11-ssid)# exit
AP2(config)# int Dot11Radio 0
AP2(config-if)# ssid AP2
AP2(config-if)# no shut
Configuration du routeur HA :
HA> en
HA# conf t
HA(config)# int fa 0/0
HA(config-if)# ipv6 addr 2001:db8:a::1/64
HA(config-if)# ipv6 dhcp relay destination 2001:db8:c::4
HA(config-if)# ipv6 mobile home-agent
HA(config-if)# no shut
HA(config-if)# int fa 0/1
HA(config-if)# ipv6 addr 2001:db8:a::1/64
10 HA(config-if)# no shut
11 HA(config-if)# exit
12 HA(config)# ipv6 unicast-routing
13 HA(config)# ipv6 route 2001:db8:b::/64 2001:db8:c::2
14 HA(config)# ipv6 route 2001:db8:d::/64 2001:db8:c::3
Configuration du routeur AR1 :
AR1> en
AR1# conf t
AR1(config)# int fa 0/0
AR1(config-if)# ipv6 addr 2001:db8:d::1/64
AR1(config-if)# no shut
AR1(config-if)# int fa 0/1
AR1(config-if)# ipv6 addr 2001:db8:c::3/64
AR1(config-if)# ipv6 dhcp relay destination 2001:db8:c::4
AR1(config-if)# no shut
10 AR1(config-if)# exit
11 AR1(config)# ipv6 unicast-routing
12 AR1(config)# ipv6 route 2001:db8:a::/64 2001:db8:c::1
13 AR1(config)# ipv6 route 2001:db8:b::/64 2001:db8:c::2
Configuration du routeur RCN :
RCN> en
RCN# conf t
RCN(config)# int fa 0/0
RCN(config-if)# ipv6 addr 2001:db8:b::1/64
111 / 143
Julien VAUBOURG

link to page 151 Yarding
CHAPITRE 8. EXPÉRIMENTATIONS
Équipe réseau Lothaire
RCN(config-if)# no shut
RCN(config-if)# int fa 0/1
RCN(config-if)# ipv6 addr 2001:db8:c::2/64
RCN(config-if)# no shut
RCN(config-if)# exit
10 RCN(config)# ipv6 unicast-routing
11 RCN(config)# ipv6 route 2001:db8:a::/64 2001:db8:c::1
12 RCN(config)# ipv6 route 2001:db8:d::/64 2001:db8:c::3
Configuration du serveur DHCP :
DHCP# ip addr add 2001:db8:c::4/64 dev eth0
DHCP# apt-get install isc-dhcp-server
Configuration du fichier /etc/dhcp/dhcpd6.conf du serveur DHCP (adresse MAC de wlan0 :
00:21:6a:27:9d:ea) :
1 authoritative;
2
3 subnet6 2001:db8:c::/64 {}
4
5 subnet6 2001:db8:a::/64 {
6
host AP1Client {
7
host-identifier option dhcp6.client-id 00:03:00:01:00:21:6a:27:9d:
ea;
8
fixed-address6 2001:db8:a::10;
9
}
10 }
11
12 subnet6 2001:db8:d::/64 {
13
host AP2Client {
14
host-identifier option dhcp6.client-id 00:03:00:01:00:21:6a:27:9d:
ea;
15
fixed-address6 2001:db8:d::10;
16
}
17 }
Lancement du serveur DHCP :
DHCP# touch /var/lib/dhcp/dhcpd6.leases
DHCP# dhcpd -6 -f -cf /etc/dhcp/dhcpd6.conf
Configuration de la machine utilisateur CN :
CN# ip addr add 2001:db8:b::10/64 dev eth0
CN# ip route add default via 2001:db8:b::1 dev eth0
Configuration de la machine utilisateur MN (à noter que CentOS semble avoir un paquet mipv6-
daemon dans ses dépôts) :
MN# ip addr add 2001:db8:a::10/64 dev wlan0
112 / 143
Julien VAUBOURG

link to page 151 Yarding
CHAPITRE 8. EXPÉRIMENTATIONS
Équipe réseau Lothaire
MN# ip route add default via 2001:db8:a::1 dev wlan0
MN# apt-get install git autoconf automake bison flex libssl-dev indent ipsec-
tools
MN# git clone git://git.umip.org/umip.git
MN# cd umip
MN(umip)# autoreconf -i
MN(umip)# CPPFLAGS=’-isystem /usr/src/linux/include/’ ./configure --enable-vt
MN(umip)# make && make install
Configuration du fichier /usr/local/etc/mip6d.conf de MN :
1 NodeConfig MN;
2 DebugLevel 10;
3
4 MnHomeLink "wlan0" {
5
HomeAgentAddress 2001:db8:a::1;
6
HomeAddress 2001:db8:a::10/64;
7 }
8
9 UseMnHaIPsec disabled;
Pour changer de point d’accès en ligne de commande, récupérer la MAC des AP ainsi que le canal
utilisé :
MN# iwlist wlan0 scan | grep AP -B 5
2
Cell 01 - Address: 00:3A:98:C1:28:50
3
Channel:6
4
Frequency:2.437 GHz (Channel 6)
5
Quality=70/70 Signal level=-16 dBm
6
Encryption key:off
7
ESSID:"AP2"
8 --
9
Cell 02 - Address: 00:1A:30:32:3E:00
10
Channel:3
11
Frequency:2.422 GHz (Channel 3)
12
Quality=70/70 Signal level=-21 dBm
13
Encryption key:off
14
ESSID:"AP1"
Se connecter à AP1 puis lancer le démon MIPL (le driver de la carte utilisée nécessite d’éteindre
l’interface) :
MN# ifconfig wlan0 down
MN# iwconfig wlan0 essid AP1 channel 3 ap ’00:1A:30:32:3E:00’
MN# dhclient -6 -D LL wlan0
MN# mipd6
113 / 143
Julien VAUBOURG

link to page 151 Yarding
CHAPITRE 8. EXPÉRIMENTATIONS
Équipe réseau Lothaire
Vérification du fonctionnement du DHCP et du démon (le tunnel ne s’est pas approprié la home-
address) :
MN# ip -6 a
2 3: wlan0: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qlen 1000
3
inet6 2001:db8:a::10/64 scope global home nodad
4
valid_lft forever preferred_lft forever
5
inet6 fe80::221:6aff:fe27:9dea/64 scope link
6
valid_lft forever preferred_lft forever
7 17: ip6tnl1: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1460
8
inet6 fe80::221:6aff:fe27:9dea/64 scope link
9
valid_lft forever preferred_lft forever
Trace du démon MIPL en relation :
1 Tue Jul 24 13:13:55 md_update_router_stats: Adding CoA 2001:db8:a:0:221:6aff:fe27
:9dea on interface (3)
2 Tue Jul 24 13:13:55 __md_discover_router: discover link on iface wlan0 (3)
3 Tue Jul 24 13:13:57 mn_addr_do_dad: DAD succeeded!
4 Tue Jul 24 13:13:57 mn_addr_do_dad: address = 2001:db8:a:0:0:0:0:10
5 Tue Jul 24 13:13:57 mn_move: 1775
6 Tue Jul 24 13:13:57 mn_move: in home net
7 == NON_MIP_CN_ENTRY ==
8 Home address
2001:db8:a:0:0:0:0:10
9 Care-of address 2001:db8:a:0:0:0:0:10
10 CN address
2001:db8:a:0:0:0:0:1
Passage à l’AP2 :
MN# ifconfig wlan0 down
MN# iwconfig wlan0 essid AP2 channel 6 ap ’00:3A:98:C1:28:50’
MN# dhclient -6 -D LL wlan0
Trace du démon MIPL en relation :
1 Tue Jul 24 13:38:40 md_update_router_stats: Adding CoA 2001:db8:d:0:221:6aff:fe27
:9dea on interface (3)
2 Tue Jul 24 13:38:40 mn_move: 1775
3 Tue Jul 24 13:38:40 mn_move: in foreign net
4 Tue Jul 24 13:38:40 mn_block_rule_add: blackhole is already set.
5 Tue Jul 24 13:38:40 mn_send_home_bu: 792
6 Tue Jul 24 13:38:40 mn_get_home_lifetime: CoA lifetime 2591995 s, HoA lifetime
2590714 s, BU lifetime 262140 s
7 Tue Jul 24 13:38:40 mn_ro_pol_add: Adding default RO triggering policies for all
Correspondent Nodes
8 Tue Jul 24 13:38:40 process_first_home_bu: New bule for HA
9 Tue Jul 24 13:38:40 bul_add: Adding bule
10 == BUL_ENTRY ==
11 Home address
2001:db8:a:0:0:0:0:10
12 Care-of address 2001:db8:d:0:0:0:0:10
13 CN address
2001:db8:a:0:0:0:0:1
114 / 143
Julien VAUBOURG

link to page 124 link to page 124 link to page 151 Yarding
CHAPITRE 8. EXPÉRIMENTATIONS
Équipe réseau Lothaire
14 Tue Jul 24 13:38:40 mh_send: sending MH type 5
15 from 2001:db8:a:0:0:0:0:10
16 to 2001:db8:a:0:0:0:0:1
Trace Wireshark concernant l’envoi du Binding Update de MN pour prévenir HA de son déplacement :
MN# tshark -i wlan0 -VR mipv6
2 Frame 1: 86 bytes on wire (688 bits), 86 bytes captured (688 bits) on interface 0
3 [...]
4
Source: 2001:db8:d::10 (2001:db8:d::10)
5
Destination: 2001:db8:a::1 (2001:db8:a::1)
6 [...]
7 Mobile IPv6 / Network Mobility
8
Payload protocol: IGMP (0x02)
9
Header length: 33 (272 bytes)
10
Mobility Header Type: Unknown (106)
11
Reserved: 0xff
12
Checksum: 0xfe27
13
Unknown MH Type
14
15 Frame 2: 78 bytes on wire (624 bits), 78 bytes captured (624 bits) on interface 0
16 [...]
17
Source: 2001:db8:a::1 (2001:db8:a::1)
18
Destination: 2001:db8:d::10 (2001:db8:d::10)
19 [...]
20 Mobile IPv6 / Network Mobility
21
Payload protocol: IPv6 no next header (0x3b)
22
Header length: 2 (24 bytes)
23
Mobility Header Type: Binding Error (7)
24
Reserved: 0x00
25
Checksum: 0x29ce
26
Binding Error
27
Status: Unknown binding for Home Address destination option (1)
28
Home Address: 2001:db8:a::10 (2001:db8:a::10)
Détection de l’erreur par MIPL, qui résume bien la situation (BE = Binding Error ) :
1 Tue Jul 24 13:38:40 mn_recv_be: Got BE from HA, it does not understand us ?
Conclusion
L’absence de RFC publiées sur ce sujet (la RFC 3775 est en PROPOSED STANDARD) explique
probablement pourquoi un mobile GNU/Linux en vient à utiliser un numéro de protocole qu’un home
agent 
Cisco ne connait même pas. Outre le fait de rappeler l’importance des standards, le logiciel utilisé
par le mobile semble parfois avoir d’autres imperfections (figure 8.11 page 116).
Même en s’acharnant, les possibilités de mobilité avec l’IPv6 ne semblent pas encore être pour
115 / 143
Julien VAUBOURG

link to page 125 link to page 125 link to page 151 Yarding
CHAPITRE 8. EXPÉRIMENTATIONS
Équipe réseau Lothaire
Figure 8.11 – Erreur de checksum lors de l’expérimentation de MIPv6.
aujourd’hui. Malgré des traces de projets très actifs entre 2004 et 2007, l’engouement semble retombée,
et peu de systèmes ont suivi pour l’instant.
Concernant le DHCP statique, l’objectif est atteint puisque U1 a reçu des adresses précises selon le
réseau sur lequel il s’est connecté en wifi. Après avoir passé beaucoup de temps à tenter de faire du
statique avec le routeur Cisco, la conclusion semble être qu’ils ne supportent pas encore cette façon de
faire. Le DHCP de ISC a très bien rempli son travail, mais la documentation laisse un peu à désirer côté
IPv6, avec un man qui fournit la version IPv6 des paramètres quand ça lui chante, et sans vraie mise en
parallèle. Les exemples sont restés exclusivement en IPv4, et le paquet Debian ne dispose pas encore de
fichier de configuration d’exemple pour l’IPv6 (ce qui semble être le cas pour le paquet CentOS).
La fonction relais des routeurs Cisco ne pose aucun problème et se paramètre aisément.
8.8
Ajout dynamique d’adresse dans le DNS (DDNS) et pool
DHCPv6

Introduction
L’absence de NAT sur les réseaux IPv6 impose de diffuser un nombre important d’adresses différentes
sur Internet. Beaucoup de services nécessitant d’avoir un domaine et un reverse associés pour ne pas
être considéré comme un spammeur, les attributions ne peuvent plus être réalisées à la main. L’injection
d’entrées DNS via le DHCPv6 (autoconfiguration stateful ) est une solution qui existait déjà en IPv4,
avec le Dynamic DNS.
L’objectif de cette expérimentation est de tester l’avancement du DHCP de ISC et de Bind, pour
assurer ces fonctions pour l’IPv6. Un poste utilisateur devra donc se faire attribuer une IP piochée
aléatoirement dans une plage (pool ) d’adresse définie dans le DHCP, et être ensuite en mesure de
consulter le nom DNS ainsi que le reverse qui ont été associés dynamiquement.
Expérimentation
La topologie et le plan d’adressage sont décrits dans la figure 8.12 page 117.
Les deux IPv4 en bleu ont dû être ajoutées, contraint et forcé de constater que la version ISC du
serveur DHCP (version 4.2.2 incluse) ne permet pas de renseigner une adresse IPv6 pour le serveur
DNS à mettre à jour. Cette évolution arrivera probablement rapidement et est semble issue du même
116 / 143
Julien VAUBOURG

link to page 151 Yarding
CHAPITRE 8. EXPÉRIMENTATIONS
Équipe réseau Lothaire
Figure 8.12 – Installation liée à l’expérimentation du DDNS entre un serveur DHCP et un serveur DNS.
état d’esprit que celui qui a conduit à attendre aussi longtemps pour mettre en œuvre le RDNSS, en
considérant que les serveurs DNS seraient encore longtemps en IPv4. Dans ce cas de figure, il n’impose
que la couche v4 sur les deux serveurs (plus d’explications plus bas).
Installation du serveur DNS et configuration IP :
DNS# apt-get install bind
DNS# ip addr add 2001:db8:b::3/64 dev eth0
DNS# ip route add 2001:db8:a::/64 2001:db8:b::1 dev eth0
DNS# ip addr add 192.0.2.3/24 dev eth0
Création d’une clé symétrique pour autoriser le DHCP à injecter des entrées dynamiquement :
DNS# cat /tmp/$(dnssec-keygen -a hmac-md5 -b 128 -n USER -K /tmp dhcpupdate).key
| cut -d’ ’ -f7
2 HErio7xWBgGWPL8OFVcu0w==
Création d’un fichier de clé sur le serveur DNS (/etc/bind/update.key ) :
1 key "dhcpupdate" {
2
algorithm hmac-md5;
3
secret "HErio7xWBgGWPL8OFVcu0w==";
4 };
Précisions :
– Le fichier /etc/bind/rndc.key automatiquement généré sur certaines distributions pourrait être
directement utilisé.
– Faire attention aux guillemets (qui ne devront pas toujours être présent, dans la suite).
– Vérifier que l’utilisateur de Bind (bind ou named ) a bien le droit d’ajouter des fichiers dans
/etc/bind/.
117 / 143
Julien VAUBOURG

link to page 151 Yarding
CHAPITRE 8. EXPÉRIMENTATIONS
Équipe réseau Lothaire
Configuration du champ AAAA de U1 sur le serveur DNS (/etc/bind/db.example) :
1 $TTL 604800
2 @ IN SOA example. root.example. (
3
3
; Serial
4
604800
; Refresh
5
86400
; Retry
6
2419200
; Expire
7
604800 ) ; Negative Cache TTL
8 ;
9 @ IN NS
example.
10 @ IN AAAA 2001:db8:b::3
11
12 u1
IN AAAA 2001:db8:a::10
Configuration de son équivalent PTR (/etc/bind/db.a.db8.2001 ) :
1 $TTL 604800
2 a.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa IN SOA example. root.example. (
3
3
; Serial
4
604800
; Refresh
5
86400
; Retry
6
2419200
; Expire
7
604800 ) ; Negative Cache TTL
8 ;
9 @
IN
NS
example.
10 @
IN
AAAA
2001:db8:b::3
11
12 0.1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa. PTR
u1
.example.
Création des zones correspondantes, avec la clé qui autorise leur mise à jour (/etc/bind/zones.example) :
1 zone "example" {
2
type master;
3
file "/etc/bind/db.example";
4
allow-update { key dhcpupdate; };
5 };
6
7 zone "a.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa" {
8
type master;
9
file "/etc/bind/db.a.db8.2001";
10
allow-update { key dhcpupdate; };
11 };
Enfin, ajouter à la fin de /etc/bind/named.conf :
1 include "/etc/bind/update.key";
2 include "/etc/bind/zones.example";
118 / 143
Julien VAUBOURG

link to page 151 Yarding
CHAPITRE 8. EXPÉRIMENTATIONS
Équipe réseau Lothaire
Redémarrer puis tester le serveur DNS :
DNS# service bind9 restart
DNS# dig +short AAAA @::1 u1.example
3 2001:db8:a::10
DNS# dig +short @::1 -x 2001:db8:a::10
5 u1.example.
Tester l’ajout dynamique d’entrées dans le DNS (à réitérer ensuite depuis la machine du serveur
DHCP) :
DNS# nsupdate
2 > server ::1
3 > key dhcpupdate HErio7xWBgGWPL8OFVcu0w==
4 > zone example
5 > update add u2.example. 600 IN AAAA 2001:db8:a::20
6 > send
7 > quit
DNS# dig +short AAAA @::1 u2.example
9 2001:db8:a::20
Installation du serveur DHCP et configuration IP :
DHCP# apt-get install isc-dhcp-server
DHCP# ip addr add 2001:db8:b::2/64 dev eth0
DHCP# ip route add 2001:db8:a::/64 2001:db8:b::1/64 dev eth0
Configuration du DHCP (/etc/dhcp/dhcpd6.conf ) :
1 authoritative;
2
3 ddns-updates on;
4 allow client-updates;
5 ddns-update-style interim;
6 do-forward-updates true;
7
8 ddns-domainname "example";
9 option dhcp6.name-servers 2001:db8:b::3;
10
11 key dhcpupdate {
12
algorithm hmac-md5;
13
secret HErio7xWBgGWPL8OFVcu0w==;
14 };
15
16 zone example. {
17
key dhcpupdate;
18
primary 192.0.2.3;
19 }
20
21 zone a.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa. {
22
key dhcpupdate;
119 / 143
Julien VAUBOURG

link to page 151 Yarding
CHAPITRE 8. EXPÉRIMENTATIONS
Équipe réseau Lothaire
23
primary 192.0.2.3;
24 }
25
26 subnet6 2001:db8:b::/64 {}
27
28 subnet6 2001:db8:a::/64 {
29
range6 2001:db8:a::1 2001:db8:a::ffff:ffff;
30
ddns-hostname = concat("dyn-", binary-to-ascii(16, 16, "-", substring(option
dhcp6.ia-na, 16, 16)));
31 }
L’obligation d’utiliser des adresses IPv4 pour communiquer avec le serveur DNS provient du champ
primary pour lequel le parser de Bind rejette les IPv6 :
1 /etc/dhcp/dhcpd6.conf line 26: expecting semicolon.
2
primary 2001:
3
^
Le serveur accepte de se lancer en utilisant une adresse DNS (ns.example) plutôt qu’une adresse
IPv6, mais ses habitudes de serveur préhistorique ne lui permettent pas d’arriver à ses fins lorsqu’il doit
ajouter une entrée DNS dynamique :
1 ns.example: no A record associated with address.
Lancer le serveur en mode debug pour voir la trace :
DHCP# dhcpd -6 -f -d -cf /etc/dhcp/dhcpd6.conf
Configuration de R1 qui se contente de router et de faire relais DHCP :
R1> en
R1(config)# conf t
R1(config)# ipv6 unicast-routing
R1(config)# int f 0/0
R1(config-if)# ipv6 addr 2001:db8:a::1/64
R1(config-if)# ipv6 dhcp relay destination 2001:db8:b::2
Routeur(config-if)# ipv6 nd other-config-flag
Routeur(config-if)# ipv6 nd managed-config-flag
R1(config-if)# no shut
10 R1(config)# int f 0/1
11 R1(config-if)# ipv6 addr 2001:db8:b::1/64
12 R1(config-if)# no shut
Le routeur intervient dans cette expérimentation parce que U1 correspond à un Mac version Lion, et
que celui-ci n’a pas d’option DHCP explicite pour l’IPv6. Il faut donc le configurer en Automatique, et
forcer l’utilisastion du DHCPv6 via les drapeaux des Router Advertisements.
Pour tester la demande d’IPv6 en DHCP, brancher et débrancher la prise ethernet du Mac, ou la
demander explicitement si c’est un GNU/Linux :
U1# dhclient -6 eth0
120 / 143
Julien VAUBOURG

link to page 151 Yarding
CHAPITRE 8. EXPÉRIMENTATIONS
Équipe réseau Lothaire
Trace du serveur DHCP :
1 Relay-forward message from 2001:db8:b::1 port 547, link address 2001:db8:a::1,
peer address fe80::62fb:42ff:feef:e11a
Picking pool address 2001:db8:a::82d1:bea4
3 Sending Relay-reply to 2001:db8:b::1 port 547
4 Relay-forward message from 2001:db8:b::1 port 547, link address 2001:db8:a::1,
peer address fe80::62fb:42ff:feef:e11a
5 Sending Relay-reply to 2001:db8:b::1 port 547
Added new forward map from dyn-2001-db8-a-0-0-0-82d1-bea4.example to 2001:db8:a
::82d1:bea4
Added reverse map from 4.a.e.b.1.d.2.8.0.0.0.0.0.0.0.0.0.0.0.0.a.0.0.0.8.b.d
.0.1.0.0.2.ip6.arpa. to dyn-2001-db8-a-0-0-0-82d1-bea4.example
Trace au niveau de la machine du serveur DNS :
DNS# tshark -i eth0 -R ’dns.flags == 0x2800’
2 Running as user "root" and group "root". This could be dangerous.
3 Capturing on eth0
4
9.847464
192.0.2.2 -> 192.0.2.3 DNS 265 Dynamic update 0xd220 SOA example
5
9.859034
192.0.2.2 -> 192.0.2.3 DNS 276 Dynamic update 0x246b SOA a.0.0.0.8.b.
d.0.1.0.0.2.ip6.arpa
Vérifier que U1 a bien récupéré l’adresse 2001:db8:a::82d1:bea4 et tester la nouvelle entrée du
DNS :
U1# dig +short @2001:db8:b::3 -x 2001:db8:a::82d1:bea4
2 dyn-2001-db8-a-0-0-0-82d1-bea4.example
U1# dig +short AAAA @2001:db8:b::3 dyn-2001-db8-a-0-0-0-82d1-bea4.example
4 2001:db8:a::82d1:bea4
Conclusion
Le DDNS semble parfaitement fonctionner, et permettre une politique de confection des noms DNS
dynamiquement qui n’est limitée que par l’imagination de l’administrateur (reproduire le comportement
de l’autoconfiguration stateless en utilisant les MAC pourrait être intéressant). Malheureusement, la
nécessité du lien IPv4 rappelle que le DNS IPv6 a été considéré trop longtemps non-prioritaire, considérant
que la double couche sera toujours disponible.
Concernant le DHCPv6 dynamique, le fonctionnement est similaire à l’IPv4, mais le DHCP de ISC
souffre d’un manque de documentation pour IPv6.
121 / 143
Julien VAUBOURG

link to page 151 Yarding
CHAPITRE 8. EXPÉRIMENTATIONS
Équipe réseau Lothaire
122 / 143
Julien VAUBOURG

link to page 131 link to page 131 link to page 131 Conclusion
« Any fool can use a computer. Many do. » - Ted Nelson
8.9
Est-il possible de migrer son réseau interne en IPv6 unique-
ment, tout en continuant à bénéficier des services restés en
IPv4 ?

Grâce à la solution du NAT64/DNS64, la réponse est oui.
Cette solution a été testée durant un mois sur le poste d’un utilisateur :
– La couche IPv4 a été désactivée (i.e. aucune interface ne disposait d’une IPv4).
– L’ASA qui a servi pour l’expérimentation du NAT64 stateful a été placé en aval de sa machine.
– Aucune configuration réseau n’a été effectuée sur la machine (en autoconfiguration et en distribuant
l’adresse du DNS faisant office de DNS64).
Conformément au fonctionnement du NAT64, tous les sites web et services étaient accessibles en
IPv6 pour la machine, qu’ils le supportent nativement ou non.
L’utilisateur a rencontré trois problèmes durant cette période :
1. Un client IRC qui supportait l’IPv6 mais qui s’acharnait à se connecter de préférence en IPv4,
malgré l’absence d’interface compatible 5.
2. Un intranet d’école inaccessible à cause d’un DNS mal configuré, avec un faux AAAA disponible 6.
3. Un autre site web qui a posé le même problème 7.
De façon générale il n’aurait pu y avoir que quatre types de problème avec le NAT64 :
5. Un ticket a été posté à ce sujet, demandant de préférer automatiquement l’IPv6, comme c’est le cas sur la plupart
des applications le supportant : http://bugs.irssi.org/index.php?do=details&task_id=842.
6. Les responsables techniques ont été prévenus (SI ESIAL-TELECOM Nancy). Solution temporaire au problème : echo
’2001:db8:c::193.50.40.1 www-intranet.esial.uhp-nancy.fr’ >> /etc/hosts.
7. Malgré une belle annonce : http://puppetlabs.com/blog/puppet-labs-helps-save-the-internet-ipv6-style/.

link to page 18 link to page 18 link to page 151 Yarding
CHAPITRE 8. EXPÉRIMENTATIONS
Équipe réseau Lothaire
1. L’application a été mal écrite et utilise une IPv4 en dur, sans passer par le DNS (cas du client
IRC).
2. Le DNS renseigne un faux AAAA (cas du site inaccessible).
3. L’application utilise explicitement le A du DNS s’il est disponible, en oubliant du même coup le
AAAA.
4. L’application ne supporte pas l’IPv6, et ne prévoit donc pas d’interroger le AAAA du DNS.
Les trois premiers problèmes sont plutôt rares, et relèvent plus du bug que de la compatibilité. Le
dernier pourrait être le plus courant, et concernera particulièrement les applications métier.
Un NAT64 n’ayant pas fondamentalement de raison d’être plus lent qu’un NAT44 classique (en
oubliant la différence d’âge, qui peut jouer sur les performances) cette solution semble tout à fait en-
visageable dans un environnement de production. En prenant soin toutefois de vérifier la compatibilité
des applications susceptibles d’être utilisées. Le réseau et les machines étant entièrement en IPv6, toute
la puissance et la simplicité du nouveau protocole sont exploitables (échanges entre services Windows,
téléphonie, etc.). Enfin, l’administration ne nécessite pas pour autant de double plan d’adressage ou de
duplication des ACL.
Un NAT à peine plus particulier que ceux déjà mis en place subsiste, mais tendra à disparaître
naturellement en étant de moins en moins sollicité au fil des années, sans qu’aucune intervention sur le
réseau ou les postes clients ne soit nécessaire. Les nouveaux services mis en place sur le réseau seront
conçus pour fonctionner avec l’IPv6, le rendant de plus en plus robuste et prêt pour l’avenir.
8.10
Est-il possible de se passer totalement de l’IPv4 ?
À cause de la maigre liste des sites web accessibles en IPv6 dans le top 100 des sites web les plus
visités par les français (fournie en figure 1.2 page 10), la réponse est non.
Le mieux qui peut être fait actuellement est d’utiliser la solution du NAT64, et d’attendre patiemment
qu’il ne soit plus sollicité. Ou d’utiliser une double pile sur les machines, si le réseau est suffisamment
petit. Le jour où les sites pornographiques présents dans le top 100 seront accessibles en IPv6, ce sera
un signal fort pour indiquer que le web est prêt à se passer totalement de l’IPv4.
8.11
Bilan des recherches et expérimentations
Le protocole apporte beaucoup de nouveautés très intéressantes et profite de l’expérience de l’IPv4
pour corriger ses principaux problèmes.
Beaucoup de solutions existent pour permettre à ceux qui n’ont pas de connexion IPv6 de naviguer au
dessus de l’IPv4. Malheureusement, les efforts auraient plutôt dû être concentrés sur la disponibilités des
services en IPv6, qui restent bien trop rares après tant d’années depuis les premières alertes de pénurie.
Malgré tout, tous les systèmes d’exploitation récents supportent parfaitement l’IPv6, et de plus en plus
de FAI proposent des plages à leurs abonnés.
124 / 143
Julien VAUBOURG

link to page 151 Yarding
CHAPITRE 8. EXPÉRIMENTATIONS
Équipe réseau Lothaire
L’autoconfiguration stateless (SLAAC) qui est l’une des nouveautés des plus remarquées souffre
encore du retard de la normalisation du RDNSS qui n’est pas encore utilisable, faute de compatibilité
suffisante avec les systèmes d’exploitation. Tant que les serveurs de nom de domaine devront être délivrés
par DHCPv6, ce mode d’autoconfiguration n’aura pas un grand intérêt. Il pose également beaucoup de
soucis au niveau de la sécurité (blocage de l’algorithme DAD, envois de Router Advertisements non-
autorisés, etc.), et ne permet pas d’associer automatiquement un domaine et un reverse aux adresses.
Le DHCPv6 aura donc probablement encore de beaux jours devant lui dans les réseaux d’entreprise.
Au delà des autres déceptions comme la mobilité, l’IPv6 fonctionne très bien et apporte beaucoup
d’espoir en terme de simplicité des réseaux, tant avec l’abolition des NAT qu’avec ses adresses multicast
et ses diverses optimisations.
Pour finir sur une note d’humour, voici à quoi pourrait ressembler la vie d’entreprise si le monde ne
se décide pas à adopter IPv6 :
IPv6 - Are You Ready ? <http://www.youtube.com/watch?v=eYffYT2y-Iw>
125 / 143
Julien VAUBOURG

link to page 151 Yarding
CHAPITRE 8. EXPÉRIMENTATIONS
Équipe réseau Lothaire
126 / 143
Julien VAUBOURG

A
Exemple de politique de sécurité
# INPUT #
# Maintenance of communication
ip6tables -A ICMPv6_IN -p icmpv6 --icmpv6-type 1 -j ACCEPT # Destination Unreachable
ip6tables -A ICMPv6_IN -p icmpv6 --icmpv6-type 2 -j ACCEPT # Packet too big
ip6tables -A ICMPv6_IN -p icmpv6 --icmpv6-type 3 -j ACCEPT # Time Exceeded
ip6tables -A ICMPv6_IN -p icmpv6 --icmpv6-type 4 -j ACCEPT # Parameter problem
# Connectivity checking
ip6tables -A ICMPv6_IN -p icmpv6 --icmpv6-type 128 -j ACCEPT # Echo Request
ip6tables -A ICMPv6_IN -p icmpv6 --icmpv6-type 129 -j ACCEPT # Echo Response
# Address configuration and router selection: allow in link-local only
ip6tables -A ICMPv6_IN -p icmpv6 --icmpv6-type 133 -m hl --hl-eq 255 -j LOG --log-level warning --log-prefix "RS6 " # RS
ip6tables -A ICMPv6_IN -p icmpv6 --icmpv6-type 133 -m hl --hl-eq 255 -j ACCEPT # RS
ip6tables -A ICMPv6_IN -p icmpv6 --icmpv6-type 134 -m hl --hl-eq 255 -j ACCEPT # RA
ip6tables -A ICMPv6_IN -p icmpv6 --icmpv6-type 135 -m hl --hl-eq 255 -j ACCEPT # NS
ip6tables -A ICMPv6_IN -p icmpv6 --icmpv6-type 136 -m hl --hl-eq 255 -j LOG --log-level warning --log-prefix "NA6 " # NA
ip6tables -A ICMPv6_IN -p icmpv6 --icmpv6-type 136 -m hl --hl-eq 255 -j ACCEPT # NA
ip6tables -A ICMPv6_IN -p icmpv6 --icmpv6-type 141 -m hl --hl-eq 255 -j ACCEPT # Inverse NDS
ip6tables -A ICMPv6_IN -p icmpv6 --icmpv6-type 142 -m hl --hl-eq 255 -j ACCEPT # Inverse NDA
# Link-local Multicast receiver: allow in link-local only
ip6tables -A ICMPv6_IN -p icmpv6 --icmpv6-type 130 -m hl --hl-eq 255 -j ACCEPT # Listener Query
ip6tables -A ICMPv6_IN -p icmpv6 --icmpv6-type 131 -m hl --hl-eq 255 -j ACCEPT # Listener Report
ip6tables -A ICMPv6_IN -p icmpv6 --icmpv6-type 132 -m hl --hl-eq 255 -j ACCEPT # Listener Done
ip6tables -A ICMPv6_IN -p icmpv6 --icmpv6-type 143 -m hl --hl-eq 255 -j ACCEPT # Listener Report v2
# SEND Certification Path Notification: allow in link-local traffic only
ip6tables -A ICMPv6_IN -p icmpv6 --icmpv6-type 148 -m hl --hl-eq 255 -j ACCEPT # CPS
ip6tables -A ICMPv6_IN -p icmpv6 --icmpv6-type 149 -m hl --hl-eq 255 -j ACCEPT # CPA
# Multicast Router messages: Advertisement, Solicitation, Termination
ip6tables -A ICMPv6_IN -p icmpv6 --icmpv6-type 151 -m hl --hl-eq 255 -j ACCEPT # MRA
ip6tables -A ICMPv6_IN -p icmpv6 --icmpv6-type 152 -m hl --hl-eq 255 -j ACCEPT # MRS
ip6tables -A ICMPv6_IN -p icmpv6 --icmpv6-type 153 -m hl --hl-eq 255 -j ACCEPT # MRT
# Mobile IPv6
ip6tables -A ICMPv6_IN -p icmpv6 --icmpv6-type 144 -j ACCEPT # Home Agent Address Discovery Request
ip6tables -A ICMPv6_IN -p icmpv6 --icmpv6-type 145 -j ACCEPT # Home Agent Address Discovery Reply
ip6tables -A ICMPv6_IN -p icmpv6 --icmpv6-type 146 -j ACCEPT # Mobile Prefix Solicitation
ip6tables -A ICMPv6_IN -p icmpv6 --icmpv6-type 147 -j ACCEPT # Mobile Prefix Advertisement

link to page 151 Yarding
ANNEXE A. EXEMPLE DE POLITIQUE DE SÉCURITÉÉquipe réseau Lothaire
# Handling fragmentation
ip6tables -A ICMPv6_IN -m ipv6header --soft --header frag -j ACCEPT
# Applying ICMPv6_IN rules to general icmpv6 input
ip6tables -A INPUT -p icmpv6 -j ICMPv6_IN
# FORWARD #
# Maintenance of communication
ip6tables -A ICMPv6_FW -p icmpv6 --icmpv6-type 1 -j ACCEPT # Destination Unreachable
ip6tables -A ICMPv6_FW -p icmpv6 --icmpv6-type 2 -j ACCEPT # Packet too big
ip6tables -A ICMPv6_FW -p icmpv6 --icmpv6-type 3 -j ACCEPT # Time Exceeded
ip6tables -A ICMPv6_FW -p icmpv6 --icmpv6-type 4 -j ACCEPT # Parameter problem
# Connectivity checking, for now let the IPv6 world in
ip6tables -A ICMPv6_FW -p icmpv6 --icmpv6-type 128 -j ACCEPT # Echo Request
ip6tables -A ICMPv6_FW -p icmpv6 --icmpv6-type 129 -j ACCEPT # Echo Response
# Handling fragmentation
ip6tables -A ICMPv6_FW -m ipv6header --soft --header frag -j ACCEPT
# Applying rules
ip6tables -A FORWARD -p icmpv6 -j ICMPv6_FW
128 / 143
Julien VAUBOURG

link to page 137 B
Références
« The thing about quotes on the internet is that you cannot confirm their validity. » - Abraham Lincoln
IPv6 : Théorie et pratique Écrit sous le nom d’emprunt Gisèle Cizault, il s’agit en réalité d’une œuvre
du collectif d’universitaires et d’ingénieurs qui participe à la mise au point d’IPv6 au niveau inter-
national, au travers du G6 (association pour la promotion et le développement d’IPv6). Le livre
est initialement édité par les éditions françaises de O’Reilly, qui ont disparues. Pour cette raison,
et parce que le livre évoluait trop vite, il est disponible librement en version numérique sur le site
de l’association. Le faux nom Cizault vient du 6bone (littéralement six os), qui est une plate-forme
d’expérimentation de l’IPv6. C’est probablement LA référence en matière d’IPv6, qui traite prin-
cipalement de l’explication détaillée des protocoles, avec un peu de code C pour programmer des
applications avec des sockets IPv6.
1. http://livre.g6.asso.fr

link to page 138 link to page 138 link to page 138 link to page 138 link to page 138 link to page 138 link to page 138 link to page 138 link to page 138 link to page 138 link to page 138 link to page 151 Yarding
ANNEXE B. RÉFÉRENCES
Équipe réseau Lothaire
IPv6 : Principes et mise en œuvre Aux éditions ENI, il s’agit à ce jour du livre le plus récent (mai
2012) sur l’IPv6, disponible en français. Plutôt succinct sur l’aspect protocolaire, il s’attarde plutôt
sur des explications concrètes des mécanismes liés à l’IPv6, avec des exemples de configuration. Il
a aussi le mérite de s’intéresser de près aux aspects compatibilité des systèmes, tout en balayant
un champ assez large des possibilités actuelles.
DNS and BIND on IPv6 Aux éditions O’Reilly, ce livre s’attarde sur toutes les possibilités liées à la
résolution des noms de domaine en IPv6 ainsi qu’à la diffusion des informations du réseau via
DHCPv6 (autoconfiguration stateful ). Les premiers chapitres sont disponibles gratuitement sur
Scribd et SafariBooks 3.
Wiki ARIN Il s’agit d’une base de données communautaire alimentée par un public professionnel qui
partage ses notes qui concernent l’IPv6, notamment au travers des listes du NANOG (équivalent
nord-américain du FRnOG).
World IPv6 Launch L’une des références parmi les acteurs importants de la démocratisation de l’IPv6,
ce site de l’Internet Society donne l’occasion au moins une fois par an de faire un point sur
l’utilisation de l’IPv6 au travers du monde. Le RIPE propose aussi des statistiques de ce type.
IPV6 HOWTO (GNU/Linux) Tiré de The Linux Documentation Project, ce tutoriel très complet
(bien que parfois un peu vieillissant) de Peter Bieringer, permet d’obtenir des solutions techniques
précises pour l’utilisation d’IPv6 sur GNU/Linux.
Preparing an IPv6 Addressing Plan Proposé par le RIPE, ce document d’une vingtaine de pages
est destiné à assister la conception d’un plan d’adressage IPv6, à l’aide des bonnes pratiques.
IETF Cette référence pourrait faire partie de toutes les documentations informatiques, mais les RFC pour
l’IPv6 sont une solution particulièrement efficace d’obtenir de manière sûre, à jour et complète, un
descriptif détaillé des différents protocoles. Contrairement à ce qu’on pourrait craindre, elles sont
très faciles à lire, et souvent plus claire que n’importe quel tutoriel déniché à coup de sueur depuis
son moteur de recherche. Gagnez du temps, consultez directement les RFC et abonnez-vous au
blog de Stéphane Bortzmeyer qui propose une explication en français des nouveautés.
FAQ ISoc L’Internet Society met à disposition une FAQ 10 très intéressante sur les questions qui con-
cernent l’IPv6.
Cheat Sheet Un format A4 recto-verso 11 avec tous les fondamentaux de l’IPv6, à afficher dans ses
toilettes.
Quelques liens supplémentaires concernant la compatibilité des postes clients :
– Une page Wikipédia 12 fait le point sur la disponibilité de l’IPv6 sur les systèmes d’exploitation.
2. http://www.scribd.com/doc/63969331/DNS-and-BIND-on-IPv6
3. http://my.safaribooksonline.com/book/networking/dns/9781449308025
4. http://www.getipv6.info
5. http://www.worldipv6launch.org
6. http://v6day.ripe.net/cgi-bin/index.cgi
7. http://tldp.org/HOWTO/Linux+IPv6-HOWTO/index.html
8. http://www.ripe.net/lir-services/training/material/IPv6-for-LIRs-Training-Course/IPv6_addr_
plan4.pdf/view
9. http://www.bortzmeyer.org
10. http://www.isoc.org/internet/issues/ipv6_faq.shtml
11. http://www.roesen.org/files/ipv6_cheat_sheet.pdf
12. https://en.wikipedia.org/wiki/Comparison_of_IPv6_support_in_operating_systems
130 / 143
Julien VAUBOURG

link to page 139 link to page 139 link to page 151 Yarding
ANNEXE B. RÉFÉRENCES
Équipe réseau Lothaire
– Un tableau 13 très intéressant qui récapitule les commandes systèmes fondamentales pour l’IPv6,
pour différents systèmes d’exploitation.
– Analyse assez détaillée 14 (mais un peu ancienne) de la compatibilité des différentes technologies
IPv6 sur les systèmes d’exploitation.
13. https://wikispaces.psu.edu/display/ipv6/IPv6+Rosetta+Stone
14. http://ipv6int.net/systems
131 / 143
Julien VAUBOURG

link to page 151 Yarding
ANNEXE B. RÉFÉRENCES
Équipe réseau Lothaire
132 / 143
Julien VAUBOURG

link to page 141 link to page 141 C
Table des RFC
« Let’s say the docs present a simplified view of reality. » - Larry Wall (1990)
Ces différentes RFC ont été citées dans ce document (certaines sont informationnelles) :
– RFC 791 : INTERNET PROTOCOL
– RFC 1191 : Path MTU Discovery
– RFC 1338 : Supernetting : an Address Assignment and Aggregation Strategy
– RFC 1918 : Address Allocation for Private Internets
– RFC 2080 : RIPng for IPv6
– RFC 2081 : RIPng Protocol Applicability Statement
– RFC 2136 : Dynamic Updates in the Domain Name System (DNS UPDATE)
– RFC 2461 : Neighbor Discovery for IP Version 6 (IPv6)
– RFC 2464 : Transmission of IPv6 Packets over Ethernet Networks
– RFC 2473 : Generic Packet Tunneling in IPv6 Specification
– RFC 2606 : Reserved Top Level DNS Names
– RFC 2675 : IPv6 Jumbograms
– RFC 3007 : Secure Domain Name System (DNS) Dynamic Update
– RFC 3041 : Privacy Extensions for Stateless Address Autoconfiguration in IPv6
– RFC 3053 : IPv6 Tunnel Broker
– RFC 3056 : Connection of IPv6 Domains via IPv4 Clouds
1. http://groups.google.com/groups?selm=6940@jpl-devvax.JPL.NASA.GOV&hl=en
2. Pour consulter une RFC : http://tools.ietf.org/html/rfcXXXX.

link to page 151 Yarding
ANNEXE C. TABLE DES RFC
Équipe réseau Lothaire
– RFC 3068 : An Anycast Prefix for 6to4 Relay Routers
– RFC 3224 : Vendor Extensions for Service Location Protocol, Version 2
– RFC 3306 : Unicast-Prefix-based IPv6 Multicast Addresses
– RFC 3315 : Dynamic Host Configuration Protocol for IPv6 (DHCPv6)
– RFC 3484 : Default Address Selection for Internet Protocol version 6 (IPv6)
– RFC 3736 : Stateless Dynamic Host Configuration Protocol (DHCP) Service for IPv6
– RFC 3775 : Mobility Support in IPv6
– RFC 3849 : IPv6 Address Prefix Reserved for Documentation
– RFC 3882 : Configuring BGP to Block Denial-of-Service Attacks
– RFC 3963 : Network Mobility (NEMO) Basic Support Protocol
– RFC 3972 : Cryptographically Generated Addresses (CGA)
– RFC 4140 : Hierarchical Mobile IPv6 Mobility Management (HMIPv6)
– RFC 4193 : Unique Local IPv6 Unicast Addresses
– RFC 4271 : A Border Gateway Protocol 4 (BGP-4)
– RFC 4260 : Mobile IPv6 Fast Handovers for 802.11 Networks
– RFC 4291 : IP Version 6 Addressing Architecture
– RFC 4380 : Teredo : Tunneling IPv6 over UDP through Network Address Translations (NATs)
– RFC 4389 : Neighbor Discovery Proxies (ND Proxy)
– RFC 4443 : Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6
(IPv6) Specification
– RFC 4472 : Operational Considerations and Issues with IPv6 DNS
– RFC 4861 : Neighbor Discovery for IP version 6 (IPv6)
– RFC 4862 : IPv6 Stateless Address Autoconfiguration
– RFC 4966 : Reasons to Move the Network Address Translator - Protocol Translator (NAT-PT)
to Historic Status
– RFC 5214 : Intra-Site Automatic Tunnel Addressing Protocol (ISATAP)
– RFC 5340 : OSPF for IPv6
– RFC 5342 : IANA Considerations and IETF Protocol Usage for IEEE 802 Parameters
– RFC 5568 : Mobile IPv6 Fast Handovers
– RFC 5635 : Remote Triggered Black Hole Filtering with Unicast Reverse Path Forwarding (uRPF)
– RFC 5737 : IPv4 Address Blocks Reserved for Documentation
– RFC 5969 : IPv6 Rapid Deployment on IPv4 Infrastructures (6rd) – Protocol Specification
– RFC 6052 : IPv6 Addressing of IPv4/IPv6 Translators
– RFC 6106 : IPv6 Router Advertisement Options for DNS Configuration
– RFC 6146 : Stateful NAT64 : Network Address and Protocol Translation from IPv6 Clients to
IPv4 Servers
– RFC 6275 : Mobility Support in IPv6
– RFC 6666 : A Discard Prefix for IPv6
134 / 143
Julien VAUBOURG

D
Figures et tableaux

link to page 151 Yarding
ANNEXE D. FIGURES ET TABLEAUX
Équipe réseau Lothaire
136 / 143
Julien VAUBOURG

link to page 15 link to page 18 link to page 18 link to page 19 link to page 23 link to page 24 link to page 24 link to page 26 link to page 26 link to page 29 link to page 29 link to page 41 link to page 42 link to page 43 link to page 44 link to page 45 link to page 46 link to page 47 link to page 47 Table des figures
1.1
Paquet IPv6. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
1.2
Les 100 sites les plus visités par les français et l’IPv6 (sites compatibles en vert). . . . .
10
1.3
Logo de la journée mondiale pour l’IPv6 le 06/06. . . . . . . . . . . . . . . . . . . . .
10
1.4
Utilisation de l’IPv6 au travers du temps, mesurée par Google. . . . . . . . . . . . . . .
11
2.1
Représentation schématique d’une diffusion unicast.
. . . . . . . . . . . . . . . . . . .
15
2.2
Représentation schématique d’une diffusion multicast. . . . . . . . . . . . . . . . . . .
16
2.3
Format d’une IP multicast.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
2.4
Format d’une adresse ethernet multicast. . . . . . . . . . . . . . . . . . . . . . . . . .
18
2.5
Conversion d’une adresse IP multicast en adresse ethernet multicast (adresse all-nodes).
18
2.6
Représentation schématique d’une diffusion broadcast. . . . . . . . . . . . . . . . . . .
21
2.7
Représentation schématique d’une diffusion anycast. . . . . . . . . . . . . . . . . . . .
21
4.1
Format d’une adresse multicast solicited-node. . . . . . . . . . . . . . . . . . . . . .
33
4.2
Conversion d’une adresse IP unicast en adresse multicast solicited-node. . . . . . . . .
34
4.3
NDP avec diffusion des routes.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
35
4.4
NDP sans diffusion des routes.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
36
4.5
NDP sans diffusion des routes, avec l’utilisation d’un proxy. . . . . . . . . . . . . . . .
37
4.6
Autoconfiguration d’une adresse IP unicast avec l’autoconfiguration stateless. . . . . .
38
4.7
Diffusion des Router Advertisements. . . . . . . . . . . . . . . . . . . . . . . . . . .
39
4.8
Détection d’une collision avec l’algorithme DAD. . . . . . . . . . . . . . . . . . . . . .
39

link to page 53 link to page 55 link to page 59 link to page 63 link to page 65 link to page 66 link to page 69 link to page 70 link to page 70 link to page 72 link to page 73 link to page 73 link to page 75 link to page 76 link to page 77 link to page 77 link to page 78 link to page 78 link to page 84 link to page 86 link to page 90 link to page 91 link to page 91 link to page 91 link to page 92 link to page 96 link to page 97 link to page 151 Yarding
TABLE DES FIGURES
Équipe réseau Lothaire
4.9
Fonctionnement d’un relais DHCPv6. . . . . . . . . . . . . . . . . . . . . . . . . . . .
45
4.10 Confection d’un identifiant DHCP de type DUID. . . . . . . . . . . . . . . . . . . . . .
47
4.11 Injections dynamiques d’enregistrements DNS par le DHCP. . . . . . . . . . . . . . . .
51
5.1
Fonctionnement de base d’un tunnel IPv6 pour l’IPv4. . . . . . . . . . . . . . . . . . .
55
5.2
Communication d’un nœud 6to4 à un autre. . . . . . . . . . . . . . . . . . . . . . . .
57
5.3
Communication d’un nœud 6to4 à un nœud IPv6 natif à l’aide d’un relais.
. . . . . . .
58
5.4
Communication IPv6 via un réseau 6rd. . . . . . . . . . . . . . . . . . . . . . . . . . .
61
5.5
Confection d’une adresse ISATAP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
62
5.6
Fonctionnement de ISATAP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
62
5.7
Confection d’une adresse Teredo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
64
5.8
Découverte de l’adresse Teredo et réservation d’un tunnel. . . . . . . . . . . . . . . . .
65
5.9
Fonctionnement de Teredo avec un NAT de type restricted. . . . . . . . . . . . . . .
65
5.10 Fonctionnement d’un tunnel broker. . . . . . . . . . . . . . . . . . . . . . . . . . . .
67
5.11 Confection normalisée d’une adresse IPv6 depuis une adresse IPv4.
. . . . . . . . . . .
68
5.12 Fonctionnement d’un DNS64, allié indispensable du NAT64. . . . . . . . . . . . . . . .
69
5.13 Fonctionnement du NAT64. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
69
5.14 Mécanismes internes du NAT64 stateless. . . . . . . . . . . . . . . . . . . . . . . . .
70
5.15 Mécanismes internes du NAT64 stateful. . . . . . . . . . . . . . . . . . . . . . . . .
70
6.1
Ajout dynamique d’une route plus optimisée. . . . . . . . . . . . . . . . . . . . . . . .
76
6.2
Échanges BGP en IPv6 enregistrés par le Ring du NLNOG. . . . . . . . . . . . . . . . .
78
7.1
Réseau de référence du mobile. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
82
7.2
Mobile en déplacement. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
83
7.3
Mise à jour de l’adresse care-of du mobile. . . . . . . . . . . . . . . . . . . . . . . . .
83
7.4
Contact du mobile au travers de son home agent.
. . . . . . . . . . . . . . . . . . . .
83
7.5
Mobilité avec optimisation des chemins. . . . . . . . . . . . . . . . . . . . . . . . . . .
84
8.1
Équipements utilisés pour les tests en laboratoire.
. . . . . . . . . . . . . . . . . . . .
88
8.2
Installation liée à l’expérimentation de l’autoconfiguration stateless (SLAAC). . . . . . .
89
138 / 143
Julien VAUBOURG

link to page 99 link to page 101 link to page 105 link to page 107 link to page 113 link to page 114 link to page 115 link to page 117 link to page 124 link to page 125 link to page 151 Yarding
TABLE DES FIGURES
Équipe réseau Lothaire
8.3
Installation liée à l’expérimentation des tunnels statiques.
. . . . . . . . . . . . . . . .
91
8.4
Installation liée à l’expérimentation du 6to4.
. . . . . . . . . . . . . . . . . . . . . . .
93
8.5
Installation liée à l’expérimentation du 6rd. . . . . . . . . . . . . . . . . . . . . . . . .
97
8.6
Installation liée à l’expérimentation du NAT64 stateless. . . . . . . . . . . . . . . . .
99
8.7
Installation liée à l’expérimentation du NAT64 stateful. . . . . . . . . . . . . . . . . . 105
8.8
Configuration de la règle de NAT64 stateful avec l’ADSM pour IOS 9.
. . . . . . . . . 106
8.9
Autorisation de tous les trafics avec l’ADSM pour IOS 9. . . . . . . . . . . . . . . . . . 107
8.10 Installation liée à l’expérimentation de la mobilité IPv6.
. . . . . . . . . . . . . . . . . 109
8.11 Erreur de checksum lors de l’expérimentation de MIPv6. . . . . . . . . . . . . . . . . . 116
8.12 Installation liée à l’expérimentation du DDNS entre un serveur DHCP et un serveur DNS. 117
139 / 143
Julien VAUBOURG

link to page 151 Yarding
TABLE DES FIGURES
Équipe réseau Lothaire
140 / 143
Julien VAUBOURG

link to page 25 link to page 26 link to page 28 link to page 28 link to page 53 link to page 71 link to page 80 Liste des tableaux
2.1
Exemple d’utilisation de la portée des adresses multicast avec NTP. . . . . . . . . . . .
17
2.2
Adresses multicast couramment utilisées (portée locale). . . . . . . . . . . . . . . . . .
18
2.3
Groupes multicast automatiquement rejoints par une Debian.
. . . . . . . . . . . . . .
20
2.4
Groupes multicast automatiquement rejoints par un routeur Cisco. . . . . . . . . . . . .
20
4.1
Signification des drapeaux de répartition des tâches pour l’autoconfiguration. . . . . . .
45
5.1
Les différents types de NAT (échanges UDP).
. . . . . . . . . . . . . . . . . . . . . .
63
5.2
Comparatif des solutions pour faire cohabiter l’IPv4 et l’IPv6. . . . . . . . . . . . . . .
72


Ce document est distribué sous la licence Creative Commons Attribution-ShareAlike 3.0 France.
Les sources LATEX et SVG sont disponibles sur http://ju.vg.
N’hésitez pas à le corriger, le compléter ou l’actualiser et à me contacter sur B julien@vaubourg.com.
<http://creativecommons.org/licenses/by-sa/3.0/fr>

Document Outline