要点
- RFC 8767 は、権威データを更新できない場合に、再帰リゾルバーが条件を満たす期限切れデータを利用することを認める。TTL がゼロのデータは対象にならない。
- 継続性の代価として、ゾーン運用者が示した TTL の境界を越える判断が、障害中だけ再帰リゾルバーのタイマー、失敗判定、保持方針に移る。
- EDE の Stale Answer はその判断を観測可能にするが、古いデータを認証せず、利用を正当化する承認にもならない。
分析
あるサービスが IP アドレスを変更し、古い A レコードの TTL が切れたとする。多くのリゾルバーは新しい値を取得する。しかし、ちょうどそのとき権威サーバー群に到達できなかったリゾルバーは、現在の状態を確認できない。古い宛先がまだ動いていれば、期限切れ回答は利用者から障害を取り除く。すでに廃止・再割り当て・隔離された宛先なら、同じ回答がゾーン運用者の意図に反して通信を戻してしまう。
TTL は本来、この不確実性に時間の境界を与える。RFC 1035 は、情報源を再び参照してキャッシュを破棄するまでレコードを保持できる期間として TTL を説明した。RFC 2181 は、それが最長期間であって、リゾルバーに最後まで保持する義務を課すものではないと明確にした。通常はゾーン側が TTL を公開し、再帰側は満了後の再利用を止める。
RFC 8767 は、更新不能という例外に限って境界を変更する。TTL 満了後、権威サーバーからデータを更新できなければ、再帰リゾルバーは期限切れレコードを未期限切れのように利用できる。ただし、最初から古いデータを返し、後で都合のよいときに更新すればよいという規則ではない。直近に誠実な更新試行が失敗していることが前提であり、stale 応答を返した後も、問い合わせ全体の制限時間までは現在データの取得を続ける。
TTL ゼロは例外の外に残る。そのレコードは進行中のトランザクションにしか使えず、将来の stale 回答用に保持できない。期限切れデータを返す場合、応答中の TTL はゼロより大きくしなければならず、RFC 8767 は 30 秒を推奨する。これは TTL ゼロを扱えない実装を避けるだけでなく、下流キャッシュが即座に再問い合わせを繰り返すのを抑える。
四つのタイマーは異なる権限を表す。クライアント応答タイマーは、利用者をどこまで待たせてから stale 回答へ切り替えるかを決め、例示値は約 1.8 秒である。問い合わせ解決タイマーは、現在の回答を得るために使う総作業時間を制限する。失敗再確認タイマーは、応答しない権威へ再度問い合わせる頻度を抑える。最大 stale タイマーは、満了後のレコードを候補として残せる期間を決め、文書は 1~3 日を提案例として示す。
これらの値は相互運用のために統一されていない。RFC 8767 は serve-stale を再帰リゾルバーのローカル処理と位置づける。そのため、同じ名前と同じ障害に対し、標準に適合する二つのリゾルバーが別の結果を返し得る。一方は古い回答で継続し、もう一方は失敗する。その差は実装差であると同時に、停止と陳腐化のどちらを引き受けるかという方針差である。
例外を終わらせるのは権威応答の意味である。AA ビットを持つ権威 NoError または NXDomain はデータを更新し、それ以前の状態を置き換える。その他の応答コードは通常、その名前に現在何が存在するかを主張しないため、更新失敗として扱われ、既存キャッシュを残す。SERVFAIL は古いアドレスが正しいという証拠ではない。現在の有用な回答を取得できなかったという事実にすぎない。
RFC 9520 の解決失敗キャッシュとは分けて考える必要がある。RFC 9520 は、同じ問い合わせが失敗中の上流作業を繰り返さないよう、解決失敗を少なくとも 1 秒、長くても 5 分キャッシュすることを求める。ここで保持するのは「解決できなかった」という状態である。Serve-stale が使うのは、以前取得した回答データである。前者は再試行の集中を抑え、後者は利用者に何を返すかを変える。
RFC 8914 は判断を識別する診断語彙を用意する。Extended DNS Error のコード 3 は Stale Answer、コード 19 は Stale NXDOMAIN Answer を示す。しかし EDE は、DNS トランザクション自体が保護されていない限り認証されない。さらに、診断情報は DNS プロトコル処理を変更してはならない。EDE はリゾルバーが選んだ経路を説明できるが、古い値が安全であることも、クライアントが同意したことも証明しない。
負担はレコードごとに異なる。古い A や AAAA は変わっていないサービスを支える一方、撤去済みのシステムへ利用者を戻すことがある。古い CNAME は解消した依存関係を復活させ得る。RFC 8767 は、署名が有効期間外になって DNSSEC 検証に失敗する可能性、古い NSEC/NSEC3 が新しい TLSA や DS の利用を遅らせる可能性、権威到達性を妨害できる攻撃者が旧データの寿命を延ばし得ることも挙げる。
ここまでが標準から確認できる範囲である。特定のリゾルバー事業者がどの値を採用し、どれだけ障害を回避し、どの被害を生んだかは、この事実パケットでは証明できない。確認できるのは制御連鎖だ。ゾーン運用者はデータと TTL を公開し、再帰リゾルバー運用者は失敗を分類してタイマーを設定し、クライアントが結果を受け取る。
出典
会員向け解説
プロフィールの詳細
適切な会員レベルでログインすると、解説全文と出典メモをご覧いただけます。
Strategic Circle 限定
Strategic Circle
すべての読者に公開されています。参加してログインすると プロフィール解説 を閲覧できます。
Strategic Circle に参加Leadership Alliance 会員限定
Leadership Alliance
対象となる IP 資産の所有者・管理者向けです。ログインすると Leadership Alliance の解説を閲覧できます。
Leadership Alliance に参加
