Auteur Sujet: bug dans dhcp6c  (Lu 414 fois)

0 Membres et 1 Invité sur ce sujet

oprs

  • Abonné Orange Fibre
  • *
  • Messages: 4
  • Le Puy-en-Velay (43)
bug dans dhcp6c
« le: 08 août 2022 à 13:50:05 »
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 dhcp6c


Pour 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

ftln

  • Abonné Bbox fibre
  • *
  • Messages: 34
  • Charenton Le Pont
bug dans dhcp6c
« Réponse #1 le: 09 octobre 2022 à 08:35:34 »
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 dhcp6c


Pour 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


Merci pour l'info  :)