default mise meme quand ce n'est pas desirer #43

Closed
opened 2026-08-23 19:52:48 +00:00 by nicolas.boufideline · 1 comment

Actuellement une default est mise par dnsmasq même quand on en veut pas.
la solution c'est de mettre, dhcp-option=3 vide, sinon il prend une ip bien precise...

Actuellement une default est mise par dnsmasq même quand on en veut pas. la solution c'est de mettre, dhcp-option=3 vide, sinon il prend une ip bien precise...
Author
Owner

Corrigé le 2026-08-24, validé sur lab3.

Cause racine — internal/dhcp/generate.go n'émettait dhcp-option=3 que si une gateway était connue. Sans directive, dnsmasq applique son défaut et s'annonce lui-même comme routeur : ne rien écrire n'était pas « ne rien envoyer », mais « envoyer le défaut ». Man dnsmasq : « Options for which dnsmasq normally provides default values can be omitted by defining the option with no data. »

Correctif — émission de l'option nue dhcp-option=3, qui supprime réellement le routeur. Portée plus large que prévu : tout subnet vxlan était concerné, alors qu'un vxlan est privé par construction.

Piège associé — le test qui existait vérifiait l'absence de la ligne dans le fichier, donc l'état du fichier et non le comportement obtenu. Il était vert pendant que le bug était là.

Ce correctif a introduit une régression, corrigée le jour même : en supprimant la route par défaut, il a supprimé le seul chemin des guests vers 169.254.169.254, donc vers le serveur de métadonnées — cloud-init ne trouvait plus son datasource. La route est désormais annoncée explicitement en option 121.

Depuis, la décision a été revue (cf. #31) : une route par défaut est de nouveau toujours annoncée, mais vers un next-hop choisi (interface_ip par défaut) au lieu d'être fabriquée par dnsmasq. Le ticket reste fermé : c'est ce correctif qui a rendu ce next-hop contrôlable.

Corrigé le 2026-08-24, validé sur lab3. **Cause racine** — `internal/dhcp/generate.go` n'émettait `dhcp-option=3` que si une gateway était connue. Sans directive, dnsmasq **applique son défaut** et s'annonce lui-même comme routeur : ne rien écrire n'était pas « ne rien envoyer », mais « envoyer le défaut ». Man dnsmasq : *« Options for which dnsmasq normally provides default values can be omitted by defining the option with no data. »* **Correctif** — émission de l'option **nue** `dhcp-option=3`, qui supprime réellement le routeur. Portée plus large que prévu : tout subnet vxlan était concerné, alors qu'un vxlan est privé par construction. **Piège associé** — le test qui existait vérifiait l'absence de la ligne dans le fichier, donc l'état du fichier et non le comportement obtenu. Il était vert pendant que le bug était là. **Ce correctif a introduit une régression**, corrigée le jour même : en supprimant la route par défaut, il a supprimé le seul chemin des guests vers `169.254.169.254`, donc vers le serveur de métadonnées — cloud-init ne trouvait plus son datasource. La route est désormais annoncée explicitement en option 121. **Depuis, la décision a été revue** (cf. #31) : une route par défaut est de nouveau **toujours** annoncée, mais vers un next-hop choisi (`interface_ip` par défaut) au lieu d'être fabriquée par dnsmasq. Le ticket reste fermé : c'est ce correctif qui a rendu ce next-hop contrôlable.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
syonad/two#43
No description provided.