Infrastructure

SERVFAIL intermittents : l'enregistrement DS orphelin qui cassait 15 % des résolutions

Une CI qui échoue par intermittence, deux messages d'erreur différents, un suspect évident qui n'y était pour rien, et une cause invisible : un enregistrement DNSSEC resté publié chez le parent alors que la zone n'était plus signée. Autopsie d'une panne DNS vicieuse, avec la méthode qui a fini par trancher.

Chaîne de confiance DNSSEC dont un maillon cassé fait tomber le sceau, le résolveur reçoit une réponse refusée
Sommaire (4 sections)
  1. Le faux coupable : toujours dater les indices
  2. La méthode qui a tranché
  3. Le mécanisme : la promesse non tenue
  4. La résolution, et la vérification qui compte

Les pannes franches sont un luxe : tout est cassé, tout le monde le voit, on cherche, on trouve. Celle-ci était d'une autre espèce. Notre chaîne d'intégration continue échouait par intermittence (un build sur trois, environ) sur la résolution de nos propres domaines. Même commande, mêmes serveurs : tantôt ça passe, tantôt no such host. Et pour brouiller les pistes, un second message apparaissait parfois : connect: network is unreachable sur une adresse IPv6. Autopsie d'une des pannes les plus instructives de l'année, parce que tout, dans son diagnostic, est réutilisable.

Le faux coupable : toujours dater les indices #

Le message IPv6 désignait un suspect évident : un enregistrement AAAA pointant vers une adresse que nos machines de build, en IPv4 seul, ne pouvaient pas joindre. Affaire classée ? C'est là qu'intervient le réflexe qui a sauvé le diagnostic : dater l'indice. Cet AAAA existait depuis deux mois et demi, et la CI avait tourné sans accroc pendant toute cette période. Un élément présent longtemps avant les symptômes ne peut pas en être la cause ; il ne faisait que diversifier les messages d'erreur (échec de la résolution A → « no such host » ; seule la AAAA qui répond → tentative IPv6 → « unreachable »). Première leçon, générale : face à un symptôme intermittent, établir la chronologie (date du dernier succès, date de chaque changement) avant toute hypothèse.

La méthode qui a tranché #

  1. Compter les échecs par domaine dans les journaux du résolveur interne : les SERVFAIL ne touchaient que deux de nos zones (des centaines d'occurrences) et zéro domaine externe sur dix testés. La panne avait donc un périmètre, et un périmètre est déjà une signature.
  2. Comparer les résolveurs publics : la même requête réussissait 12 fois sur 12 sur l'un… et 3 fois sur 12 sur un autre, connu pour valider strictement DNSSEC. Un domaine qui échoue seulement chez les résolveurs validants, c'est une flèche au néon vers la chaîne de confiance.
  3. Vérifier le DS : dig DS <zone> chez le parent. Bingo : un enregistrement DS publié pour des zones qui, elles, servaient des réponses non signées.

Le mécanisme : la promesse non tenue #

DNSSEC fonctionne par chaîne de confiance : la zone parente (.com) publie un enregistrement DS (l'empreinte de la clé de votre zone) qui promet aux résolveurs : « les réponses de cette zone sont signées, et voici comment vérifier ». Un résolveur validant qui trouve ce DS exige alors des réponses signées. S'il reçoit du non-signé (notre cas, pendant une fenêtre de migration de serveurs DNS où l'ancien et le nouveau jeu cohabitaient dans les caches), il ne rend pas la réponse « quand même » : il répond SERVFAIL, par conception. C'est un refus de sécurité, pas un bug. D'où l'intermittence parfaite : nos résolveurs internes interrogeaient en alternance un résolveur laxiste et un validant strict : environ une résolution sur sept échouait, juste assez pour faire tomber un build de temps en temps sans jamais rien casser franchement.

Règle d'or DNSSEC : activer = signer la zone, vérifier, puis publier le DS. Désactiver = retirer le DS, attendre son TTL, puis seulement dé-signer. Jamais dans l'autre ordre, et jamais un DS qui survit à un changement de serveurs autoritatifs.

La résolution, et la vérification qui compte #

Le correctif tenait en une action : retirer les DS publiés chez le registrar pour les zones concernées, puis vérifier, sur chaque zone du portefeuille, que dig DS ne renvoie plus rien et que le résolveur validant répond 12/12. Dernier piège au passage : l'interface ou l'API de votre registrar peut afficher un état DNSSEC (« désactivé ») qui ne prouve rien sur ce que le parent publie réellement. Seule une requête DS au DNS fait foi. Les échecs de CI ont cessé le jour même.

Cette panne coche toutes les cases de notre définition de la fiabilité : invisible des tableaux de bord, intermittente, et résolue par la méthode plutôt que par la chance. C'est le niveau de détail auquel une infrastructure infogérée sérieusement doit être tenue, DNS compris, ce parent pauvre qu'on ne regarde que quand tout brûle. Un mystère de résolution chez vous ? On aime ce genre d'énigmes.

À propos
À lire ensuite

Articles liés

Infrastructure

Patcher 36 serveurs sans unattended-upgrades

Trois doctrines existent : ne rien faire, tout automatiser en aveugle, ou voir puis décider. Nous avons retiré unattended-upgrades de tout le parc et démonté notre propre patching automatique par Ansible, pour une doctrine « visibilité d'abord » outillée par PatchMon. Pourquoi, comment, et le rituel qui va avec.

patch managementpatchmon
Infrastructure

Autopsie d'une panne NVMe : les condensateurs morts qui ralentissaient tout

Pendant deux mois et demi, un hyperviseur a accumulé des timeouts de réplication sans qu'aucun disque ne soit « mort ». Le coupable : les condensateurs de Power Loss Protection d'un NVMe, tombés en panne en silence. Autopsie complète : du symptôme au smartctl, du remplacement OVH au resilver qui a révélé 20 000 erreurs latentes.

nvmeplp
Infrastructure

Proxmox HA en production : ce que les tutoriels ne disent pas

Activer la haute disponibilité Proxmox prend cinq minutes. La comprendre nous a pris des pannes : conteneurs qui ne migrent jamais à chaud, failback sans lequel les machines ne reviennent jamais, priorités lues à l'envers, et le qm stop qui ne stoppe rien. Retour d'un cluster de production, 31 ressources en HA.

proxmoxhaute disponibilité

Une infrastructure infogérée et supervisée 24/7 ?

Bastion, SIEM, correctifs décidés, sauvegardes testées : ce que nous appliquons à nos clients. Premier échange gratuit.

Premier échange gratuit · réponse sous 24 h ouvrées