samedi 9 juin 2012

Créer une route IPV6 manuellement sous RedHat, Centos, Fedora

Vous aviez des routes IPV6 automatiquement crées grâce au ND - RA (Neighbor Discovery - Router Advertisement) du routeur de votre opérateur réseau. Récemment celui-ci à décider pour des raisons plus au moins fallacieuses de désactiver ce service, il ne vous reste plus qu'à configurer manuellement votre route. L'objectif étant qu'elle soit persistante. Et c'est là qu'on se marre.

Je ne vais parler ici que des releases Redhat Centos Fedora et j'expliquerais pourquoi je ne parle pas des autres à la fin. Dans le cas de figure présent, je ne montrerais pas comment faire de l'IPV6 dans un tunnel, mais uniquement du full IPV6.

En ce qui nous concerne 3 fichiers suffisent à configurer entièrement IPV6 dans vos ordinateurs ainsi que votre route par défaut.

J'aurais très bien pu me passer de ces fichiers et mettre en dur dans un /etc/rc.local l'ensemble des commandes à appliquer pour créer mon ip, définir le hosts de gateway et ma route par défaut. Mais utilisons plutôt les fichiers de configuration des mecs qui se sont pris la tête à les concevoir. On ne sait jamais...

Dans les fichiers ci-dessous, l'adresse utilisée est un exemple.


Le premier "/etc/sysconfig/network"

Celui-ci sert en gros à dire si vous activez ou non l'IPV6 ainsi que certains paramètres génériques.

NETWORKING_IPV6=yes
IPV6_AUTOCONF=no

Ai je vraiment besoin de traduire les deux lignes ci-dessus ?... (je rappel que l'on veux faire une configuration manuelle)


Le second "/etc/sysconfig/network-scripts/ifcfg-eth0"

Celui-ci permettra de définir pour chacune de vos interfaces si vous voulez initialiser l'IPV6 et si oui quelle adresse possèdera-t-elle.

IPV6INIT=yes
IPV6ADDR=2001:DB8:1:B505:10:15:20:25

Par défaut l'adresse que vous définissez est comprise comme un /64. Soit 2001:DB8:1:B505::/64 (votre réseau) je vous laisse calculer le nombre d'adresses disponibles dans ce réseau.


Et le dernier "/etc/sysconfig/network-scripts/route6-eth0"

Celui qui m'a donné du fil à retordre, par ce que dans un tout petit coin de la doc, il y a une ligne extrêmement importante qui explique que ce fichier ne fait pas que décrire les routes, il vous permet de définir des lignes de commandes qui seront passées au programme /sbin/ip -f inet6 route add <ligne 1> <ligne 2> <ligne n...>

Et çà, ça fait perdre un temps incalculable. Donc profiter de mon temps perdu.
2001:db8:1:b5ff:ff:ff:ff:ff/128 dev eth0 metric 1
::/0 via 2001:db8:1:b5ff:ff:ff:ff:ff dev eth0 metric 1

Comme vous pouvez le voir, j'ai une première ligne qui n'est pas une route.
- "Ben ça alors on est pas dans un fichier de routes ? Saleté de nom de fichier de [biiiiiiip]"

Pour info les gateway de mon opérateur réseau se finissent par ff:ff:ff:ff:ff. On prend le /56 de l'adresse de votre réseau en ajoutant 5 "ff".

Mais çà, c'est chez mon opérateur. Le votre vous dira peut être autre chose.

Donc la première ligne permet de créer un adresse d'un host faisant office de gateway. La seconde ligne décrit la route par défaut ::/0 (toutes les adresses de votre machine) via votre gateway.Je ne vous ferais pas l’offense de commenter les paramètres dev eth0, ni metric 1.

Voila.

Un petit "service network restart" ou "systemctl restart network" et vous êtes fin prêt pour utiliser l'IPV6.

Pour vous rassurer, faites donc un ping6 ipv6.google.com

Sinon, pour les autres Releases (Debian, Ubuntu, etc), le problème ne se pose pas de la même façon, puisqu'il n'y a pas de fichiers de configurations exotiques. Il suffit de vous rendre dans vos fichiers d'interfaces et d'ajouter les commandes qui permettent de créer vos ip, gateway et routes.