Bonjour à tous,
En remplacant une livebox par un routeur OPNsense ce week end, j'ai remarqué des irrégularités dans le comportement de dhcp6c.
Je suis sous OPNsense 22.7, mais selon moi il est très probable que ce problème soit également présent dans des versions antérieures.
Si vous subissez des échecs intermittents lors de l'attribution d'IPv6 ou de
prefix delegation, vérifiez dans vos logs (System -> Log Files -> General, ou mieux: directement dans
/var/log/system/), et recherchez ce genre de message:
invalid interface(`lan832): Device not configured
invalid interface(<D0>lan832): Device not configured
Notez que le nom de l'interface est corrompu: normalement (chez moi) c'est
vlan832.
C'est la conséquence d'un bug dans le code de dhcp6c (
use after free dans le parser du fichier de conf). Un correctif
a été proposé en avril 2021, mais à ce jour, il n'a toujours pas trouvé son chemin dans la distribution officielle.
Ce type de bug est pénible car il dépend de pas mal de choses (environnement d'exécution du processus, compilateur, etc...) et ne se manifeste donc pas de façon systématique. Le bonheur quand on cherche à débugger sa conf...
Si vous pensez être impactés par ce bug, je vous suggère de recompiler dhcp6c depuis la branche
fix_hup_loading_all_interfaces sur le GitHub de l'auteur du correctif, puis de remplacer l'original (
/usr/local/sbin/dhcp6c).
note: Je proposerais bien un binaire pré-compilé pour amd64, mais c'est assez délicat et je ne suis pas sur que ce soit bienvenu ici; j'uploaderai si un modérateur passe par ici et m'en donne l'autorisation.
Compilation (sur un FreeBSD 13.1 à jour, ou directement sur OPNsense)
oprs@tc2% git clone -b fix_hup_loading_all_interfaces https://github.com/jrmithdobbs/dhcp6c.git
Cloning into 'dhcp6c'...
remote: Enumerating objects: 734, done.
remote: Counting objects: 100% (24/24), done.
remote: Compressing objects: 100% (17/17), done.
remote: Total 734 (delta 12), reused 15 (delta 7), pack-reused 710
Receiving objects: 100% (734/734), 412.00 KiB | 4.08 MiB/s, done.
Resolving deltas: 100% (534/534), done.
oprs@tc2% cd dhcp6c
oprs@tc2% ./configure
[...]
config.status: creating Makefile
config.status: WARNING: 'Makefile.in' seems to ignore the --datarootdir setting
oprs@tc2% make
[...]
oprs@tc2% strip dhcp6cPour réference:
oprs@tc2% ls -l dhcp6c
-rwxr-xr-x 1 oprs oprs 143312 Aug 8 13:37 dhcp6c
oprs@tc2% sha256 dhcp6c
SHA256 (dhcp6c) = 13abe6b81f651a4c4e1e1ccf177c0847f35ccfe8083514d97f4e9b2cf4b1ecce