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 pour Next Generation (génération
suivante)) 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 ce cas où le tunnel est monté.
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"
ACTUCE :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 Simple
Internet Transition (Transition Simple d'Internet). Vous pouvez
vous auto-complimentez : 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/126 dev sixbone
# ip route add 3ffe::0/16 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 :
La dernière, radvd est, comme zebra, un démon d'annonce 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, Mozilla le navigateur,
Apache le serveur web et beaucoup d'autres. Mais ceci est en dehors
du sujet de ce document de routage ;-).
Du coté Cisco, la configuration ressemblera à ceci :
!
interface Tunnel1
description IPv6 tunnel
no ip address
no ip directed-broadcast
ipv6 enable
ipv6 address 3FFE:604:6:7::1/126
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.