あなたのIPv4アドレス:
オペレーティングシステム:
プロバイダー:

DNSキャッシュの仕組み

DNSキャッシュは直近の回答を保存しておく仕組みで、リクエストのたびに名前空間の階層をたどって一から名前解決する必要をなくします。キャッシュは、アプリケーション、OS、フルリゾルバーのそれぞれに存在する可能性があります。そのうちの1か所から回答を削除しても、ほかの場所にあるコピーがすぐに置き換わるわけではありません。

有効期間を決めるもの

DNSレコードにはTTLが設定されています。これは、受け取った回答をキャッシュから再利用してよい秒数です。リゾルバーは通常、レコードを保持しているあいだ残りの有効期間をカウントダウンしていきます。ドメイン所有者がアドレスを変更しても、すでにキャッシュされている回答は古いTTLが切れるまで有効なままの場合があります。アドレスの変更と同時にTTLを下げても、それ以前に取得されたコピーの有効期間は短くなりません。

否定応答もキャッシュされることがあります。まだ作成されていない名前について、リゾルバーがNXDOMAINを受け取っていたとしましょう。その後レコードを追加しても、しばらくは以前の否定応答が見えてしまうユーザーがいます。この否定応答キャッシュの動作はRFC 2308で定義されています。

古い回答の出どころを突き止める

ドメインの権威DNSサーバー、任意のパブリックDNS(フルリゾルバー)、自分のデバイスの順に問い合わせてみましょう。権威DNSサーバーの回答がまだ古ければ、ゾーンかその委任を修正する必要があり、ローカルキャッシュをクリアしても意味がありません。権威DNSサーバーの回答は新しいのに手元の回答が古い場合は、残りのTTLを確認し、期限が切れてから再試行してください。ドメインのレコードはドメイン設定チェックで調べられます。

問い合わせるときは、必要なレコードタイプを正確に指定します。キャッシュされたAレコードでMXの誤った回答は説明できませんし、AAAAレコードによってIPv6のトラフィックだけがIPv4とは別のサーバーに向かうこともあります。サブドメインを含めた完全なホスト名で確認しましょう。ブラウザーが独自のDoHリゾルバーを使っている場合は、システムのツールと結果が異なることがあります。リゾルバーごとの応答は2IPのDNS応答時間の確認で比べられます。

ローカルキャッシュをクリアすべきとき

修正を済ませたあとも自分のデバイスだけが古い結果を使い続けている場合は、ローカルキャッシュのクリアが役立ちます。具体的なコマンドはOSや使用中のリゾルバーによって異なるため、まずどのコンポーネントが該当するかを確認してください。この操作で、プロバイダーやパブリックDNS、他人のパソコンのキャッシュまで消すことはできません。

DNSキャッシュとブラウザーのページキャッシュを混同しないようにしましょう。前者は名前解決の情報を、後者はサイトのコンテンツを保持しています。IPアドレスが正しくても、HTTP、HTTPS、メールサービスが動作している証明にはなりません。設定を変える前に、どのレイヤーが想定外の回答を返しているのかを見極めてください。

具体例

あるサイトが192.0.2.10から192.0.2.20に移転したとします。権威DNSサーバーは新しいアドレスを返していますが、自宅のルーターはキャッシュした古い値をまだ返しています。権威DNSサーバーに直接問い合わせると新しいレコードが、自宅ネットワーク経由で問い合わせると以前のレコードと残りのTTLが表示されます。期限が切れれば、ほかに設定上の問題が残っていない限り、両者の回答は一致するはずです。

なお、これらのアドレスはドキュメント用に予約されたもので、実在のWebサイトではありません。実際の作業では、変更した時刻、新旧の値、TTL、そして指定したサーバーごとの回答を記録しておきましょう。DNSが「完全に浸透した」とされるはっきりしない時点をただ待つより、こうした記録のほうがずっと役に立ちます。