▽1
●
munyaX ベストアンサー |
bindなど、DNSサーバについて調べられるとわかると思うのですが、
簡単に言うとDNSは以下のようなツリー状になってまして、
. (ルート)
↓ ↓ ↓
.com .jp .net
↓
.hoge
原則として、特定のドメインの名前解決をする場合、ルートサーバから順番にたどっていきます。ただルートサーバは世界中に限られた数しかありませんので、全ネットユーザーが毎回問い
合わせると
・システムが破錠する(負荷的に)
・最終的に結果を得るまで時間がかかりすぎる
といった問題が発生します。
そこで、それぞれのDNSサーバが一度問い合わせた情報を、特定の時間キャッシュしています。
特定の時間を超えるか、人為的にDNSサーバの管理者がキャッシュをクリアすると、最新の情報を
上位サーバに取得しに行きます。
で、このキャッシュする時間はドメインを登録する際に設定することができます。
ゾーンファイルと呼ばれています。
下記の例だとTTLが86400秒と指定されていますので、1日の間キャッシュされることに
なります。
■第2回 すべての基礎、マスター・ゾーンサーバの設定
http://www.atmarkit.co.jp/flinux/rensai/bind902/bind902b.html
example.zoneは、自身で管理しているドメインの正引き用ゾーンファイルになります。ここは皆さんの環境に合わせて修正を加えてください。
$TTL 86400 (1)
@ IN SOA dns.example.jp. root.example.jp. ( (2)
2002122001 ; serial (3)
3600 ; refresh 1hr (3)
900 ; retry 15min (3)
604800 ; expire 1w (3)
86400 ; min 24hr (3)
) (4)
IN NS dns.example.jp. (5)
dns IN A 192.168.10.1 (6)
pc1 IN A 192.168.10.11
pc2 IN A 192.168.10.12
pc3 IN A 192.168.10.13
pc4 IN A 192.168.10.14
pc5 IN A 192.168.10.15
(以下省略)
/var/named/example.zone
(1) TTLに86400秒(1日)を指定
(2) ここからSOAレコード
(3) これらの値はマスター・ゾーンサーバとスレーブ・ゾーンサーバ間でやりとりする際に使用される。次回以降に説明
(4) ここまでがSOAレコード
(5) NSレコード
(6) Aレコード
あと、DNSサーバだけではなく、クライアント(お使いのWindowsやMacOS)もキャッシュをします。
DNSが更新されつくしても、クライアントに残っている場合もあります。
dnsにはキャッシュと呼ばれる一時的にデータを保管する機構があります。
それは全てのドメインの要求をこなすのは一台では困難であるため分散して処理しています。
そのキャッシュの有効期限がきれて更新されるまでの時間が差異となっています。
理由は、他の方の回答の通り、一度問い合わせた結果をキャッシュしていて、その有効期限が切れるまでは、キャッシュされた結果を使うから、なのですが、それを緩和する方法として、munyaX の回答ので言及されている TTL という値を、事前に短くしておく、という方法があります。
ただし、短い TTL は DNS キャッシュポイズニングという、セキュリティ上の問題を引き起こしやすくするので、短い TTL を設定する期間は、例えば切り替え前日に設定して、切り替え後は通常の TTL に戻す、といった事が必要です。
この辺に関して、下記のページが詳しいので、参考になると思います。
Geekなぺーじ:なぜ「DNSの浸透」は問題視されるのか