IPv6, Precis et concis Baptiste SIMON (aka BeTa) e-glop.net version 1.4 Copyright (c) 2003-2004 Baptiste SIMON 20040426 Du 23 au 25 avril 2004 aura lieu la premiere edition de Libr'East of Paris, un evenement sur trois jours, organise par l'association IDILE, totalement dedie au logiciel Libre. Dans le cadre de ces rencontres, je vais etre amene `a presenter une conference sur IPv6. Ce document a pour but de cadrer le contenu de cette conference en en tracant le plan et les idees directrices. --------------------------------------------------------------------------- Table of Contents 1. [1]Introduction 1.1. [2]D'ou vient on ? 1.1.1. [3]IPv4, les limites en terme d'adressage 1.1.2. [4]IPv4, les limites en terme de routage 1.2. [5]Comment IPv6 s'acquitte des defauts d'IPv4 1.2.1. [6]Le routage avec IPv6 1.2.2. [7]L'adressage avec IPv6 1.2.3. [8]En plus... 2. [9]Aspects Techiques d'IPv6 2.1. [10]IPv6, au premiers abords 2.1.1. [11]La trame IPv6 2.1.2. [12]La notion de portee 2.1.3. [13]Autoconfiguration sans etat 2.2. [14]IPv6, plus en profondeur 2.2.1. [15]Les autres fonctionnalites d'IPv6 2.2.2. [16]Autres usages d'IPv6 3. [17]Concretement 3.1. [18]Aujourd'hui, le net : etat de l'art 3.1.1. [19]6Bone / M6Bone 3.1.2. [20]Providers internationaux et FAI "de bout de chaine" 3.2. [21]Mettre en oeuvre IPv6 3.2.1. [22]Windows, BSD 3.2.2. [23]GNU/Linux (plus approfondi) 3.2.3. [24]Les logiciels tiers 3.3. [25]Quelques solutions de migration 3.3.1. [26]Dual-Stack 3.3.2. [27]Mono-stack, Relais applicatifs 3.3.3. [28]Mono-stack, NAT-PT 3.3.4. [29]Un exemple de scenario de transition 4. [30]Conclusion 4.1. [31]Prospectives 4.1.1. [32]Techniques 4.1.2. [33]Humaines 4.1.3. [34]Financieres 4.2. [35]Enjeux economico-politiques de demain 5. [36]Annexes 5.1. [37]L'auteur 5.2. [38]Support IPv6 francophone 5.3. [39]Aperc,u des divers formats de ce document 5.4. [40]Licence de publication 1. Introduction 1.1. D'ou vient on ? 1.1.1. IPv4, les limites en terme d'adressage * IPv4 ne permet plus d'adresser simplement et universellement tous les equipements du monde * NAT * Proxie plus necessaires au niveau pratique qu'au niveau securite * Historiquement, IPv4 vient des etats-Unis d'Amerique * 72% des adresses IPv4 sont detenues en Amerique du Nord * 17% en Europe * 9% en Asie * Les miettes pour le reste du monde. --------------------------------------------------------------------------- 1.1.2. IPv4, les limites en terme de routage * Impossibilite de faire de la securite de bout-en-bout avec des protocoles comme IPsec, le NAT rendant cela impossible/tres complique. * Evolution du routage dans le coeur d'Internet * 80.000 routes stockees par les routeurs du coeur du reseau il y a quelques annees * 120.000 routes aujourd'hui --------------------------------------------------------------------------- 1.2. Comment IPv6 s'acquitte des defauts d'IPv4 1.2.1. Le routage avec IPv6 Les adresses IPv6 sont conc,ues pour hierarchiser le reseau, en faire une grande arborescence. * Gains en temps et traitement (car on ne traite plus que les prefixes des adresses IPv6) * Gains en memoire necessaire (car on ne stocke plus toutes les routes anarchiquement comme en IPv4) --------------------------------------------------------------------------- 1.2.2. L'adressage avec IPv6 C'est l'evolution majeure (la plus "visible") du protocole. --------------------------------------------------------------------------- 1.2.2.1. L'adressage, vu de loin * 128 bits, entre 1.564 et 3.911.873.538.269.506.102 (3 x 10^15) adresses par mettre carre de surface terrestre * Adressage conc,u de maniere hierarchique (decoupage "geographique" clair via les prefixes). --------------------------------------------------------------------------- 1.2.2.2. L'adressage, vu de pres * Adresses unicast definies comme commencant par les 3 bits 001 * 2000::/3 * 2000:0000:0000:0000:0000:0000:0000:0000/3 * L'international : le TLA * Top Level Aggregator (unite d'aggregation haute) * 13 bits * ce prefixes, de 16 bits au total, sont donnes aux grands operateurs internationaux (les RIR, Regional Internet Registries). En general, ces operateurs ont la particularite de n'avoir aucune route par defaut (le coeur du reseau). * Exemple : Le RIPE-NCC (Renater, Nerim...) a, par exemple, la classe 2001:600::/23 (soit les adresses commenc,ant par des "2001:06" ou des "2001:07") * Le national : le sub-TLA * Sub-Top Level Aggregator (sous-unite d'aggregation haute) * 13 bits * Partie permettant aux unites d'aggregation haute de decouper selon leurs besoins les plages d'adresses qu'ils veulent fournir aux operateurs nationaux (par exemple). * Exemples : 2001:660::/35 (avec la partie reservee...) correspondant `a Renater ou encore 2001:7a8::/32 pour le FAI Nerim. * Partie reservee * 6 bits * Le but de cette partie est de pallier `a un manque potentiel `a venir de TLA ou de NLA * La fin des operateurs : le NLA * Next Level Aggregator (unite d'aggregation basse) * 13 bits (donc 48 bits fixes au total) * Partie permettant aux sous-unites d'aggregation haute de decouper selon leurs besoins les plages d'adresses qu'ils veulent fournir `a leurs clients. * Exemples : 2001:0660:7101::/48 pour l'universite de Caen reliee `a Renater 2001:7a8:4b09::/48 pour mon site. * Le deploiement local : Le SLA * Site Level Aggregator (topologie de site) * 16 bits * Ce dernier decoupage permet aux sites locaux de deployer leurs sous reseaux locaux avec 16 bits d'amplitude (soit 2^16, 65.536 sous reseaux). * Exemple : 2001:7a8:4b09:1::/64 est un des sous reseaux de mon site. * Les machines... * Identifiant d'interface (decoulant de l'EUI-64) * 64 bits * Ce suffixe permet `a chaque machine d'etre, en bout de chaine, connues potentiellement de tous sur le reseau. * Exemple : 2001:7a8:4b09:1::80 pour le serveur web principal de mon site, 2001:7a8:4b09:1:230:1bff:feb1:defa pour ma machine personnelle. --------------------------------------------------------------------------- 1.2.2.3. Construction du suffixe EUI-64 Avec des interfaces possedant des adresses MAC IEEE 802.3 : * 24 bits d'identifiant constructeur (ex: 0x02301B) * 16 bits de bourrage (0xFFFE (sans raison)) * 24 bits d'identifiant d'interface (ex: 0xB1DEFA) * Cela donne donc au final un EUI-64 de type 0230:1bff:feb1:defa Avec des interfaces non universelles (PPP par exemple) : * Si l'identifiant d'interface est unique sur le reseau physique, on bourre l'EUI-64 de 0 `a gauche des bits de cet identifiant, jusqu'`a avoir 64 bits au total. * Si l'interface ne possede pas d'adresse physique (comme les interfaces PPP), il est conseille de prendre l'adresse MAC d'une autre interface, si possible. Sinon, une generation aleatoire reste possible (les conflits IPv6 se detectant tous seuls) --------------------------------------------------------------------------- 1.2.3. En plus... Avec IPv6, on voit arriver l'integration de diverses fonctionnalites, telles que la securite ou la mobilite, dont on reparlera un peu plus tard. On voit aussi integres des principes de QoS empruntes entre autre `a ATM, via le champ d'en-tete IPv6 Traffic Class. Cela permet donc de faire de la qualite de service (theoriquement) de "bout en bout", atout tres interessant pour la visio-conference et la VoIP par exemple... --------------------------------------------------------------------------- 2. Aspects Techiques d'IPv6 2.1. IPv6, au premiers abords 2.1.1. La trame IPv6 Le format d'en-tete d'une trame IPv6 est defini dans la [41]RFC 2460 tel que suit : * Version : identique `a IPv4, specifie sur 4 bits la version du protocole courrant. Ici, ce champ est egal `a 6 (0110). * Traffic Class : sur 8 bits, rempli le meme role que le le champ TOS en IPv4. Il identifie le type de contenu encapsule dans la trame IPv6, afin de permettre des traitements particuliers, entre autre durant le routage de celle ci. * Flow Label : il pousse plus loin les fonctionnalites du champ precedent. Il s'agit ici de faire optionnellement de la QoS, meme si, pour le moment, il n'existe que des drafts concernant cette fonctionnalite. Ce champ fait 20 bits, et il est, pour le moment, fortement inspire des options de QoS que l'on trouve avec ATM. * Payload Length : sur 16 bits, ce champ permet de definir la taille de la trame IPv6, en octet, afin de pouvoir en definir la fin. Pour plus de details, notons que la taille indiquee prend en compte tous les headers `a partir de Payload Length (exclu), ainsi que tout le corps de la trame. Le reste n'est pas compte (puisque toujours identique). * Next Header : specifie sur 8 bits le premier entete suivant contenu dans les donnees vehiculees par la trame IPv6. On trouve ici l'une des particularites les plus interessantes d'IPv6 : a possibilite de definir des extensions. En effet, de maniere "classique", le Next Header sera un en-tete TCP par exemple, mais il peut aussi s'agir d'en-tetes IPv6 supplementaires/optionnels. * Hop Limit : donne le nombre de sauts maximum que peut faire une trame IPv6, depuis sa source jusqu'`a sa destination. Ce champ a une valeur maximale de 255, de par sa taille de 8 bits. Equivalent du champ TTL en IPv4. * Source Address : indique l'adresse ayant emis la trame. Il s'agit bien entendu ici d'une adresse IPv6 classique, codee sur 128 bits. * Destination Address : cf. Source Address. --------------------------------------------------------------------------- 2.1.2. La notion de portee Avec IPv4, il existe des adresses reservees, definies par la RFC 1918, et des adresses dites publiques. Avec IPv6 arrive notion de scope 4 portees differentes : --------------------------------------------------------------------------- 2.1.2.1. global * Adressage commun `a toutes les machines * Pour l'unicast, ce sont les adresses prefixees par 2000::/3 * Routage sans restriction de portee de tous les datagrammes dont les adresses ont une portee globale. * Exemple : 2001:7a8:4b09:1:230:1bff:feb1:defa --------------------------------------------------------------------------- 2.1.2.2. site-local (optionnel) * Adressage commun aux machines d'un meme site * Adresses prefixees par fec0::/48 * Routage des datagrammes dont les adresses ont une portee de lien-local uniquement sur les interfaces liees au reseau physique du site local * Exemple : fec0::1:230:1bff:feb1:defa --------------------------------------------------------------------------- 2.1.2.3. lien-local * Adressage commun aux machines d'un meme lien physique * Adresses prefixees par fe80::/64 * Aucun routage de ces paquets au niveau reseau (couche 3). * Seuls les equipements directement lies entre eux par la couche de liaison de donnees (couche 2) peuvent utiliser ces adresses pour communiquer entre eux. * Si jamais un equipement terminal rec,oit un datagramme sur son adresse de lien-local et que le champ nombre de sauts a ete decremente (255 au depart ici), le datagramme est rejete : il est "passe par" un routeur, et ne provient donc pas du lien-local. * Exemple : fe80::230:1bff:feb1:defa --------------------------------------------------------------------------- 2.1.2.4. Host * Toute machine doit avoir une interface dite de loopback * Equivalent IPv4 : 127.0.0.1/32 * Une adresse unique en IPv6 : ::1/128 --------------------------------------------------------------------------- 2.1.3. Autoconfiguration sans etat L'autoconfiguration IPv6 est l'une de ses pieces maitresses. Elle permet : * La decouverte des prefixes d'adressage et parametrage du suffixe EUI-64 * Verification de l'inexistance de conflits d'adresses sur le reseau * Configuration des adresses de lien-local, site-local (si existant) et globales * L'autoconfiguration du routage (ICMP Router Discovery) * La decouverte des parametres du lien physique * Taille du MTU (Maximum Transfert Unit) * Nombre maximal de sauts autorise * La possibilite de deployer une infrastructure de mobilite IPv6 efficace Cependant l'autoconfiguration a aussi ses limites. Par exemple : l'absence d'autoconfiguration de la securite ou encore la difficulte `a mettre en place des mecanismes de DNS dynamiques. --------------------------------------------------------------------------- 2.2. IPv6, plus en profondeur 2.2.1. Les autres fonctionnalites d'IPv6 2.2.1.1. Mobilite La mobilite dans IPv6 est encore un point sensible. En effet, il manque encore de specifications definitives permettant une interoperabilite optimale entre les divers systemes deployes. --------------------------------------------------------------------------- 2.2.1.1.1. Theorie * Explication de ce que sont les principes de macro-mobilite et de roaming * Le roaming, c'est ce qui existe pour les telephones cellulaires : la possibilite de passer d'un relai `a l'autre de maniere souple et progressive. Autrement dit, avertir ses correspondants du changement en cours de point d'acces. * La macro-mobilite, c'est la possibilite de changer de reseau IP de maniere completement transparente `a l'utilisation. Cela met donc en oeuvre les concepts, plus generaux, de roaming. * Mise en oeuvre theorique dans IPv6 * Notions * Reseau mere * Adresse mere et adresses temporaires * Mise `a jour des associations et duree de vie des adresses * Fonctionnement global * Tunnels IPv6-IPv6 depuis le reseau mere * Utilisation des adresses temporaires --------------------------------------------------------------------------- 2.2.1.1.2. Pratique * Delicat : implementations n'existant que sous Windows, BSD ([42]KAME) et Linux ([43]MIPL) * Implementations trop souvent in-interoperables, `a cause d'un manque de specifications completes et officielles. --------------------------------------------------------------------------- 2.2.1.2. Securite La securite dans IPv6 s'apparente, en terme d'implementation, `a l'IPsec d'IPv4. Comme pour IPv4, IPsec souffre de plusieurs points faibles : * Pas de protection des echanges multicast * Pas d'infrastructure PKI mondiale * Pas de reelle autoconfiguration (il existe le principe de DNSSEC...) Cependant, il existe certaines particularites qui rendent la securisation d'IPv6 tres interessante : * Pas de NAT, d'ou la possibilite de securiser les communications IPv6 de bout-en-bout. * Integration d'IPsec `a la maniere d'une extension d'IPv6 (en-tete Next Header) au lieu d'une surcouche (comme pour IPv4). * L'obligation (de par les specifications du protocole) d'implementer IPsec dans IPv6, permettant ainsi de garantir que chaque equipement connecte peut echanger des donnees de maniere securisee par dessus IPv6. --------------------------------------------------------------------------- 2.2.2. Autres usages d'IPv6 2.2.2.1. Multicast * Historiquement, avec IPv4 * Existe depuis longtemps * Peu rependu pour les utilisateurs Lambda * "Classe D" * Aujourd'hui, avec IPv6 * Prefixe ff00::/8 (ff01::, ff02::, ...) * Les 4 bits suivants sont tous `a 0 pour les adresses multicast temporaires, et le dernier `a 1 pour les adresses permanantes (delivrees par les autorites du reseau). En general, nous obtenons donc ff00::/12 (temporaire). * Les 4 bits suivants definissent la notion de scope vue pour l'unicast. (ex: 2 pour le lien-local, 5 pour le site-local, e pour les adresses globales.) * interets majeurs (comme pour IPv4) sont : * Exemple theorique : mise `a disposition de serveurs de type NTP stratum 1 pour tous (car NTP ne pourrait pas fonctionner comme c,a de ce que je connais) * Diffusion d'informations en continu (streams, ex: webradios, televisions...) * Visio-conferences, VoIP... * Jeux en reseau, travail collaboratif... * Atouts majeurs par rapport au multicast IPv4 : * Existance d'IPv6-multicast depuis les origines d'IPv6 * Possibilite de prevoir l'IPv6-multicast dans tous les elements du reseau * Utilisation d'IPv6-multicast de bout-en-bout, jusque dans chaque foyer * La petite nouveaute : les clients DHCPv6 (autoconfiguration statefull, perdant beaucoup de son sens avec IPv6, de part ses objectifs et sa conception) utilisent IPv6-multicast pour trouver les serveurs DHCPv6, le broadcast n'existant plus. --------------------------------------------------------------------------- 2.2.2.2. Anycast * Encore au stade de la recherche * Principes : * Plusieurs machine possedant la meme IPv6 * On accede plus `a un service qu'`a une machine * On accede `a la premiere machine que l'on est `a meme de "rencontrer" sur le reseau (gain en traffic et en repartition geographique). * Petit exemple avec un reseau local (prefixe virtuel...) * Extremement interessant pour des services comme : * les DNS root * les sites web les plus frequentes de par le monde * tous les services dont la replication est possible et dont la repartition geographique peut etre tres importante. --------------------------------------------------------------------------- 3. Concretement 3.1. Aujourd'hui, le net : etat de l'art 3.1.1. 6Bone / M6Bone * 6Bone * C'est le penchant IPv6 experimental du BackBone IPv4 * Il existe depuis l'ete 1996 (son penchant Europeen, le G6Bone, est arrive un peu avant, au printemps 1996) * Sa fusion avec le BackBone est prevue pour le 6/6/6 (6 juin 2006) * M6Bone * C'est le penchant IPv6 du MBone IPv4 * Le M6Bone arrive en octobre 2001 * Il est encore trop peu rependu `a mon gout (tout comme IPv6 dans sa globalite) : ca peut devenir frein au developpement d'IPv6, en en elevant de l'interet. --------------------------------------------------------------------------- 3.1.2. Providers internationaux et FAI "de bout de chaine" * Le sujet des providers internationaux est plus du ressort de Tayeb Ben Meriem. * Les FAI franc,ais : * Nerim * Gitoyen * ....... :c( --------------------------------------------------------------------------- 3.2. Mettre en oeuvre IPv6 3.2.1. Windows, BSD 3.2.1.1. Windows Non teste. Description : * Pile TCP/IPv6 existant pour NT4, 2000 et XP (en theorie, pour 2003 Server egalement) * Utilisation sommaire mais simple * Tres peu de fonctionnalites de routage Deploiement : * Sous 2000, il "suffit" d'executer un fichier telecharge `a [44]l'adresse suivante. Sous XP, la commande "ipv6 install" doit suffire pour installer sa pile IPv6. Applications : * ipv6.exe (affiche des informations sur la pile IPv6) * ping6.exe * tracert6.exe (traceroute) * ftp * ttcp (Test TCP) * telnet * Internet Explorer (de memoire, seule la version 5.5 est IPv6 compliant) * xchat (version Win32) * Il doit en exister d'autres... --------------------------------------------------------------------------- 3.2.1.2. FreeBSD Non approfondi. Description : * Support natif d'IPv6 (projet KAME). Deploiement : * Soit executer /stand/sysinstall, et repondre "oui" au support d'IPv6, soit modifier le fichier /etc/rc.conf avec ipv6_enable=YES. Puis rebooter le systeme. * Pour fixer des IPv6, il faut rajouter des lignes comme celle qui suit : ipv6_ifconfig_fxp0_alias0="2001:7a8:2001:7a8:4b09:3::21" * ... (rtadvd_enable=YES, ipv6_gateway_enable=YES, ...) Support : * La plupart des applications inclues dans FreeBSD sont IPv6 compliant --------------------------------------------------------------------------- 3.2.1.3. NetBSD/OpenBSD Non approfondi. Description : * Support natif d'IPv6 depuis NetBSD version 1.5 et OpenBSD version 2.5 (projet KAME). Deploiement : * Creer un fichier du type /etc/ifconfig.interface ou interface est l'interface `a configurer... Y ajouter, par exemple, la ligne suivante : inet6 2001:7a8:2001:7a8:4b09:3::53 prefixlen 64 * Renseigner l'option ip6mode dans /etc/rc.conf avec les valeurs suivantes : * router pour faire de cette machine un routeur IPv6 * autohost pour en faire un hote autoconfigure * host pour en faire un hote non autoconfigure * ... (rtadvd=YES, ...) Support : * La plupart des applications inclues dans NetBSD et OpenBSD supportent IPv6 * Firewalling statefull * A noter la presence de NFS et RPC IPv6 compliant * Pour NetBSD, noter aussi l'absence de Bind9 (donc pas de Bind supportant IPv6), et l'absence du support IPv6 dans Postfix. --------------------------------------------------------------------------- 3.2.2. GNU/Linux (plus approfondi) 3.2.2.1. From Scratch Description : * Support partiel d'IPv6 depuis les noyaux 2.2.x * Support natif d'IPsec (ESP & AH) pour IPv6 depuis les noyaux 2.6.x * Support d'IPv6-mobility via [45]le projet MIPL (patches `a appliquer `a certains noyaux uniquement) * Existance d'extensions aux noyaux et aux outils associes `a travers [46]le projet USAGI Deploiement : * Installer le paquet iproute, pour avoir, entre autre, la commande ip. * Configurer son noyau * Ajouter (au moins) les options CONFIG_IPV6=y, CONFIG_INET6_AH=y, CONFIG_INET6_ESP=y (uniquement avec les noyaux 2.6.x pour les deux dernieres options). Mettez =y pour les avoir en static dans le noyau, =m pour les avoir en module. * Compilez votre noyau avec vos nouvelles options et deployez, au besoin, vos nouveaux modules. * Inserez vos modules (modprobe ipv6 ...) ou rebootez sur votre nouveau noyau * L'adressage * ifconfig vous montrera dej`a que votre noyau IPv6 fonctionne $ /sbin/ifconfig eth0 Link encap:Ethernet HWaddr 00:30:1B:B1:DE:FA inet addr:172.16.0.2 Bcast:172.16.255.255 Mask:255.255.0.0 inet6 addr: fe80::230:1bff:feb1:defa/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1492 Metric:1 RX packets:9329 errors:0 dropped:0 overruns:0 frame:0 TX packets:10612 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:2517509 (2.4 MiB) TX bytes:1465573 (1.3 MiB) Interrupt:18 Base address:0xe000 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:78 errors:0 dropped:0 overruns:0 frame:0 TX packets:78 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:5980 (5.8 KiB) TX bytes:5980 (5.8 KiB) * Vous pouvez maintenant parametrer une adresse IPv6 statique choisie arbitrairement avec la commande : ip -6 addr add 2001:7a8:4b09:1::abba/64 dev eth0 * Le routage * ip -6 route vous donnera dej`a les routes initialisees par defaut sur votre systeme fe80::/64 dev eth0 metric 256 mtu 1280 advmss 1220 metric10 64 ff00::/8 dev eth0 metric 256 mtu 1280 advmss 1220 metric10 1 unreachable default dev lo proto none metric -1 error -101 advmss 1220 metric10 255 * Pour ajouter manuellement une route, faire : ip -6 route add 2000::/3 via fe80::250:fcff:fe6d:b602 dev eth0 ou fe80::250:fcff:fe6d:b602 est l'adresse lien-local de votre routeur unicast par defaut et eth0 votre interface reseau. * Parametrage de radvd pour l'autoconfiguration stateless * Installer radvd (par les sources ou via votre distribution) sur votre routeur * Renseignez le fichier /etc/radvd.conf de la maniere suivante (exemple) interface eth1 { AdvSendAdvert on; MinRtrAdvInterval 3; MaxRtrAdvInterval 10; AdvLinkMTU 1280; # Disable Mobile IPv6 support AdvHomeAgentFlag off; prefix 2001:7a8:4b09:1::/64 { AdvOnLink on; AdvAutonomous on; }; }; * Lancez radvd par la commande /sbin/radvd ou par les rc-scripts traditonnels. Support : * Tous les logiciels supportant IPv6 sont portables sous GNU/Linux de la meme maniere (exception faite de NFS/RPC qui posent d'autres problematiques). --------------------------------------------------------------------------- 3.2.2.2. RedHat Linux Non approfondi. Description : * Support officiel d'IPv6 depuis la RedHat 7.1 (8.0 pour la Mandrake) * Pas de support a priori des options de securite IPv6, ni de la mobilite Deploiement : * Verifiez la presence du fichier representatif du support d'IPv6 : /etc/sysconfig/network-scripts/network-functions-ipv6 * Ajoutez le support d'IPv6 dans votre noyau avec la commande modprobe ipv6. * L'ajout de NETWORKING_IPV6=yes dans le fichier /etc/sysconfig/network permettra d'automatiser les operations relatives `a IPv6 `a chaque demarrage. (Il est necessaire de redemarrer le service network ou de rebooter la machine pour rendre cela efficace.) --------------------------------------------------------------------------- 3.2.2.3. Debian GNU/Linux Description : * Support d'IPv6 `a partir de la woody Deploiement : * Ajout dynamique du support d'IPv6 dans votre noyau avec modprobe ipv6 * Configuration statique d'IPv6 : Ajouter les options suivantes dans votre /etc/network/interfaces iface eth0 inet6 static pre-up modprobe ipv6 address 2001:7a8:4b09:1::abba netmask 64 #mtu 1280 #up echo 0 > /proc/sys/net/ipv6/conf/all/autoconf #gateway fe80::250:fcff:fe6d:b602 * Installation de radvd par la commande apt-get install radvd Support : * Pour avoir un ensemble applicatif le plus large possible supportant IPv6, il est conseille d'ajouter un des mirroirs [47]Debian-IPv6 dans votre /etc/apt/sources.list (puis apt-get update) * Il existe aussi une liste de diffusion publique pour le support IPv6 de la Debian : debian-ipv6@lists.debian.org --------------------------------------------------------------------------- 3.2.2.4. Autres * Gentoo Linux : [48]http://doc.gentoofr.org/Members/BeTa/ipv6-gentoo-howto * Suse Linux : [49]http://www.feyrer.de/IPv6/SuSE73-IPv6+6to4-setup.html * Slackware : http://www.slackware-fr.com/ --------------------------------------------------------------------------- 3.2.3. Les logiciels tiers 3.2.3.1. Vue generale Il existe en general au moins un logiciel supportant l'IPv6 (nativement ou via des patches) pour chaque domaine. Il existe quelques exceptions comme Squid, pour lesquelles il est tres difficile d'obtenir des versions compatibles IPv6. Cependant ces exceptions sont rares. --------------------------------------------------------------------------- 3.2.3.2. Postfix Postfix supporte IPv6 de maniere stable depuis ses versions 2.x.x `a travers des patches. Vous pouvez les retrouver `a l'adresse [50]http://www.ipnet6.org/postfix/ Exemple d'integration d'IPv6 dans la configuration de Postfix mynetworks = 192.168.5.0/24, 192.168.1.0/24, 192.168.2.0/24, 127.0.0.0/8, [::1]/128, [2001:7a8:4b09:3::]/64, [2001:7a8:4b09:1::]/64, [2001:7a8:4b09::]/64, [2001:7a8:4b09:16::]/64 --------------------------------------------------------------------------- 3.2.3.3. Apache * Apache-2.0.x supporte nativement IPv6. * Apache-1.3.x supporte IPv6 via des patches Si vous utilisez des wildcards pour specifier vos binds IP, vous ne verrez aucune difference pour le support d'IPv6, du moment que votre systeme le supporte lui-meme. Si vous souhaitez preciser manuellement les IP `a binder, il sera necessaire d'ajouter les [], par exemple [...] --------------------------------------------------------------------------- 3.2.3.4. Bind9 Bind supporte nativement IPv6 dans ses enregistrements DNS `a partir de ses versions 8.x.y (avec x > 0), et au niveau connectivite reseau, `a partir de ses version 9.x. Pour les enregistrements DNS, il s'agit l`a d'enregistrements tout `a fait classiques mais de type AAAA ou PTR tout ce qu'il y a de plus classiques. Pour les operations reseau sur IPv6, Bind a besoin d'une part qu'on lui precise la necessite d'ecouter sur IPv6 via la directive listen-on-v6 { any; }; dans son fichier /etc/bind/named.conf. Pour la notation des adresses IPv6 dans ce meme fichier, il n'y a pas de difference avec les adresses IPv4, comme vous pouvez le constater : allow-transfer { 213.42.145.91; 2001:7a8:4b09:3::/64; ::1/128; }; Par contre, il est interessant de noter les directives transfer-source-v6 et notify-source-v6 permettant de "forcer" l'adresse source IPv6 que Bind utilisera pour communiquer avec ses correspondants. Cela peut s'averer grandement utile, IPv6 permettant l'utilisation d'adresses multiples sur chaque interface. --------------------------------------------------------------------------- 3.2.3.5. Jabberd Jabberd supporte nativement IPv6 depuis la version 1.4.3. Si vous ne specifiez pas d'IP specifique `a binder, votre serveur ecoutera automatiquement sur toutes vos adresses IPv6, sans modification supplementaire. --------------------------------------------------------------------------- 3.2.3.6. Mozilla, KDE, pure-ftpd, etc... Il existe de nombreuses applications supportant IPv6 dont je n'ai pas parle ici. Au nombre d'entre elles, on peut trouver : * de nombreux serveurs FTP, OpenSSH, Cups (`a partir de sa version 1.2 `a venir), ... * le projet KDE (les sockets KDE supportent IPv6 par defaut) * les divers outils Mozilla ainsi que leurs derives (Thunderbird, etc...) * irssi, xchat, gaim, ... * ... ... ... --------------------------------------------------------------------------- 3.3. Quelques solutions de migration 3.3.1. Dual-Stack En franc,ais : "double pile". Cela consiste `a relier `a la fois en IPv4 et en IPv6 tout equipement relie au reseau. Ainsi, en privilegiant la pile IPv6, les equipements l'utilisent quand il est disponible, et passent sur leur pile IPv4 en cas d'indisponibilite. Inconvenients : * Ne resoud pas les problemes de penurie d'adresses IPv4 * Maintenance plus lourde sur l'ensemble des equipements du reseau Avantage : * Mecanisme de transition le plus simple et le plus souple --------------------------------------------------------------------------- 3.3.2. Mono-stack, Relais applicatifs En franc,ais : "simple pile, et relais applicatifs". Cette strategie consiste ne relier tous les equipements terminaux que sur IPv6, et de prevoir des relais applicatifs ("proxies" ou "serveurs mandataires") double pile pour acceder au reseau v4 inaccessible en v6. Inconvenients : * Oblige `a rendre par avance toutes les applications des "equipements terminaux" compatibles IPv6, * Oblige `a mettre en place un relai applicatif par service (un proxy DNS, un proxy web, un proxy pour chaque service de messagerie, ...), et qu'il supporte `a la fois IPv4 et IPv6. Avantages : * Permet d'avoir des clients uniquement v6 * Resoud partiellement le probleme de penurie des adresses IPv4 --------------------------------------------------------------------------- 3.3.3. Mono-stack, NAT-PT En franc,ais : "Simple pile, translation de protocole" Ici, tous les equipements terminaux possedent une pile IPv6 simple et sont configures comme s'ils evoluaient dans un monde totalement v6. Pour ce faire, il est indispensable de disposer d'un relai DNS special ainsi que d'un routeur capable de faire de la translation d'adresses d'IPv6 vers IPv4. Au niveau du relai DNS, ce dernier doit transformer toutes les requetes sur des enregistrements A en enregistrements AAAA particuliers. En effet, une adresse de type 216.239.59.99 sera alors traduite en 2001:7a8:4b09:ffff:216:239:59:99 (simplifiee pour l'exemple) par le relai. Par la suite, les equipements voulant acceder `a 216.239.59.99 depuis le reseau v6 uniquement, y accederont par l'adresse IPv6 2001:7a8:4b09:ffff:216:239:59:99 et un routeur double pile capable de comprendre cela fera une translation d'adresse comme en IPv4 avec le NAT, en convertissant l'IPv6 en IPv4. Inconvenients : * Oblige `a avoir rendu toutes les applications des "equipements terminaux" compatibles IPv6 par avance * Oblige `a mettre en place un relai DNS et un routeur specialises dans le NAT-PT Avantages : * Seuls un relai DNS accompagne d'un routeur specialises sont necessaires en plus des services habituels * Permet d'avoir des clients uniquement v6 * Bonne alternative `a la penurie d'adresses IPv4 --------------------------------------------------------------------------- 3.3.4. Un exemple de scenario de transition * IPv6 dans les routeurs * Connexion aux reseaux IPv6 mondiaux * IPv6 dans les serveurs internes * IPv6 dans les terminaux * Presence majoritaire d'IPv6 dans le reseau interne * Compatibilite IPv4 (delegation au fournisseur d'acces, mise en place des mecanismes vus plus haut, etc...) --------------------------------------------------------------------------- 4. Conclusion 4.1. Prospectives 4.1.1. Techniques IPv4 commence `a poser de tres gros soucis en : * Asie (particulierement) * Afrique * Amerique du Sud IPv6 arrive `a tres grands pas en Asie : * Au niveau des infrastructures reseau (la Chine dispose actuellement du plus grand reseau IPv6 au monde) * Au niveau du developpement applicatif (particulierement visible dans le monde OpenSource avec des projets comme KAME, USAGI, WIDE, ...) * Au niveau des besoins des utilisateurs (besoin d'un acces direct `a l'Internet mondial) IPv6 est relativement applicable des aujourd'hui : * A petite et moyenne echelle, car il existe un grand nombre de solutions `a la fois applicatives et materielles, meme si un grand nombre de portages de logiciels proprietaires reste `a faire (produits Microsoft en particulier) * A plus grande echelle, Cisco, Juniper, 6Wind etc... disposent dej`a de solutions integrant nativement IPv6. Arrivee de nouveaux besoins : * Telephonie mobile de Neme generation * Nouveaux services (telesurveillance, VoIP/telephonie sur IP, ...) * Vehicules communicants, reseaux de capteurs, electronique embarquee, etc... Si on prend en compte un renouvellement du materiel reseau regulier, on peut considerer qu'il faut mettre `a jour tout materiel ayant plus de 5 ans d'age : * Depuis 2003, il est possible d'integrer IPv6 dans ses equipements, en general sans surcout dissuasif. * D'ici 2008, on peut donc decemment croire que tous auront ete renouveles et qu'ils seront donc tous compatibles avec IPv6. * Le materiel ne sera plus un facteur limitant le deploiement d'IPv6. * Le logiciel ne devrait plus non plus en etre un frein (l'OpenSource est dej`a largement en mouvement, le logiciel proprietaire suit aussi, mais plus doucement) --------------------------------------------------------------------------- 4.1.2. Humaines Il existe et existera encore de gros freins humains au developpement d'IPv6, en particulier en Amerique du Nord et en Europe : * Reticence claire de la grande majorite de "petits" FAI par rapport `a IPv6 * Disposition d'un nombre encore suffisant d'IPv4 * Vue tres pragmatique des couts d'une migration qui n'aura, selon eux, pas forcement de retombees commerciales du cote de l'utilisateur final. * Probleme de formation : meme si IPv6 n'est pas si complexe que c,a `a apprehender, il existe un vrai manque dans les formations specialisees sur ce domaine. Cependant, malgre ces freins, la presence d'IPv6 avance dans les esprits : * On peut voir de plus en plus de grands operateurs nationaux ou internationaux se relier, malgre leurs apparentes reticences, aux reseaux IPv6 (6Bone ou BackBone) qui prennent de plus en plus d'ampleur. * Tout le monde se prepare plus ou moins secretement au passage `a IPv6, le jour ou le besoin sera clairement identifie. IPv6 explosera reellement dans les utilisations de tous les jours lorsque ses avantages techniques entraineront son adoption par le grand public. --------------------------------------------------------------------------- 4.1.3. Financieres Il arrivera un jour ou IPv4 coutera plus cher `a maintenir que ses equivalent IPv6 : * Problematiques de competences avec IPv4 (on peut rever...) * Problematique de routage au niveau du BackBone entrainant de gros surcouts au niveau materiel * Problematique de fonctionnalites plus couteuses `a mettre en place avec IPv4 * Il est plus couteux, par exemple, de mettre en place des fonctionnalites IPsec sur IPv4 que sur IPv6 quand les technologies sont maitrisees. * La mobilite dans IPv4 est plus couteuse en ressources reseau et humaines que son equivalent avec IPv6. * Problematique de rarete des adresses IPv4 ("Tout ce qui est rare est cher...") --------------------------------------------------------------------------- 4.2. Enjeux economico-politiques de demain Comme nous avons pu le voir, IPv6 arrive... meme s'il lui faut le temps. Cependant, on peut reconnaitre trois des grandes cles de l'avenir d'IPv6 : * L'anticipation `a l'echelle "micro" * Les enjeux industriels mondiaux * Ouverture potentielle du marche `a de nouveaux acteurs industriels * Le besoin reel de voir arriver IPv6 en Asie (par exemple) donne de vraies raisons aux industriels de cette region du monde de reprendre l'avance qu'ils ont toujours eu du mal rattrapper avec IPv4 face aux grands constructeurs occidentaux * Les enjeux politiques mondiaux * Notre societe actuelle s'articule autour de l'information. Ainsi, Internet prend une place de plus en plus grandissante. * L'arrivee d'IPv6 permet la revision complete de l'echiquier mondial du reseau des reseaux. * Alors que l'Amerique du Nord et l'Europe etaient habituees `a la repartition actuelle des adresses IPv4, leur assurant un status privilegie, "fige", IPv6 repositionne les differents acteurs d'Internet sur un pied d'egalite. Ainsi, selon le Gartner Group (analyste industriel) et Adam Judd (vice-president de Juniper Networks Asie), l'adoption massive d'IPv6 n'aura probablement pas lieu, au minimum, avant 2008. En attendant cette echeance, il nous appartient `a tous de rester vigilant et d'anticiper cette nouvelle "etape" technologique. --------------------------------------------------------------------------- 5. Annexes 5.1. L'auteur [51]Baptiste SIMON <[52]baptiste.simon@e-glop.net> Administrateur systemes GNU/Linux & UNIX [53]A la recherche d'emploi --------------------------------------------------------------------------- 5.2. Support IPv6 francophone Il existe une liste de diffusion francophone ouverte `a tous traitant d'IPv6. Vous pourrez la trouver sur [54]http://lists.e-glop.net/mailman/listinfo/ipv6-fr. N'hesitez pas `a nous y rejoindre. --------------------------------------------------------------------------- 5.3. Aperc,u des divers formats de ce document Ce document a ete redige au format [55]RST avec KWrite puis converti aux formats DN-XML et Docbook avec [56]dn2dbk.xsl. Les differentes versions ci-dessous ont ete realisees avec les feuilles XSLT officielles de docbook [57][1] et les outils du paquet [58]xmlto de la Debian GNU/Linux. Retrouvez toutes ces version ici : * [59]XHTML * [60]HTML * [61]PDF * [62]postcript * [63]Texte brut * [64]RTF * [65]reStructuredText * [66]DocBook - XML * [67]DN-XML * [68]XSL-FO --------------------------------------------------------------------------- 5.4. Licence de publication Ce document issu de [69]www.e-glop.net est soumis `a la licence [70]Creative Commons by-sa. Permission vous est donnee de distribuer, modifier des copies de ce document (traduction, modifications, adaptation, etc...) tant que vous respectez la licence sus-citee. Notes [71][1] paquet [72]docbook-xsl sur Debian GNU/Linux References Visible links 1. file:///tmp/html-Xx5mm6#introduction 2. file:///tmp/html-Xx5mm6#d-o-vient-on 3. file:///tmp/html-Xx5mm6#ipv4-les-limites-en-terme-d-adressage 4. file:///tmp/html-Xx5mm6#ipv4-les-limites-en-terme-de-routage 5. file:///tmp/html-Xx5mm6#comment-ipv6-s-acquitte-des-d-fauts-d-ipv4 6. file:///tmp/html-Xx5mm6#le-routage-avec-ipv6 7. file:///tmp/html-Xx5mm6#l-adressage-avec-ipv6 8. file:///tmp/html-Xx5mm6#en-plus 9. file:///tmp/html-Xx5mm6#aspects-techiques-d-ipv6 10. file:///tmp/html-Xx5mm6#ipv6-au-premiers-abords 11. file:///tmp/html-Xx5mm6#la-trame-ipv6 12. file:///tmp/html-Xx5mm6#la-notion-de-port-e 13. file:///tmp/html-Xx5mm6#autoconfiguration-sans-tat 14. file:///tmp/html-Xx5mm6#ipv6-plus-en-profondeur 15. file:///tmp/html-Xx5mm6#les-autres-fonctionnalit-s-d-ipv6 16. file:///tmp/html-Xx5mm6#autres-usages-d-ipv6 17. file:///tmp/html-Xx5mm6#concr-tement 18. file:///tmp/html-Xx5mm6#aujourd-hui-le-net-tat-de-l-art 19. file:///tmp/html-Xx5mm6#bone-m6bone 20. file:///tmp/html-Xx5mm6#providers-internationaux-et-fai-de-bout-de-cha-ne 21. file:///tmp/html-Xx5mm6#mettre-en-oeuvre-ipv6 22. file:///tmp/html-Xx5mm6#windows-bsd 23. file:///tmp/html-Xx5mm6#gnu-linux-plus-approfondi 24. file:///tmp/html-Xx5mm6#les-logiciels-tiers 25. file:///tmp/html-Xx5mm6#quelques-solutions-de-migration 26. file:///tmp/html-Xx5mm6#dual-stack 27. file:///tmp/html-Xx5mm6#mono-stack-relais-applicatifs 28. file:///tmp/html-Xx5mm6#mono-stack-nat-pt 29. file:///tmp/html-Xx5mm6#un-exemple-de-sc-nario-de-transition 30. file:///tmp/html-Xx5mm6#conclusion 31. file:///tmp/html-Xx5mm6#prospectives 32. file:///tmp/html-Xx5mm6#techniques 33. file:///tmp/html-Xx5mm6#humaines 34. file:///tmp/html-Xx5mm6#financi-res 35. file:///tmp/html-Xx5mm6#enjeux-conomico-politiques-de-demain 36. file:///tmp/html-Xx5mm6#annexes 37. file:///tmp/html-Xx5mm6#l-auteur 38. file:///tmp/html-Xx5mm6#support-ipv6-francophone 39. file:///tmp/html-Xx5mm6#aper-u-des-divers-formats-de-ce-document 40. file:///tmp/html-Xx5mm6#licence-de-publication 41. http://www.faqs.org/rfcs/rfc2460.html 42. http://www.kame.net/ 43. http://www.mobile-ipv6.org/ 44. http://www.microsoft.com/WINDOWS2000/technologies/communications/ipv6/ 45. http://www.mobile-ipv6.org/ 46. http://www.linux-ipv6.org/ 47. http://debian.fabbione.net/ 48. http://doc.gentoofr.org/Members/BeTa/ipv6-gentoo-howto 49. http://www.feyrer.de/IPv6/SuSE73-IPv6+6to4-setup.html 50. http://www.ipnet6.org/postfix/ 51. http://www.e-glop.net/ 52. mailto:baptiste.simon@e-glop.net 53. http://www.e-glop.net/cv/ 54. http://lists.e-glop.net/mailman/listinfo/ipv6-fr 55. http://docutils.sourceforge.net/ 56. http://membres.lycos.fr/ebellot/dn2dbk/ 57. file:///tmp/html-Xx5mm6#FTN.id2 58. http://cyberelk.net/tim/xmlto/ 59. http://www.e-glop.net/howtos/ipv6-complet.xhtml 60. http://www.e-glop.net/howtos/ipv6-complet.html 61. http://www.e-glop.net/howtos/ipv6-complet.pdf 62. http://www.e-glop.net/howtos/ipv6-complet.ps 63. http://www.e-glop.net/howtos/ipv6-complet.txt 64. http://www.e-glop.net/howtos/usbtorage-sdcard.rtf 65. http://www.e-glop.net/howtos/ipv6-complet.rst 66. http://www.e-glop.net/howtos/ipv6-complet.db-xml 67. http://www.e-glop.net/howtos/ipv6-complet.dn-xml 68. http://www.e-glop.net/howtos/ipv6-complet.fo 69. http://www.e-glop.net/ 70. http://creativecommons.org/licenses/by-sa/1.0/ 71. file:///tmp/html-Xx5mm6#id2 72. http://www.docbook.org/wiki/moin.cgi/DocBookXslStylesheets