Mise en oeuvre d’IPv6 sous Linux
Mise en oeuvre sur un système Linux 2.6
Le support d’IPv6 dans le noyau Linux a été implémenté pour la première fois dans un noyau de la série 2.2. Sans que je puisse le garantir, les manipulations présentées ci-après devraient fonctionner sans problème sur un noyau 2.4 avec peut-être quelques adaptations.
Ajout du support du protocole IPv6 dans le noyau
Le noyau fourni par la plupart des distributions modernes offre le support de l’IPv6. Pour vous en assurer, il suffit, en tant que super-utilisateur (root) de saisir les commandes suivantes :
modprobe ipv6
ifconfig | grep inet6
Si la deuxième commande affiche quelque chose, c’est que le support est activé, sinon, il faudra recompiler le noyau.
Options du noyau
Sur un noyau 2.6, les options relatives à IPv6 se trouvent dans :
Device Drivers --->
Networking Support --->
Networking Options --->
Les options à activer sont :
The IPv6 Protocol : Activation de la pile IPv6
IPv6 : Privacy Extensions (RFC 3041) support : Activation du système d’autoconfiguration
IPv6 : Router Preference (RFC 4191) support : Support pour les informations avancées des routeurs
IPv6 : Route Information (RFC 4191) support
IPv6 : AH transformation : Support pour l’authentification IPSec
IPv6 : ESP transformation : Support pour le cryptage IPSec
IPv6 : IPComp transformation : Support pour la compression des données pour IPSec
IPv6 : tunnel transformation : Support pour la création de tunnels IPv6 dans IPv6
IPv6 : IPv6-in-IPv4 tunnel : Support pour la création de tunnels IPv6 dans IPv4
IPv6 : IPv6-in-IPv6 tunnel : Support pour la création de tunnels IPv6 dans IPv6
IPv6 : Mobility : Support de la mobilité
IPv6 : IPsec transport mode : Support pour le mode transport d’IPSec
IPv6 : IPsec tunnel mode : Support pour le mode tunnel d’IPSec
IPv6 : IPsec BEET mode : Support du mode BEET d’IPSec
IPv6 : MIPv6 route optimization mode : Système d’optimisation des routes
IPv6 : Multiple Routing Tables
Pour l’activation de la version IPv6 de NetFilter (le firewall de Linux), il faut activer les options qui se trouvent dans :
Device Drivers --->
Networking Support --->
Networking Options --->
Network packet filtering --->
IPv6 : Netfilter Configuration --->
Une fois ces options activées (en module ou en dur), il suffit de recompiler le noyau à l’aide des commandes classiques.
Enfin, après redémarrage et chargement (éventuel) du module, la commande "ifconfig" permet de vérifier que le support d’IPv6 est bien chargé : Il suffit d’avoir au minimum l’adresse de portée "lien local" (celle commençant par FE80).
eth0 Lien encap:Ethernet HWaddr 00:0A:E4:FC:E7:83
inet adr:192.168.0.4 Bcast:192.168.0.255 Masque:255.255.255.0
adr inet6 : fe80 ::20a:e4ff:fefc:e783/64 Scope:Lien
adr inet6 : fec0 ::4/64 Scope:Site
Configuration des paramètres IPv6
Configuration des adresses
La plupart des distributions proposent déjà la possibilité de configurer les adresses IPv6 dans les fichiers de configuration, pour savoir comment faire, il faudra se reporter à leurs documentations respectives.
Cependant, la procédure manuelle et universelle est présentée ci-dessous.
La configuration d’une adresse IPv6 se fait à l’aide de la commande "ifconfig" (en supposant que eth0 est l’interface à configurer) :
ifconfig eth0 add fec0:1 ::ab5:1/64
De même, la suppression d’une adresse IPv6 se fait avec :
ifconfig eth0 del fec0:1 ::ab5:1/64
Renseignement du serveur DNS
La configuration du serveur DNS auquel le poste s’adressera se fait de la même manière qu’en IPv4. La syntaxe du fichier /etc/resolv.conf est la même, on indique seulement une adresse IPv6 au lieu de l’adress IPv4
Par exemple :
nameserver [fec0 ::4]
Configuration du routage
La manipulation des tables de routage se fait à l’aide de la commande "route" à laquelle il faut passer le paramètre "—inet6" en plus des autres paramètres :
L’affichage des routes disponibles se fait à l’aide de la commande suivante :
route -A inet6
L’ajout et la suppression d’une route vers un réseau distant se fait avec les commandes suivantes :
route —inet6 add <réseau>/<longueurpréfixe> gw <adresseipv6>
route —inet6 del <réseau>/<longueurpréfixe> gw <adresseipv6>
On peut également remplacer "<réseau>/<longueurpréfixe>" par "default" si on veut ajouter une route par défaut.
Par exemple : (en supposant que FEC0:2 ::/64 est le réseau à atteindre et FEC0:1 ::1 est l’adresse du routeur)
route —inet6 add fec0:2 ::/64 gw fec0:1 ::1
route —inet6 del fec0:2 ::/64 gw fec0:1 ::1
L’activation du routage pour IPv6 peut être fait de manière contrôlé interface réseau par interface réseau ou bien toutes les interfaces en même temps. Cela se fait avec les commandes :
sysctl net.ipv6.conf.eth0.forwarding=1
Configuration avancée d’IPv6
Mise en place de l’autoconfiguration
Le système d’autoconfiguration d’IPv6 nécessite la présence d’un routeur. Nous allons donc configurer notre système Linux pour qu’il se comporte comme un routeur sans toutefois entrer dans une configuration avancée du routage, inutile ici.
Configuration du routeur :
L’autoconfiguration des postes distants est réalisée par le programme Radvd qu’il faudra donc installer. Il est fourni avec la plupart des distributions, sinon, sa compilation ne devrait pas poser de problème pour le Linuxien avancé que vous êtes.
Il faut d’abord commencer par activer le routage IPv6 au niveau du noyau comme expliqué dans la section sur le routage. Ensuite, la configuration de radvd s’effectue en éditant le fichier /etc/radvd.conf :
interface eth0 <--- Interface à configurer
AdvSendAdvert on ;
prefix fec0:1 ::/64 <— préfixe de à annoncer réseau et masque
AdvOnLink on ;
AdvAutonomous on ;
;
;
Un certain nombre d’autres options sont possible, la page de manuel de radvd contient toutes les informations nécessaires pour effectuer une configuration avancée.
Le démon pourra être lancé avec la commande :
/etc/init.d/radvd start
Configuration sur les postes clients :
Aucune configuration n’est nécessaire sur les postes clients. Il suffit seulement que le support IPv6 soit activé et le système effectuera tout seul la recherche du routeur distant.