なぜ「DNSの浸透」は問題視されるのか

2011/10/27-1
実践DNS-DNSSEC時代のDNSの設定と運用-

「DNSの浸透」という表現が結構よく使われています。 DNSに設定された情報を更新したけれど、その結果がなかなか反映されずに誰かに相談すると「DNSの浸透には時間がかかります」と説明されて納得してしまうという事例が多いようです。

しかし、うまく準備を行えば、実際の切り替え処理は、いつ完了するのかが不明な「DNSの浸透」を待つのではなく、事前に計画した時間通りに完了させることが可能です。 さらに、本来であればDNS情報の設定者(ゾーン情報の設定者)は、いつまでに世界中のキャッシュが更新されるかを知ることができる環境にあり、それ以降も更新がされていなければ「何かがおかしい」とわかるはずです。

DNSにおける設定内容(DNSのリソースレコード)には、その情報をキャッシュとして保持し続けても良い期間であるTTL(Time To Live)という要素がありますが、TTLはDNS情報設定者が自分で設定します。 そのTTLを越えて、DNSキャッシュサーバがキャッシュを保持することは、DNSプロトコルに違反しています(そういった挙動を示すDNSキャッシュサーバもあるようですが、今回はそれらは範疇外とします。追記あり)。

よく見る「DNSの浸透」という表現は、自分が権威を持っている情報、つまり、世界中のDNSキャッシュの生存期間を自分で決めることができるはずの設定者が「いつ更新されるかわかりません」と言っているような感じです。 このような理由から、「DNS浸透には時間がかかります」ではなく「○○時までには世界中のDNSキャッシュが更新されるはずです」と具体的な日時を明言できるはずです。

とはいえ、DNSまわりの話は恐ろしくわかりにくいのも確かなので、DNSの仕組みと「DNSの浸透」という表現の何が間違っていて、そのような間違った理解が何故問題なのかを解説します。

この記事は長いので、最初に目次を書いておきます。

  • DNSによる名前解決の仕組み
  • DNSキャッシュの仕組みとTTL
  • 「DNSの浸透」が何故問題なのか?
  • まずはAレコードで考える
  • NSレコードの場合を考える
  • NSレコードが更新されない理由

1. DNSによる名前解決の仕組み

まず、最初におおまかにDNSを利用した名前解決の仕組みの全体像を紹介します。

1.1. DNSクライアントとDNSキャッシュサーバ

まず最初に、各家庭にあるホームネットワークから一般ユーザが名前解決を行う場合の動作を紹介します。 次の例は、ユーザが「www.example.com」というWebサイトを見ようとしたときに発生する名前解決の動作です。

まず、ユーザのノートPCには、DNSクライアントが入っています。 そのDNSクライアントは「www.example.com」という名前に対応するIPアドレスが、自分のキャッシュの中に入っているかどうかを調べます。 ノートPCの中のDNSクライアントのキャッシュに「www.example.com」の名前解決済みIPアドレスが無い場合(*)、DNSクライアントはDNSキャッシュサーバに「www.example.com」の名前解決を依頼します。(* 過去に「www.example.com」の名前解決をした事が無い、もしくは、過去に名前解決した結果のキャッシュの有効期限が切れている場合など)

ユーザのPCがDNSキャッシュサーバと通信できるのは、ユーザのPCにDNSキャッシュサーバのIPアドレスが設定されているためです。 ISPと契約すると「メールサーバ」や「DNS」に関する情報が書かれた書類が送られて来ますが、ここでいう「DNS」とは、ユーザに代わって名前解決を行ってくれるDNSキャッシュサーバを指しています。 手動で設定する方法以外に、SOHOルータが自動的にISPからDNS情報を得たうえでDHCPでホームネットワーク内のPCに伝えることによって自動設定が行われるという方法があります。

ユーザ側から見たDNSキャッシュサーバとの関係は非常に簡潔です。 PCは必要に応じてDNSキャッシュサーバに名前解決を依頼し、DNSキャッシュサーバは「www.example.com」の名前解決結果をノートPCの中のDNSクライアントに伝えます。

1.2. DNSキャッシュサーバによる反復検索

さきほどの例はユーザ視点でのDNS動作です。 次に、DNSキャッシュサーバがどのように名前解決を行っているかを解説します。

DNSキャッシュサーバは、ユーザから要求のあった名前解決のためのキャッシュを保持していれば、それをユーザに返します。 キャッシュが無い場合には、「反復検索」と呼ばれる方法を使って名前解決を行います。

以下は、DNSキャッシュサーバが「www.example.com」の名前解決結果キャッシュを持っておらず、反復検索を行う場合の例です。

まず、最初にDNSクライアントがDNSキャッシュサーバに問い合わせを行うのは同じです。 DNSキャッシュサーバは、最初の時点では、www.example.comに対応するキャッシュを保持していないので、外部のDNS権威サーバに問い合わせを行ってwww.example.comの名前解決を試みます。

(続く:次へ)

最近のエントリ

過去記事

過去記事一覧

IPv6基礎検定

YouTubeチャンネルやってます!