DNSキャッシュ

DNS(Domain Name System)により、FQDN(Fully Qualified Domain Name)のIPアドレスを問い合わせますが、回答を貰った後はしばらく覚えておきます。

本項では、DNSキャッシュについて説明します。

毎回問い合わせない

IPアドレスの設定の優先DNSサーバーの所で、パソコンの代わりに優先DNSサーバーがIPアドレスの問い合わせをしてくれると書きました。

優先DNSサーバーにキャッシュ機能があった場合、一回IPアドレスを問い合わせるとしばらく覚えておき、同じ問い合わせがあった場合はルートサーバーに問い合わせることなく回答します。この動作をDNSキャッシュと言い、サーバーをDNSキャッシュサーバーと言います。

DNSキャッシュサーバーがキャッシュしていれば、上位に問い合わせることなくすぐにIPアドレスを回答する。

また、パソコンでも同様の機能があり、キャッシュしています。このように、問い合わせを少なくして早く通信できるようにしています。

覚えている時間は相手に決められる

DNSキャッシュには保持時間があり、この時間はTTL(Time To Live)と言います。設定しているのは、例えばwww.example.comの場合はexampleを管理しているDNSサーバーです。

TTLを24時間にしていた場合、24時間はFQDNとIPアドレスの関係をキャッシュしていますが、24時間経つと忘れて再度問い合わせを行います。

DNSの確認

Windows系の場合、DNSはコマンドプロンプトでnslookupコマンドを実行して確認できます。「>」プロンプトになった後、確認したいドメイン名を入力するとIPアドレスがわかります。

場合によっては「権限のない回答」と出力されますが、これは優先DNSサーバーがDNSキャッシュを使って回答していることを示しています。

【nslookup実行例】
C:¥>nslookup

既定のサーバー:  UnKnown
Address:  192.168.1.1

> www.example.com
サーバー:  UnKnown
Address:  192.168.1.1

権限のない回答:
名前:    www.example.com
Address:  203.0.113.1

上記で、www.example.comのIPアドレスは203.0.113.1であることがわかります。

また、set debugと入力した後、確認したいFQDNを入力するとさまざまな情報が得られますが、TTLと記載されている部分がキャッシュの保持時間になります。

DNSキャッシュの確認

パソコン側のキャッシュの内容ですが、Windows系の場合はコマンドプロンプトでipconfig /displaydnsコマンドを実行すれば確認できます。

【ipconfig /displaydns実行例】
C:¥>ipconfig /displaydns

Windows IP 構成

    www.example.com
    ----------------------------------------
    レコード名 . . . . . : www.example.com
    レコードの種類 . . . : 1
    Time To Live  . . . .: 3600
    データの長さ . . . . : 4
    セクション . . . . . . . : 回答
    A (ホスト) レコード. . . : 203.0.113.1

上記では、www.example.comだけがキャッシュされていますが、通常はたくさん表示されると思います。

DNSキャッシュの消去

Windows系の場合、DNSキャッシュはコマンドプロンプトでipconfig /flushdnsコマンドを実行して削除できます。

【ipconfig /flushdns実行例】
C:¥>ipconfig /flushdns

Windows IP 構成

DNS リゾルバー キャッシュは正常にフラッシュされました。

削除すると、いったんすべてのDNSキャッシュがクリアされますが、通信する際は再度DNSサーバーと通信してキャッシュします。

関連ページ

基本編「DNSの確認
nslookupコマンドを使ったDNSの実技ができます。
トラブル対応「DNS
DNSについて、詳しく説明しています。
トラブル対応「nslookup
nslookupコマンドの使い方を詳しく説明しています。