« qmail+vpopmailで発生したエラー | メイン | Fiddler2を使う その1 »

DNSのTTL

DNSのTTL

DNSのTTL設定といえば、SOAレコードのTTLだとずっと思っていたのだが、実はSOAレコードのTTLはスレーブDNSサーバーがプライマリDNSサーバーからDNS情報をキャッシュし続ける時間であり、ネガティブキャッシュと呼ばれているそうだ。

実は、それ以外のDNSサーバー(DNSサーバーでなくてもローカルマシンがDNSをキャッシュする場合においても)がDNS情報をキャッシュする時間は、SOAレコードに指定されたTTL時間ではない。

@IT 第2回 すべての基礎、マスター・ゾーンサーバの設定にあるように、zoneファイルの先頭のほうにあるにある$TTL指定がゾーン全体のTTLとなり、レコード個別のTTLも指定可能である。

以上の理由により、サーバー間で引越しをするようなことがあれば、事前にTTLを減らしておいて変更を早く適用できるようにする必要があるが、SOAレコードのTTLだけでなく、$TTLの値も減らしておく必要があるというわけだ。

それでは各端末において、特定のドメインの残りキャッシュ時間を知るためにはどうすればよいか。

Linuxにおいては、digコマンドが利用できるので、以下のようにやると良い。
dig @localhost www.development-network.net a ※localhostにDNSサーバーがたっている場合

※一部省略
;; ANSWER SECTION:
www.development-network.net. 900 IN A 124.98.21.52

ここに 900 という数値があれば、残り900秒でキャッシュが更新されることを示している。何度か実行してみると、900の数値が経過時間分だけ減っていることがわかる。

Windows XPにおいては、ipconfig /displaydns とするとローカルキャッシュの残り時間を知ることが出来る。

www.development-network.net
----------------------------------------
Record Name . . . . . : www.development-network.net
Record Type . . . . . : 1
Time To Live . . . . : 845
Data Length . . . . . : 4
Section . . . . . . . : Answer
A (Host) Record . . . : 124.98.21.52

ローカルキャッシュがクリアされる条件は、DNSサーバーを変更するか、マシンを再起動するか、ipconfig /flushdnsコマンドが発行されたときである。



トラックバック

トラックバックは本サイトの紹介(リンクがあれば可)があるものに限り受付いたします。このエントリーのトラックバックURLは以下のとおりです。

http://blog.development-network.net/mt/mt-tb.cgi/670

コメントを投稿