Déboguer une collision de marks Netfilter : Netbird, OVH OKS et kube-proxy
Un incident critique de connectivité ramené à des bits de mark qui se chevauchent, corrigé par un DaemonSet et remonté à l'éditeur.
Contexte
J’ai refondu l’architecture réseau et sécurité autour d’une connectivité zero-trust avec Netbird (WireGuard) : accès entre clusters et machines, ACL d’entrée et de sortie, et routage.
Problème
Un incident critique de connectivité. Après la mise à jour de Netbird (v0.30+), l’accès aux NodePorts ne fonctionnait plus sur nos clusters OKS, et les symptômes ne désignaient aucun composant en particulier.
Diagnostic
Une analyse bas niveau avec iptables/nftables et nft monitor trace a montré que Netbird, OVH OKS et kube-proxy utilisaient des bits de mark Netfilter qui se chevauchaient. La collision cassait l’étape MASQUERADE, et avec elle le trafic.
Correctif
- Un contournement validé sur un cluster réel, puis industrialisé sous forme de DaemonSet qui corrige les règles sur chaque nœud.
- Une issue documentée ouverte chez Netbird, pour que la cause racine soit corrigée à la source.
Pourquoi j’y tiens
C’est le genre de problème où personne n’est propriétaire du bug : trois composants corrects qui interagissent mal. La réponse a été une méthode (tracer le paquet, trouver la règle, le prouver), pas une intuition.