Dedibox, IPv6 et OpenVZ
Utilisation d’IPv6 sur une Dedibox avec OpenVZ
Utilisateur de longue date de Kimsufi (depuis ~2008), je suis en train de migrer progressivement tous mes services IPv6 sur une Dedibox.
Mais la doc officielle pour la mise en place de l’IPv6 n’a pas été suffisante, c’est pourquoi je partage mes notes à ce sujet.
L’état désiré
Avec OpenVZ, faire fonctionner plusieurs containers (VE) sur la Dedibox (Hardware Node), en veillant à ce que tous aient une connectivité IPv4/IPv6 vers le reste du monde. Le hardware node et les containers ont leur(s) propre(s) adresses IPv6.
IPv4 ne posant aucun problème, il n’en sera fait aucune mention dans ce billet.
La mise en place d’IPv6
Un “ancien” Kimsufi dispose de son propre bloc IPv6 /64 (maintenant une seule adresse IPv6), et il suffit de mettre son adresse IPv6 et la gateway en statique.
En revanche chez Online, il est possible de diviser son bloc IPv6 /48 attribué au niveau compte client (en tout cas pour les clients Dedibox) en plusieurs sous-réseaux /56, pour ensuite les utiliser sur le serveur de son choix, avec l’avantage de pouvoir les déplacer de serveur par la suite.
Pas de configuration statique de ces sous-réseaux (à moins de risquer de perdre la gateway si elle change), l’identification/routage des sous-réseaux /56 se fait avec la délégation de préfixe IPv6 possible avec DHCPv6.
Le principe:
- Sur son compte Online, créer un nouveau sous-réseau /56
- Récupérer le DUID (DHCP unique identifier) associé à ce sous-réseau
- Configurer un client DHCPv6 avec ce DUID (cela permet d’associer le sous-réseau au serveur, et de recevoir entre autre la passerelle)
- Sur l’interface réseau du serveur, configurer en statique une adresse IPv6 de ce sous-réseau ainsi que le masque.
La documentation officielle explique les différentes étapes en détail.
Pas de bol…
Après avoir constaté que le client DHCPv6 Dibbler ne fait pas l’unanimité (bugs récurrents, intégration aux distributions, …), reste le bon vieux client DHCPv6 ISC dhclient, dont la configuration est également détaillé dans la doc d’Online.
Une fois la configuration effectuée, comportement surprenant: au bout d’un moment, le traffic IPv6 du serveur semble bloqué, malgré une gateway IPv6 présente et bien valide:
|
|
Le fait de réappliquer des configurations sysctl après attribution de l’IPv6 statique faisait marcher le routage à nouveau, bref, de la bonne magie noire.
Commence alors une longue soirée pour comprendre les interactions entre autoconfiguration IPv6, router advertisements, forwarding, les différents sysctl net.ipv6, …
Voici les liens qui m’ont aidé à y voir plus clair:
- Linux ignores IPv6 router advertisements when forwarding is enabled
- Linux, IPv6, router advertisements and forwarding
- Petit débat chez les dev noyau
- IPv6 forwarding OpenVZ
- IPv6 with Debian
Note: le booléen à 3 états a bien été corrigé depuis:
accept_ra - INTEGER
La configuration
Voici la configuration que j’utilise sur une Debian Wheezy, le tout est stable depuis plusieurs jours:
|
|
Ici 2001:bc8:abcd:ef33/56 est mon sous-réseau IPv6:
|
|
La séquence xx:xx:.. est le DUID que vous trouverez dans la page IPv6 de l’espace client Online:
|
|
|
|
ip6tables: n’oubliez pas d’ouvrir le traffic DHCPv6, protocole UDP et ports 546, 547 (Wikipedia: DHCPv6)
Les logs dhclient
Pour information, mon bail dhcp dure 1h:
|
|