Incident de panne de Cloudflare 1.1.1.1 du 14 juillet 2025
(blog.cloudflare.com)- Cloudflare a subi, le 14 juillet 2025, une panne totale de 62 minutes sur son resolver DNS public 1.1.1.1 lors d’un changement de topologie de service
- La majorité des utilisateurs mondiaux ont été directement touchés et ont constaté une impossibilité d’utiliser Internet
- La cause de l’incident était une mauvaise configuration d’un système legacy interne, sans lien avec une attaque externe ou un détournement BGP
- La panne a été déclenchée par la combinaison d’un cumul de modifications de configuration erronées et d’une réinitialisation à l’échelle du réseau
- Parmi les mesures de prévention de récidive, Cloudflare prépare l’introduction d’un système de déploiement progressif et l’abandon du système de configuration legacy
Vue d’ensemble
Le 14 juillet 2025, Cloudflare a provoqué une panne réseau mondiale du resolver DNS public 1.1.1.1 lors d’un changement de topologie de service. À cause de cet incident, les utilisateurs de 1.1.1.1 et du service Gateway DNS ont subi pendant 62 minutes une indisponibilité d’Internet ou une forte dégradation du service. L’incident était dû à une erreur de configuration d’un système legacy interne, et non à une attaque externe ni à un détournement BGP.
Étendue et impact de la panne
- Entre 21:52 UTC et 22:54 UTC, le resolver 1.1.1.1 a été pratiquement indisponible dans le monde entier
- La majorité des clients mondiaux n’ont pas pu résoudre les noms de domaine, rendant l’usage même d’Internet impossible
- La situation de panne peut être vérifiée via Cloudflare Radar
- La cause de la panne provenait d’un paramétrage erroné dans le système legacy qui gère l’infrastructure annonçant sur Internet les adresses IP détenues par Cloudflare
- L’ensemble du trafic atteignant Cloudflare via le canal 1.1.1.1 a subi un impact critique
Cause et contexte de l’incident
- Cloudflare utilise le routage Anycast pour ses services mondiaux comme le resolver DNS
- Les services sont fournis depuis différentes régions, mais certains services soumis à des exigences de localisation des données sont limités à des zones spécifiques
- Le 6 juin, lors d’un changement de configuration préparatoire à un futur service DLS (data localization), la plage IP du resolver 1.1.1.1 a été incluse par erreur dans le nouveau DLS
- Cette erreur n’a pas eu d’effet immédiat et n’a donc déclenché aucune alerte
- Le 14 juillet, une modification ajoutant un site hors ligne à la topologie DLS à des fins de test a été appliquée
- Cette modification a forcé un rafraîchissement de la configuration réseau globale, révélant l’erreur existante
- Les préfixes 1.1.1.1 ont été retirés des datacenters du monde entier, interrompant le service
Chronologie de l’incident (résumé)
- 2025-06-06 17:38 : inclusion des préfixes 1.1.1.1 dans une modification de configuration pour le service DLS (sans impact immédiat, erreur latente)
- 2025-07-14 21:48 : un changement de configuration déclenche un rafraîchissement global de la configuration réseau, début du retrait mondial des préfixes 1.1.1.1
- 2025-07-14 21:52 : chute brutale du trafic DNS mondial
- 2025-07-14 22:01 : alerte interne et déclaration de l’incident
- 2025-07-14 22:20 : rollback vers la configuration précédente et début de la procédure de rétablissement du service
- 2025-07-14 22:54 : retour du trafic à la normale, levée de l’alerte et fin de l’incident
IP et protocoles affectés
- Périmètre impacté : larges préfixes IPv4 et IPv6, dont 1.1.1.0/24, 1.0.0.0/24, 2606:4700:4700::/48
- Forte baisse du trafic observée sur les requêtes utilisant UDP, TCP et DoT (DNS over TLS)
- DoH (DNS over HTTPS) a été peu affecté, car il repose souvent sur le domaine
cloudflare-dns.com
Explication technique de la panne
Panne du service resolver 1.1.1.1
- Une erreur dans les préfixes a été introduite le 6 juin lors d’un changement de préconfiguration pour DLS
- Le 14 juillet, l’ajout d’un site hors ligne à des fins de test a provoqué une mise à jour des paramètres à l’échelle du réseau
- Dans ce processus, les préfixes du resolver 1.1.1.1 ont été limités mondialement à un unique site hors ligne, entraînant le retrait du service
Analyse de la cause technique
-
Cloudflare exploite actuellement en parallèle un système legacy et un nouveau système stratégique, en synchronisant les annonces de routage par espace d’adressage
-
Le système legacy repose sur des mises à jour manuelles et l’absence de progressivité dans les déploiements, ce qui augmente le risque d’erreur
- Il y avait bien une peer review et une relecture par d’autres ingénieurs, mais aucune structure ne garantissait une mise en production progressive comme un déploiement canari
-
La nouvelle approche est centrée sur la topologie plutôt que sur le hardcoding, avec prise en charge des changements progressifs et mise en place d’un système de monitoring
-
À 22:01, une alerte sur le DNS resolver est déclenchée
-
Il est confirmé que toutes les routes du resolver ont disparu de la table de routage BGP interne
-
Après le retrait des préfixes, le sous-réseau 1.1.1.0/24 a fait l’objet d’une tentative d’annonce BGP par Tata Communications India (AS4755)
- Cela ressemblait à un détournement temporaire de préfixe, mais n’avait pas de lien direct avec l’incident
Procédure de rétablissement et actions de suivi
- À 22:20 UTC, rollback vers la configuration précédente et réannonce des préfixes
- Environ 77 % du trafic a été rétabli immédiatement
- Certains serveurs edge se sont réinitialisés automatiquement, nécessitant une nouvelle application via le système manuel de gestion des changements
- Le réseau applique normalement un rollout progressif pour des raisons de sécurité, mais dans cet incident l’application a été accélérée après validation
- À 22:54, tous les sites étaient revenus à un état normal
Axes d’amélioration à venir
- Mise en place d’un système de déploiement progressif (Stage Deployment) : abandon du mode de déploiement legacy, avec introduction d’un mécanisme de rollback automatique basé sur l’état de santé
- Accélération de l’abandon du système legacy : suppression des configurations manuelles risquées et des méthodes de déploiement associées, renforcement de la documentation et de la couverture de test
Conclusion
La panne du resolver DNS 1.1.1.1 de Cloudflare a été causée par une erreur de configuration interne. Cloudflare indique mobiliser tous ses efforts pour améliorer la fiabilité et prévenir la récurrence de ce type d’incident. L’entreprise présente ses excuses aux clients pour les désagréments causés et prévoit de continuer à renforcer les mesures destinées à limiter au maximum des situations similaires à l’avenir.
1 commentaires
Commentaires sur Hacker News
Pour beaucoup d’utilisateurs, lorsque le résolveur 1.1.1.1 (DNS) ne fonctionne pas, cela signifie qu’ils ne peuvent accéder à presque aucun service Internet. Mais en général, on ne configure pas deux serveurs DNS sur tous les appareils ? Je me demande si le second était lui aussi en panne, ou sinon pourquoi le basculement ne s’est pas fait
one.one.one.one). Il serait bien plus logique de configurer un serveur DNS via son IP.fonctionne bien depuis des décennies, et la principale raison pour laquelle ça casse sur 1.1.1.1, ce n’est pas le DNS lui-même mais l’anycast. Cloudflare (et Google, etc.) s’entêtent avec des adresses IP « vanity » — pour rendre possible l’usage de telles IP, il faut de l’anycast, et le vrai problème n’est pas le DNS mais l’anycast. Je recommande de choisir et configurer plus d’un fournisseurIl est intéressant de voir qu’au cours d’une panne d’environ 20 minutes, le trafic de 1.1.1.1 n’a baissé que d’environ 20 %. Il est étonnant que Cloudflare continue à se faire piéger par un problème aussi simple et ancien (ce n’est pas la première fois, et probablement pas la dernière). Les 8.8.8.8 et 8.8.4.4 de Google n’ont pratiquement connu, à l’échelle mondiale, aucune seconde d’indisponibilité depuis presque 10 ans. (1 : il y a bien eu quelques problèmes régionaux, mais c’était la faute d’Internet, et même lorsque divers services Google subissaient de graves pannes, le DNS lui-même continuait de fonctionner normalement.)
Il est surprenant qu’il ait fallu plus de 5 minutes pour détecter l’impact (alors même que le trafic du protocole principal tombait à 10 % et s’y maintenait). Je n’ai jamais exploité de système de cette taille, mais je m’attendais à ce qu’une alerte soit immédiate. Je me demande si les experts trouvent cela raisonnable
Bon résumé. Il est intéressant de noter que DoH (DNS over HTTPS) passait majoritairement par le domaine
cloudflare-dns.com(configuration manuelle ou navigateur), et qu’étant donné qu’il ne s’agit pas d’une adresse IP, il a été relativement moins touché par la panne. J’ai été affecté hier : même avec DoH activé sur le routeur, plus rien ne se résolvait, et le passage à 8.8.8.8 a réglé le problèmecloudflare-dns.com, et le routeur utilisait peut-être 1.1.1.1Avec dnsmasq, on peut configurer plusieurs serveurs DNS en parallèle et utiliser celui qui répond le plus vite. Même si un service tombe, on ne remarque presque rien
strict-order, quand on utiliseall-servers, dnsmasq renvoie automatiquement les requêtes à tous les serveurs. Mais si l’on utilisesystemd-resolved, les nouvelles tentatives ne se font que dans l’ordre, donc il est important d’alterner des serveurs de fournisseurs différents. Comme dans l’exemple, si on combine aussi IPv4 et IPv6, le failover est plus rapide. Les IP concernées de Quad9 ont le filtrage par défaut activé, contrairement aux deux autres, donc les résultats de résolution peuvent différer. Personnellement, si l’on attache de l’importance à la validation DNSSEC (extensions de sécurité du DNS), il ne faut pas mélanger des résolveurs qui valident et d’autres qui ne valident pas (dans l’exemple, tous les DNS prennent en charge DNSSEC)systemd-resolved, on peut avoir par défaut DoT et DNSSEC, donc obtenir un comportement similaire. Pour éviter complètement le DNS centralisé, on peut faire tourner un daemon Tor et exposer un résolveur DNS sur le réseau. Plusieurs résolveurs sont aussi possiblesall-servers, dnsmasq met périodiquement les serveurs en concurrence sur les requêtes (nouvelle tentative toutes les 20 secondes par défaut). Même en cas de panne soudaine, l’impact ne durerait probablement pas plus de quelques secondesMême une panne d’environ 1 heure ne représente que 0,13 % sur un mois et 0,0114 % sur un an. Je me demande quel SLO (objectif de niveau de service) Cloudflare applique à ce service. J’ai bien trouvé ce lien, mais il ne concerne que les services payants. Avec cette panne, la disponibilité de juillet tombe dans la tranche « < 99.9% but >= 99.0% », ce qui donnerait droit à un remboursement de 10 % des frais d’utilisation
Il est intéressant que le trafic ne soit pas revenu complètement à la normale même après l’incident. J’utilise récemment
luci-app-https-dns-proxysur OpenWrt pour envoyer les requêtes à la fois vers Cloudflare et Google DNS, et comme DoH a été très peu affecté, je n’ai pas ressenti la panne (si DoH avait aussi cassé, ça aurait automatiquement basculé sur Google)Il est surprenant que 1.1.1.1 et 1.0.0.1 aient tous deux été affectés par le même changement. Il faudrait désormais utiliser un fournisseur totalement différent comme secours DNS (par ex. 8.8.8.8, 9.9.9.9)
La topologie interne de Cloudflare évolue de façon à synchroniser des systèmes « legacy » et « strategic ». C’est un texte qui explique clairement l’état des lieux de façon compréhensible à la fois pour les techniciens et les non-spécialistes. J’ai trouvé qu’il rendait même le processus de migration intéressant. Les excuses pour la gêne causée par l’incident, ainsi que le message insistant sur les améliorations à venir et la prévention des récidives, font bonne impression. J’apprécie beaucoup cette attitude de l’entreprise
Il est surprenant que, alors que plusieurs ingénieurs avaient examiné le rebranding, personne n’ait vu l’erreur consistant à ajouter 1.1.1.0/24 à la liste de reroutage. Je me demande quelle erreur humaine — ou quelle intention malveillante — a pu provoquer cela. Il faudrait probablement un traitement d’exception codé en dur dans le DLS (Domain List Service) pour empêcher de désigner 1.1.1.1/32 et 1.0.0.1/32 vers un seul emplacement