- DNSの問い合わせで「そのドメインは存在しない(NXDOMAIN)」という否定的な応答をキャッシュして、同じ問い合わせを一定時間繰り返さない仕組みのこと
- ネガティブキャッシュがあることでDNSサーバーへの無駄な問い合わせが減りインターネット全体の負荷軽減に貢献するが、新しいドメインの伝播を遅らせる副作用がある
- ネガティブキャッシュのTTL(有効期間)はSOAレコードのMINIMUM値で制御され、RFC 2308では最大3時間(10800秒)を推奨している
【深掘り】これだけ知ってればOK!
ネガティブキャッシュが問題になる場面がある。新しいドメインを登録したとき:キャッシュが残っている間は「存在しない」という情報がキャッシュされているため、新しいレコードが伝播しても一定時間アクセスできないことがある。ドメイン移行後:古いIPアドレスのNXDOMAIN応答がキャッシュされ移行後のサーバーに届かないことがある。
ネガティブキャッシュのTTLはSOAレコードのMINIMUM値で決まる。例えばSOAレコードのMINIMUMが3600(1時間)なら、NXDOMAINの応答は1時間キャッシュされる。インフラ変更が多い環境ではMINIMUM値を短くすることでネガティブキャッシュの影響を最小限にできる。
Webエンジニアが意識すべき場面として、新しいサブドメインを追加した直後・DNSレコードを変更した直後・ドメイン移行直後がある。ネガティブキャッシュのTTLが残っている間は一部のユーザーで名前解決が失敗する可能性があるため、事前にSOAのMINIMUM値を低くしておくことがベストプラクティスだ。
よくある誤解
ネガティブキャッシュはキャッシュの一種に過ぎないと思っている
通常のキャッシュは「正しい応答を一時保存する」が、ネガティブキャッシュは「失敗した結果を一時保存する」点が異なる。これはDNSのパフォーマンス最適化に不可欠な仕組みで、RFC 2308として標準化された正式なプロトコルだ。
DNSキャッシュをクリアすればネガティブキャッシュも即座に解消されると思っている
ローカルのDNSキャッシュをクリアしても、上位のDNSリゾルバー(ISPのDNSサーバーなど)にキャッシュが残っていれば問題は解消しない。TTLが切れるまで待つか、自社管理のDNSサーバーであればキャッシュを強制クリアする必要がある。
会話での使われ方

新しいサブドメインを追加したのに30分経っても名前解決できないんですが。ネガティブキャッシュが残っている可能性があります。SOAのMINIMUM値を確認してください。
インフラエンジニアが新規サブドメイン追加後の名前解決の問題をトラブルシューティングしている場面。




ドメイン移行前にSOAレコードのMINIMUM値を300秒に下げておいてください。ネガティブキャッシュのTTLを短くして移行後の影響を最小化します。
シニアインフラエンジニアがドメイン移行作業の事前準備として担当者に指示している場面。




ipconfig /flushdnsで自分のPCのDNSキャッシュはクリアできましたが、会社のDNSサーバー側のネガティブキャッシュはTTLが切れるまで待つしかないですね。
システム担当者がDNS障害対応で自分でできる範囲の対処をしながら上位DNSの制限を説明している場面。
【まとめ】3つのポイント
- 存在しない応答をキャッシュしてDNSサーバーの負荷を軽減する:NXDOMAINという否定的な応答もTTLの間キャッシュすることで無駄な問い合わせを減らし、インターネットインフラ全体の効率化に貢献する仕組みだ
- SOAレコードのMINIMUM値でTTLを制御する:ネガティブキャッシュの有効期間はSOAのMINIMUM値で決まるため、ドメイン移行・新規サブドメイン追加の前には値を短くしておくことがインフラ変更時のベストプラクティスだ
- flushdnsはローカルのみ・上位DNSのキャッシュはTTL待ち:ローカルDNSキャッシュのクリアは自分のPCのみに有効で、ISPや上位DNSリゾルバーのネガティブキャッシュはTTLが切れるまで残り続けることを理解しておく必要がある
よくある質問
-
QネガティブキャッシュのTTLはどうやって確認しますか?
-
A
対象ドメインのSOAレコードを確認します。「dig SOA example.com」コマンドの出力の最後の数値がMINIMUM値(ネガティブキャッシュのTTL)です。Windowsでは「nslookup -type=SOA example.com」で確認できます。
-
Qネガティブキャッシュが原因で新しいドメインにアクセスできない場合の対処法は?
-
A
まず「ipconfig /flushdns」(Windows)や「sudo dscacheutil -flushcache」(Mac)でローカルキャッシュをクリアします。それでも解消しない場合はSOAのMINIMUM値のTTLが切れるまで待つか、別のDNSサーバー(8.8.8.8など)を一時的に使用します。
-
QRFC 2308とは何ですか?
-
A
DNSのネガティブキャッシュを標準化したRFC(インターネット標準仕様書)です。1998年に策定され、NXDOMAINレスポンスのキャッシュ方法・TTLの計算方法・最大TTLの推奨値(3時間)などを定めています。
-
Qネガティブキャッシュとポジティブキャッシュはどう違いますか?
-
A
ポジティブキャッシュは「このドメインのIPアドレスはXXX」という正常な応答をキャッシュします。ネガティブキャッシュは「このドメインは存在しない(NXDOMAIN)」という否定的な応答をキャッシュします。どちらもDNS問い合わせの効率化が目的です。
この用語と一緒に知っておきたい用語
| 用語 | この記事との関連 |
|---|---|
| キャッシュ | キャッシュとの関係を知ると全体像がつかみやすくなります。一度読み込んだWebサイトやアプリのデータを端末に一時保存する仕組みのこと! |
| DNS | DNSは関連分野でよく登場する重要キーワードです。インターネット上でIPアドレス(例:192.168.1.1)をドメイン名(例:itkagyo.com)に変換する住所変換システムだよ |
| ドメイン | ドメインを押さえると本記事の理解がさらに深まります。Webサイトやメールに使われるインターネット上の住所のこと――URLの中にあるexample.comの部分がドメインだよ |
| サーバー | サーバーを押さえると本記事の理解がさらに深まります。ネットワークを通じて情報やサービスを提供する側のコンピューターのこと。レストランで料理を運んでくれる給仕係(server)をイメージするとわかりやすいよ |
| レコード | レコードを押さえると本記事の理解がさらに深まります。レコードの主要な特徴と用途を理解することで、関連する技術・制度・概念を正確に把握できるようになる |
【出典】参考URL
https://www.rfc-editor.org/rfc/rfc2308 :RFC 2308 Negative Caching of DNS Queries
https://e-words.jp/w/%E3%83%8D%E3%82%AC%E3%83%86%E3%82%A3%E3%83%96%E3%82%AD%E3%83%A3%E3%83%83%E3%82%B7%E3%83%A5.html :IT用語辞典「ネガティブキャッシュ」
https://www.infraexpert.com/study/dnsz10.html :DNS SOAレコードとネガティブキャッシュの解説


コメント