ICT STUDY GUIDEモバイルの用語モバイル2級

DNSのネガティブキャッシュとは|レコード追加後も名前解決できない理由

DNSにAレコードを追加したのにNXDOMAINが続くのはなぜ?300秒の自作時系列で、権威DNSの更新とキャッシュの期限、NXDOMAINとNODATA、SOAのTTL、確認すべき問い合わせ先を図解します。

最終更新
読了目安
約5分
執筆
ICT模試 編集部
まず結論

この記事の要点

  • 「存在しない」というDNS応答も、期限付きでキャッシュされる場合があります。
  • 権威DNSの更新と、利用しているキャッシュの更新は同時とは限りません。
  • 時刻とTTLは学習用の仮定です。実際の反映時間や復旧時間を保証するものではありません。

Aレコードを追加したのに、まだ存在しないと返る

新しいサービス用の名前を調べた後でAレコードを追加したところ、同じ端末ではしばらく名前解決に失敗したとします。登録画面に正しい値があることだけで、利用者が今受け取っている応答まで正しく切り替わったとは限りません。問い合わせ先やキャッシュの段階を分ける必要があります。

ネガティブキャッシュは、名前や要求した種類のデータが存在しない、という応答を一定期間保持する仕組みです。存在しない名前への同じ問い合わせを毎回やり直す負荷を抑えます。「失敗したから一切記憶されない」という理解では、追加直後の挙動を読み違えます。

以前の応答を保管したカードと、新しい設定を見比べる調査机
設定を追加した後も以前の応答が残ることがある、キャッシュの確認場面です。

独自例:0秒の否定応答と、120秒のレコード追加

説明のため、アプリや端末内の追加キャッシュを除き、再帰リゾルバ一台だけを見る単純な構成を置きます。0秒時点でtest.exampleのAレコードを問い合わせ、権威DNSからNXDOMAINと、300秒のネガティブTTLが得られたとします。この.exampleの名前は説明用で、実在サービスを指しません。

120秒時点で権威DNSに正しいレコードを追加しても、再帰リゾルバには元の否定応答の期限が180秒残っています。通常のキャッシュ利用で同じ応答を返しているなら、利用者が追加済みの値をまだ受け取れないことがあります。追加の瞬間から新たに300秒を数え直す、という計算でもありません。

権威側を更新しても、既存キャッシュの時計は別
  1. 0秒

    否定応答を取得

    NXDOMAIN取得。負のTTL300秒で保持

  2. 120秒

    権威側で追加

    権威DNSへ追加。元のキャッシュ期限は残り180秒

  3. 300秒以降

    期限と再問い合わせを確認

    元の否定キャッシュは期限切れ。新しい問い合わせ結果を確認

一台の再帰リゾルバを仮定した時系列。300秒で全利用者に必ず届くという保証ではありません。

NXDOMAINとNODATAは、どちらも空欄という意味ではない

NXDOMAINは、問い合わせに対応する名前が存在しないことを表す応答です。一方、NODATAは、名前は有効でも要求した種類のレコードがない場合を指す表現です。NODATAという名前の専用RCODEがあるわけではなく、応答全体から判断します。CNAMEなどがある場合は、どの名前についての結論かも確認します。

例えば同じ名前にAレコードはあるがAAAAレコードはない、という状態はあり得ます。AAAAがないという結果だけで、その名前自体が存在しない、Aも存在しない、と結論付けるべきではありません。画面の「解決できない」という短い表示から、DNS応答の種類を推定しないようにします。

存在しない「対象」を分けて読む

NXDOMAIN

  • 名前が存在しない旨の応答
  • 要求したレコード種類だけの話に縮めない
  • CNAME等を含む応答は対象名も確認

NODATA

  • 名前は有効、要求した種類がない
  • Aは存在し、AAAAはない場合もある
  • 専用RCODE名ではなく応答から判断

DNSの否定応答と、タイムアウト・SERVFAIL・Webページの404を混同しません。

負のTTLは、追加したAレコードのTTLだけでは決まらない

RFC 2308の基本では、権威側が返す否定応答のSOAに、ネガティブキャッシュの期間を伝える役割があります。その値はSOA自身のTTLとSOAのMINIMUMフィールドの小さい方に基づきます。SOAのTTLが900秒、MINIMUMが300秒なら、ここでの値は300秒です。

後から追加するAレコードのTTLを60秒にしただけでは、既に保持された元の否定応答を直ちに失効させたことにはなりません。新しい肯定応答の保存期間と、過去の否定応答の残存期間を別に考えます。実装側がより短く制限する場合もあり、設定値と観測されたTTLを区別します。

同じ端末でも、問い合わせ先が違えば結果が違う

社内ネットワークのDNS、家庭の回線のDNS、ブラウザが独自に使うDNSなど、問い合わせ先が同じとは限りません。VPN利用時や内部向けの名前解決では、見える範囲そのものが異なる場合もあります。別の回線で解決できたという結果だけで、社内の設定ミスや攻撃を断定しないようにします。

調査では、調べた名前、A・AAAA等の種類、問い合わせ先、観測時刻、応答コード、残りのTTLをそろえて記録します。権威側の応答と、普段利用しているリゾルバの応答を、許可された範囲で比較します。利用者の画面と管理画面だけを比べて、同じ場所を観測したつもりにならないことが重要です。

キャッシュを消せば必ず直る、とは限らない

端末内のキャッシュを消しても、上流の再帰リゾルバが元の応答を保持していることがあります。アプリ、OS、フォワーダなどの追加の段階も考えます。逆に、権威側の設定や委任が誤っていれば、何度問い合わせても正しいデータには変わりません。まず、どの段階で何を返しているかを確かめます。

ここでの300秒は、設定と一つのキャッシュを固定した教材上の時計です。障害時に古い応答を扱う方式や実装の方針、DNSSEC検証、複数段の構成などもあり、サービス全体の反映期限として断定しません。調査のためにDNSSEC等の保護を安易に無効化することも、この説明からは導けません。

Webの404や、接続先アプリのエラーとは分ける

名前解決でアドレスを得た後に、接続、TLS、HTTP、アプリケーションの処理が続きます。Webの404はHTTP側の応答であり、DNSのNXDOMAINそのものではありません。「ページが開けない」という見た目だけでネガティブキャッシュが原因と決めるのは早計です。

基本の流れはDNSの仕組み、アドレスの種類はIPv4とIPv6、通信の段階はTCPとUDPと併せて確認できます。まずどの層まで進んだかを整理すると、関係のない設定を変えることを避けられます。

学習では、何秒待つかより、誰の記録が残っているかを答える

この例で120秒時点の残りは300−120=180秒です。ただし覚えたいのは引き算だけではありません。権威DNSの現在の情報と、過去に取得されたキャッシュの情報が同時に存在し得る、という関係です。「追加したのに見えない」から「追加に失敗した」へ飛躍しない練習をしてください。

モバイル2級の問題集選びでは、用語の暗記だけでなく、どの問い合わせ・どの時点・どの応答を見ているかを確認できる解説かも判断材料になります。実務の切り分けでは変更権限と影響範囲を確認し、観測結果を残してから次の確認先を決めます。

出典・参考

  1. [1]IETF RFC 2308:Negative Caching of DNS Queries(2・3・5節。後続RFCによる更新がある基礎仕様)
  2. [2]IETF RFC 8767:Serving Stale Data to Improve DNS Resiliency(障害時等の古いデータの扱い)

本番と同じペースで腕試し

記事の次は、本番形式の問題で。

各検定の出題カテゴリをもとに作った独自の無料お試しを、登録不要・カード不要で解けます。本番と同じ出題配分とは限りません。続きの模試と章別ドリルは買い切りで、月額はかかりません。

モバイルシステム技術検定 2級

100問・100分の模試と章別ドリル・¥4,980(税込・買い切り)

モバイル2級の無料お試し20問
料金と収録内容を見る →

当サイトは、MCPC・全日本情報学習振興協会・IPAとは関係のない個人が運営する非公式の学習教材です。掲載している問題はすべて当サイトのオリジナルで、実際の試験問題・過去問題・再現問題ではありません。試験の日程・受検料・出題範囲・合格基準は各試験の公式サイト(モバイル・IoT:https://www.mcpc-jp.org/license/ 、サイバー管理士:https://www.joho-gakushu.or.jp/isme/ 、情報セキュリティマネジメント(SG):https://www.ipa.go.jp/shiken/kubun/sg.html )で必ず確認してください。教材内の正答率や学習の目安は、本番の評価点や公式の合格基準とは異なります。合格を保証するものではありません。技術・制度の記述は「最終確認日」時点のものです。

← 対策記事の一覧へ