shiichan

DNSSEC が壊れてドイツの .de が総崩れ!1.1.1.1 はこう耐えたよ!

やっほー、しぃちゃんだよ!今日はインターネットの土台がグラッと揺れた大事件を持ってきたよ。ドイツの .de ドメインが一時まるごと引けなくなっちゃった障害、その裏側を一緒にのぞいてみよう!

Cloudflare Blog blog.cloudflare.com

なにが起きたの?

2026 年 5 月 5 日の 19:30 UTC ごろ、ドイツの ccTLD である .de を運用する DENIC が、.de ゾーンに壊れた DNSSEC 署名を公開しちゃったの。DNSSEC を検証するリゾルバは、仕様上こういう応答を拒否して SERVFAIL を返すしかなくて、Cloudflare の公開リゾルバ 1.1.1.1 も例外じゃなかったんだよ。

.de は世界でも指折りの大きさの TLD で、DNS 階層のこの高さで障害が起きると、数百万のドメインが一斉に引けなくなる可能性があるの。これは Cloudflare の Blog が公開してくれた障害レポートで、当日なにが見えて、DENIC が直すまでどんな一時回避をしたのかを丁寧に振り返ってるよ。

そもそも DNSSEC ってなに?

DNSSEC は DNS の各レコードに RRSIG という電子署名を添えて、「この答えは改ざんされてないよ」って暗号的に証明する仕組み。暗号化じゃなくて完全性のための技術で、署名はレコードと一緒に運ばれるから、途中で何回キャッシュを経由しても検証できるのがミソなの。

DNSSEC は「信頼の連鎖」でできてて、ルートから .de、.de から example.de へと、親ゾーンの DS レコードで子ゾーンへ信頼を委ねていくよ。だから連鎖のどこか一箇所でも壊れると、その下のぜんぶが検証失敗になっちゃう。TLD の .de がこけると配下の全ドメインが巻き添えになるのは、この構造のせいなんだ。今回はまさに、鍵のロールオーバー中に検証できない署名が出回っちゃったのが引き金だったの。

利用者にはどう影響したの?

SERVFAIL は 19:30 にドカンと増えて、そのあとキャッシュが切れていくにつれ 3 時間かけてじわじわ伸びていったよ。失敗したクライアントが 3 回以上リトライするから、見た目の数字は実際のユーザー影響よりだいぶ大げさに膨らむんだって。

でも面白いのは、正常応答(NOERROR)の割合は意外と安定してたこと。これは RFC 8767 が定める「serve stale(期限切れ提供)」のおかげなの。上流の解決が失敗したとき、リゾルバは TTL 切れのキャッシュをそのまま返し続けられる。壊れる前にキャッシュ済みだった .de レコードが、たくさんのユーザーを静かに救ってたってわけ。

深く潜ってみよう

一番の切り札が NTA(Negative Trust Anchor)だよ。RFC 7646 が定義するもので、特定のゾーンを「未署名扱い」にして検証をバイパスする仕組み。TLD が壊れた署名を出しちゃったときは、配下ドメイン自体は無実なのに全部 SERVFAIL になる。もう原因は公開されてて修正中なんだから、そこで SERVFAIL を返し続けても安全上の意味はないよね。RFC 7646 も TLD の誤設定を主な用途に挙げてるの。

1.1.1.1 の裏側には Big Pineapple っていう自作リゾルバがいて、1.1.1.1 for Families や Gateway DNS、DNS Firewall なんかも動かしてる。ネイティブな NTA はまだ実装してないから、既存のオーバーライド機能で .de を「insecure ゾーン」に設定して、NTA と同じ効果を出したんだって。DNSSEC を切ると .de は一時的に本物の攻撃に弱くなるけど、今回は署名失敗が広く公表されてて全リゾルバに等しく起きてたから許容できる、という判断だったよ。社内の障害対応部屋ではこう言われてたそう。

今この瞬間、.de を引こうとしている 1.1.1.1 のユーザーで、未検証の応答より SERVFAIL のほうがいい人なんて一人もいないよね。

回避策は 22:17 UTC に展開されて、ここで 1.1.1.1 の影響は終了。DNS-OARC の Mattermost で他の DNS 事業者にも共有したよ。CDN のオリジン解決用の内部リゾルバにも同じ NTA を当てて、.de をオリジンに持つお客さんの接続も復旧させたの。

ひとつ正直な反省点も。SERVFAIL には RFC 8914 の Extended DNS Error(EDE)コードが付くんだけど、本来は EDE 6(DNSSEC Bogus)を返すべきところ、1.1.1.1 は EDE 22(No Reachable Authority)を返しちゃってた。信頼チェーン検証器が作った Bogus コードが応答に載らないバグで、これは直すって明言してるよ。

ちなみに DENIC 自身も短いブログで、今回は定例の鍵ロールオーバー中に検証不能な署名が生成・配布されたのが原因で、原因究明まで今後のロールオーバーを一時停止する、と説明してるよ。

まとめ

  • DENIC が壊れた DNSSEC 署名を出したことで、5 月 5 日 19:30 UTC から .de が大規模に引けなくなった
  • 1.1.1.1 は serve stale(RFC 8767)で被害をかなり吸収しつつ、.de を insecure 扱いにする NTA 相当の回避で 22:17 UTC に復旧
  • 原因は TLD 側の鍵ロールオーバーで、DNSSEC 自体の敗北ではなく「設定ミスは何であれ壊れる」という話
  • EDE のコード取り違えという自分たちのバグも正直に共有してるのが Cloudflare らしい

DNS リゾルバや権威サーバを運用する人、DNSSEC の運用に関わる人、そして障害対応の生々しい意思決定を知りたい人にグッと刺さる一本だよ!