要約
- RFC 8767 は、権威側からの更新を誠実に試みても失敗した場合、再帰リゾルバーが期限切れキャッシュを一時的に返すことを認める。これは公開者の鮮度保証の延長ではなく、リゾルバー側の継続性判断である。
- 原 TTL、失効後の経過時間、最大保持期限、返却 TTL、DNSSEC の現在状態、更新失敗の種類、対象リゾルバー群、復旧確認を別々に残して初めて、その判断を監査できる。
あるサービスのアドレスが侵害され、運用者は DNS から撤去した。以前の TTL も満了した。それでも一部の利用者には古いアドレスが返る。権威ゾーンの更新漏れとは限らない。再帰リゾルバーが権威サーバーへ到達できず、エラーの代わりに手元の期限切れデータを選んだ可能性がある。
これは説明のための想定であり、実在する障害や製品既定値の主張ではない。可用性を守る処理が、公開者の撤去判断を事実上遅らせる局面を切り出している。
RFC 8767 の Serve Stale は、その局面を無制限には扱わない。TTL の満了後、権威から更新できない場合に、保持済みデータを未失効であるかのように使える条件を示す。古いデータを新しくする規則ではない。
TTL の後には別の権限が始まる
TTL の期間内であれば、キャッシュ再利用の根拠はゾーン公開者が示した通常の鮮度範囲にある。満了すれば、本来は情報源へ照会し直す。そこで更新に失敗し、なお答えを返すなら、根拠は再帰運用者のローカルな継続性ポリシーへ移る。
この切り替わりを記録しないと、「キャッシュが有効だった」という一文が二つの判断を混同する。前半は公開者の TTL、後半はリゾルバーの例外である。後半を決める側には、期間、対象、停止条件を説明する責任がある。
上限も二種類ある。通常の最大キャッシュ TTL は受信した極端に長い値を抑えるもので、RFC 8767 は日から週の単位、推奨値として七日を挙げる。最大 stale タイマーは元の TTL 満了後に始まり、期限切れコピーを候補として何日残すかを決める。文書は設定可能であるべきだとし、一日から三日が多くの停止を吸収し得ると説明するが、世界共通の値にはしていない。
したがって、クライアントが目にする TTL だけでは判断を再現できない。キャッシュ格納時刻、元 TTL、満了時刻、現時点の stale 年齢、最大期限、応答に付けた TTL を保存する必要がある。応答に見える「30 秒」は、多くの場合、何時間も前のデータに下流向けの短い待機を付けた値であり、公開者が三十秒前に確認した証拠ではない。
四つのタイマーは一つの設定ではない
RFC 8767 は単一の実装アルゴリズムを定めない。例示手法に四つの時計があるのは、それぞれ別の失敗を抑えるからだ。
クライアント応答タイマーは、利用者を待たせてから期限切れデータへ切り替えるまでを制限し、例では 1.8 秒を推奨する。クエリ解決タイマーは反復解決全体の作業を区切り、十秒から三十秒程度が説明される。失敗再確認タイマーは応答しない上流への過剰な再試行を避け、例では三十秒を示す。最大 stale タイマーは、障害が続いてもデータを使えなくする最終線である。
管理画面が「Serve Stale: ON」だけなら、実際のトレードオフは見えない。クライアント待ち時間を短くすれば速いが、単に遅い権威より古い答えを優先しやすい。再確認を長くすれば攻撃時の負荷を抑えられるが、復旧検知も遅い。最大期間を長くすれば大規模障害を越えられる一方、廃止済みの状態を保持し続ける。
期限切れデータを返す前には、最近の誠実な更新試行が必要である。常に古い答えを先に出して後で問い合わせるための近道ではない。クライアント向けに答えた後も、解決処理は自身の制限時間まで続けるべきだ。stale 応答は復旧処理の途中経過であり、処理の完了ではない。
更新失敗を一語で片付けない
RFC 8767 では、AA を伴う権威 NOERROR または NXDOMAIN がデータを更新する。以前存在した名前を公開者が正当に削除した場合、リゾルバーは「古い正答の方が便利」という理由で残し続けてはならない。正当な削除と誤設定による NXDOMAIN を一般的に見分ける方法がないからだ。
タイムアウト、経路到達不能、SERVFAIL、REFUSED、不正形式、DNSSEC 検証失敗、lame delegation は、原因も所有者も異なる。RFC 2308 はサーバー失敗や到達不能の記憶を最長五分に制限する。
証跡には、試した各権威エンドポイント、アドレス、トランスポート、時刻、RCODE、AA、検証結果、ネットワークエラー、委任再取得の有無を含めたい。RD、CD、DO、キャッシュキー、正答・NODATA・NXDOMAIN の区別も必要である。履歴と設定が違えば、二台のリゾルバーが同じ質問に異なる答えを返すのはあり得る。
応答 TTL は鮮度の再発行ではない
期限切れレコードを返すとき、応答の TTL はゼロより大きくしなければならず、RFC 8767 は三十秒を推奨する。ゼロは互換性問題を起こしてきた。短すぎる値は下流の再照会を集中させ、障害時の負荷を悪化させる。
しかし、三十秒を付けても元データの年齢は戻らない。フォワーダーがその応答をさらにキャッシュすると、最後のクライアントには真の stale 年齢が見えにくくなる。発信元リゾルバー、最初の格納時刻、直近の更新試行を結び付けなければならない。
RFC 8914 の Extended DNS Error は補助になる。コード 3 は Stale Answer、19 は Stale NXDOMAIN Answer、22 は No Reachable Authority を表す。NOERROR 応答にも追加でき、利用者やログへ事情を伝えられる。
ただし EDE は RCODE 処理を変えず、中継者が転送しないことも、別の EDE を作ることもある。保護された取引や経路がなければ認証情報でもない。コード 3 の観測は、送信者が stale と説明した証拠にとどまり、内部タイマーや照会履歴の独立証明にはならない。
DNSSEC は別の時計で失効する
キャッシュ格納時に検証成功した RRset でも、後で同じ状態とは限らない。RRSIG の開始・終了時刻は TTL とも最大 stale 期間とも独立している。長く残すほど、署名有効期間を越える可能性が高まる。
AD は過去の検証成功ではなく、現在の認証済みデータの意味を示す必要がある。RRSIG 時刻、検証時点、トラストアンカー、CD/DO 条件を残すべきだ。さらに、署名がまだ有効な古いアドレスでも、公開者が既に制御していない機器を指しているかもしれない。暗号学的真正性は、現在の接続先の安全性を保証しない。
否定応答は影響が違う。期限切れ NXDOMAIN は新設名を見えなくし、古い NSEC/NSEC3 は DS や TLSA の更新を遅らせ得る。RFC 8198 の aggressive cache は、通常の有効範囲内にある検証済み否定情報から応答を合成する。Serve Stale は、その通常期限を過ぎ、権威更新にも失敗した後を扱う。
出典
- IETF、RFC 8767: Serving Stale Data to Improve DNS Resiliency
- RFC Editor、RFC 8767 レコード
- IETF、RFC 8914: Extended DNS Errors
- IANA、Domain Name System Parameters
- IETF、RFC 1034: Domain Names — Concepts and Facilities
- IETF、RFC 1035: Domain Names — Implementation and Specification
- IETF、RFC 2181: Clarifications to the DNS Specification
- IETF、RFC 2308: Negative Caching of DNS Queries
- IETF、RFC 4033: DNS Security Introduction and Requirements
- IETF、RFC 4034: Resource Records for DNSSEC
- IETF、RFC 4035: Protocol Modifications for DNSSEC
- IETF、RFC 8198: Aggressive Use of DNSSEC-Validated Cache
- IETF、RFC 9520: Negative Caching of DNS Resolution Failures
- IETF、RFC 6891: Extension Mechanisms for DNS
- IETF、RFC 5452: Measures for Making DNS More Resilient against Forged Answers
会員向け解説
プロフィールの詳細
適切な会員レベルでログインすると、解説全文と出典メモをご覧いただけます。
Strategic Circle 限定
Strategic Circle
すべての読者に公開されています。参加してログインすると プロフィール解説 を閲覧できます。
Strategic Circle に参加Leadership Alliance 会員限定
Leadership Alliance
対象となる IP 資産の所有者・管理者向けです。ログインすると Leadership Alliance の解説を閲覧できます。
Leadership Alliance に参加