Par Marco Davids <marco@sara.nl>
NOTE au mainteneur :
En ce qui me concerne, ce tunnel IPv6-IPv4 n'est pas, par
définition, un tunnel GRE. Vous
pouvez réaliser un tunnel IPv6 sur IPv4 au moyen des périphériques
tunnels GRE (tunnels
GRE N'IMPORTE QUOI vers IPv4), mais le
périphérique utilisé ici (sit
) ne
permet que des tunnels IPv6 sur IPv4, ce qui est quelque chose de
différent.
Voici une autre application des possibilités de tunnels de Linux. Celle-ci est populaire parmi les premiers adeptes d'IPv6 ou les pionniers si vous préférez. L'exemple pratique décrit ci-dessous n'est certainement pas la seule manière de réaliser un tunnel IPv6. Cependant, c'est la méthode qui est souvent utilisée pour réaliser un tunnel entre Linux et un routeur Cisco IPv6 et l'expérience m'a appris que c'est ce type d'équipement que beaucoup de personnes ont. Dix contre un que ceci s'appliquera aussi pour vous ;-).
De petites choses à propos des adresses IPv6 :
Les adresses IPv6 sont, en comparaison avec les adresses IPv4, vraiment grandes : 128 bits contre 32 bits. Et ceci nous fournit la chose dont nous avons besoin : beaucoup, beaucoup d'adresses IP : 340,282,266,920,938,463,463,374,607,431,768,211,465 pour être précis. A part ceci, IPv6 (ou IPng génération suivante (Next Generation)) est supposé fournir des tables de routage plus petites sur les routeurs des dorsales Internet, une configuration plus simple des équipements, une meilleure sécurité au niveau IP et un meilleur support pour la Qualité de Service (QoS).
Un exemple : 2002:836b:9820:0000:0000:0000:836b:9886
Ecrire les adresses IPv6 peut être un peu lourd. Il existe donc des règles qui rendent la vie plus facile :
-
Ne pas utiliser les zéros de tête, comme dans IPv4 ;
-
Utiliser des double-points de séparation tous les 16 bits ou 2 octets ;
-
Quand vous avez beaucoup de zéros consécutifs, vous pouvez écrire
::
. Vous ne pouvez, cependant, faire cela qu'une seule fois par adresse et seulement pour une longueur de 16 bits.
L'adresse 2002:836b:9820:0000:0000:0000:836b:9886
peut être
écrite 2002:836b:9820::836b:9886
, ce
qui est plus amical.
Un autre exemple : l'adresse 3ffe:0000:0000:0000:0000:0000:34A1:F32C
peut être
écrite 3ffe::20:34A1:F32C
, ce qui est
beaucoup plus court.
IPv6 a pour but d'être le successeur de l'actuel IPv4. Dans la mesure où cette technologie est relativement récente, il n'y a pas encore de réseau natif IPv6 à l'échelle mondiale. Pour permettre un développement rapide, la dorsale IPv6 (6bone) a été introduite.
Les réseaux natifs IPv6 sont interconnectés grâce à l'encapsulation du protocole IPv6 dans des paquets IPv4, qui sont envoyés à travers l'infrastructure IPv4 existante, d'un site IPv6 à un autre.
C'est dans cette situation que l'on monte un tunnel.
Pour être capable d'utiliser IPv6, vous devrez avoir un noyau qui le supporte. Il y a beaucoup de bons documents qui expliquent la manière de réaliser cela. Mais, tout se résume à quelques étapes :
-
Récupérer une distribution Linux récente, avec une glibc convenable.
-
Récupérer alors les sources à jour du noyau.
Si tout cela est fait, vous pouvez alors poursuivre en compilant un noyau supportant l'IPv6 :
-
Aller dans
/usr/src/linux
et tapez : -
make menuconfig
-
Choisir
Networking Options
-
Sélectionner
The IPv6 protocol
,IPv6: enable EUI-64 token format
,IPv6: disable provider based addresses
ASTUCE :Ne compiler pas ces options en tant que module. Ceci ne marchera souvent pas bien.
En d'autres termes, compilez IPv6 directement dans votre noyau. Vous pouvez alors sauvegarder votre configuration comme d'habitude et entreprendre la compilation de votre noyau.
ASTUCE: Avant de faire cela, modifier votre Makefile comme suit
: EXTRAVERSION = -x ; --> ; EXTRAVERSION =
-x-IPv6
Il y a beaucoup de bonnes documentations sur la compilation et l'installation d'un noyau. Cependant, ce document ne traite pas de ce sujet. Si vous rencontrez des problèmes à ce niveau, allez et recherchez dans la documentation des renseignements sur la compilation du noyau Linux correspondant à vos propres spécifications.
Le fichier /usr/src/linux/README
peut constituer un bon départ. Après avoir réalisé tout ceci, et
redémarré avec votre nouveau noyau flambant neuf, vous pouvez
lancer la commande /sbin/ifconfig
-a et noter un nouveau périphérique sit0
. SIT
signifie Transition Simple d'Internet (Simple Internet Transition). Vous pouvez vous
auto complimenter : vous avez maintenant franchi une étape
importante vers IP, la prochaine génération ;-)
Passons maintenant à l'étape suivante. Vous voulez connecter votre hôte ou peut-être même tout votre réseau LAN à d'autres réseaux IPv6. Cela pourrait être la dorsale IPv6 « 6bone » qui a été spécialement mise en place dans ce but particulier.
Supposons que vous avez le réseau IPv6 suivant : 3ffe:604:6:8::/64
et que vous vouliez le connecter
à une dorsale IPv6 ou à un ami. Notez, s'il vous plaît, que la
notation sous-réseau /64
est similaire
à celle des adresses IPv4.
Votre adresse IPv4 est 145.100.24.181
et le routeur 6bone a l'adresse
IPv4 145.100.1.5
.
# ip tunnel add sixbone mode sit remote 145.100.1.5 [local 145.100.24.181 ttl 225] # ip link set sixbone up # ip addr add 3FFE:604:6:7::2/96 dev sixbone # ip route add 3ffe::0/15 dev sixbone
Discutons de ceci. Dans la première ligne, nous avons créé un
périphérique appelé sixbone
. Nous lui
avons donné l'attribut sit
(mode sit
) (qui est le tunnel IPv6
dans IPv4) et nous lui avons dit où aller (remote
) et d'où nous venions (local
). TTL
est
configuré à son maximum, 255.
Ensuite, nous avons rendu le périphérique actif (up
). Après cela, nous avons ajouté notre propre
adresse réseau et configuré une route pour 3ffe::/15
(qui est actuellement la totalité du
6bone) à travers le tunnel. Si la machine sur laquelle vous mettez
en place tout ceci est votre passerelle IPv6, ajoutez alors les
lignes suivantes :
# echo 1 >/proc/sys/net/ipv6/conf/all/forwarding # /usr/local/sbin/radvd
En dernière instruction, radvd est un démon d'annonce comme zebra qui permet de supporter les fonctionnalités d'autoconfiguration d'IPv6. Recherchez le avec votre moteur de recherche favori. Vous pouvez vérifier les choses comme ceci :
# /sbin/ip -f inet6 addr
Si vous arrivez à avoir radvd tournant sur votre passerelle IPv6 et que vous démarrez une machine avec IPv6 sur votre réseau local, vous serez ravi de voir les bénéfices de l'autoconfiguration IPv6 :
# /sbin/ip -f inet6 addr 1: lo: <LOOPBACK,UP> mtu 3924 qdisc noqueue inet6 ::1/128 scope host 3: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 100 inet6 3ffe:604:6:8:5054:4cff:fe01:e3d6/64 scope global dynamic valid_lft forever preferred_lft 604646sec inet6 fe80::5054:4cff:fe01:e3d6/10 scope link
Vous pouvez maintenant configurer votre serveur de noms pour les
adresses IPv6. Le type A
a un
équivalent pour IPv6 : AAAA
.
L'équivalent de in-addr.arpa
est :
ip6.int
. Il y a beaucoup
d'informations disponibles sur ce sujet.
Il y a un nombre croissant d'applications IPv6 disponibles, comme le shell sécurisé, telnet, inetd, le navigateur Mozilla, le serveur web Apache et beaucoup d'autres. Mais ceci est en dehors du sujet de ce document de routage ;-).
Du côté Cisco, la configuration ressemblera à ceci :
! interface Tunnel1 description IPv6 tunnel no ip address no ip directed-broadcast ipv6 address 3FFE:604:6:7::1/96 tunnel source Serial0 tunnel destination 145.100.24.181 tunnel mode ipv6ip ! ipv6 route 3FFE:604:6:8::/64 Tunnel1
Si vous n'avez pas un Cisco à votre disposition, essayez un des prestataires de tunnel IPv6 disponible sur Internet. Ils sont prêts à configurer leur Cisco avec un tunnel supplémentaire pour vous, le plus souvent au moyen d'une agréable interface web. Cherchez ipv6 tunnel broker avec votre moteur de recherche favori.