Fibre Orange, IPv6 et dhcpcd

Comme je l’avais indiqué dans mon précédent billet concernant la fibre Orange, l’IPv6 fonctionne comme l’IPv4, avec DHCPv6. Il faut de la même façon qu’en IPv4, envoyer des requêtes DHCPv6 en fournissant les bonnes valeurs d’options au serveur Orange : l’option 11 (AUTH), l’option 15 (USER_CLASS) et l’option 16 (VENDOR_CLASS).

Ceci, afin d’obtenir une délégation de préfixe IPv6 : un /56 entièrement routé jusqu’à l’équipement du client et utilisable comme bon lui semble.

Jusqu’à maintenant, seul dibbler fonctionnait (un peu par hasard), mais il est maintenant possible d’utiliser dhcpcd proprement, grâce à Roy Marples, son développeur, qui a implémenté toutes les fonctionnalités manquantes.

En effet, même si cela fonctionnait avec dibbler, plusieurs problèmes subsistent :

  • Il n’est plus maintenu (la dernière release date de 2015),
  • Il y a un bug au niveau de l’authentification : il faut mettre deux fois l’option 11 (AUTH) dans la configuration pour que celle-ci soit envoyée dans le paquet DHCPv6 Request ; ce qui génère un paquet DHCPv6 Solicit contenant deux fois cette option 11, et n’est pas correct au vu de la RFC.
  • Le mécanisme d’authentification n’est pas supporté par dibbler : il ajoute simplement l’option paramétrée manuellement dans les paquets et ne fait aucune vérification sur les réponses.
  • Peu de distributions le supportent, ce qui nécessite dans la plupart des cas de le compiler manuellement, plutôt que d’utiliser un port/package.

Je me suis donc penché sur dhcpcd, qui est l’un des rare client DHCPv6 activement maintenu. Après quelques recherches, j’ai constaté que l’option 15 (USER_CLASS) n’était pas supportée. J’ai donc contacté Roy Marples, le développeur de dhcpcd. Celui-ci a très gentiment accepté d’ajouter le support de cette option. Après pas mal d’échanges, nous avons également constaté quelques soucis sur les autres options qu’Orange nécessite : l’option 16 (VENDOR_CLASS) et l’option 11 (AUTH). Roy a très patiemment corrigé les différents problèmes.

Ainsi, la branche de développement de dhcpcd (qui devrait devenir la version 7.0.4 prochainement) a maintenant tout le nécessaire pour obtenir un bail DHCPv6 et récupérer une délégation de préfixe IPv6. Cette configuration minimale fonctionne (remplacez xxxxxxx par votre identifiant Orange) :

ipv6only
duid
authprotocol token 0x123/0x456
authtoken 0x123 "" forever fti/xxxxxxx
authtoken 0x456 "" forever dhcpliveboxfr250
userclass FSVDSL_livebox.Internet.softathome.livebox3
vendclass 1038 sagem
persistent
noipv6rs
allowinterfaces vlan832
interface vlan832
ia_pd 1

Cette configuration permet non seulement de supporter toutes les options nécessaires, mais aussi de gérer correctement l’authentification :

  • Nous passons le bon token d’authentification client, avec des valeurs correctes d’anti-rejeu, même si Orange n’en tient pas compte,
  • Nous vérifions le token d’authentification du serveur renvoyé par les serveurs DHCPv6 d’Orange.

Attention, il semble qu’en plus des différentes options requises, Orange filtre sur la valeur du DUID de l’option 1 (CLIENTID) dans les requêtes DHCPv6. Mon impression est que la première valeur du DUID émise par l’équipement client connecté est mise sur liste blanche, et qu’il n’est ensuite plus possible d’utiliser une autre valeur. Ceci permettant à Orange de limiter les équipements connectés, éviter les échanges sauvages de Livebox, etc.

Il y a donc un travail nécessaire pour récupérer cette fameuse valeur du DUID :

  • Récupérer la valeur précédemment utilisée par dibbler dans /var/lib/dibbler/client-duid en la concaténant avec les valeurs de type de lien et date/heure de ce même fichier,
  • Sniffer le trafic de la Livebox.

Ensuite, il faut éditer le fichier /var/db/dhcpcd/duid pour positionner la bonne valeur.

Voilà donc qui devrait faire le bonheur de beaucoup de monde, car beaucoup de projets pourront en profiter : pfSense, OpenWRT, etc.

Enfin, pour finir, je remercie encore Roy Marples pour ce support et sa sympathie.

Note 04/05/2018 : dhcpcd 7.0.4 est maintenant officiel et le port OpenBSD a été mis à jour.

Laisser un commentaire

Vous devez être connecté pour laisser un commentaire.