DNSキャッシュ
DNS(Domain Name System)により、FQDN(Fully Qualified Domain Name)のIPアドレスを問い合わせますが、回答を貰った後はしばらく覚えておきます。
本項では、DNSキャッシュについて説明します。
毎回問い合わせない
IPアドレスの設定の優先DNSサーバーの所で、パソコンの代わりに優先DNSサーバーがIPアドレスの問い合わせをしてくれると書きました。
優先DNSサーバーにキャッシュ機能があった場合、一回IPアドレスを問い合わせるとしばらく覚えておき、同じ問い合わせがあった場合はルートサーバーに問い合わせることなく回答します。この動作をDNSキャッシュと言い、サーバーをDNSキャッシュサーバーと言います。
また、パソコンでも同様の機能があり、キャッシュしています。このように、問い合わせを少なくして早く通信できるようにしています。
覚えている時間は相手に決められる
DNSキャッシュには保持時間があり、この時間はTTL(Time To Live)と言います。設定しているのは、例えばwww.example.comの場合はexampleを管理しているDNSサーバーです。
TTLを24時間にしていた場合、24時間はFQDNとIPアドレスの関係をキャッシュしていますが、24時間経つと忘れて再度問い合わせを行います。
DNSの確認
Windows系の場合、DNSはコマンドプロンプトでnslookupコマンドを実行して確認できます。「>」プロンプトになった後、確認したいドメイン名を入力するとIPアドレスがわかります。
場合によっては「権限のない回答」と出力されますが、これは優先DNSサーバーがDNSキャッシュを使って回答していることを示しています。
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コマンドを実行すれば確認できます。
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コマンドを実行して削除できます。
C:¥>ipconfig /flushdns Windows IP 構成 DNS リゾルバー キャッシュは正常にフラッシュされました。
削除すると、いったんすべてのDNSキャッシュがクリアされますが、通信する際は再度DNSサーバーと通信してキャッシュします。