「DNSの浸透待ち」は回避できる――ウェブ担当者のためのDNS基礎知識


 インターネットサービスを提供する側にとって「自身が運営するサイトにいかにしてユーザーを集めるか」は、言うまでもなく極めて重要なテーマである。しかし、それは「自身のサイトにユーザーが正しくアクセスできる」ということが前提になっている。もし、自身が運営するサイトにユーザーがアクセスできなくなってしまったら、つまり、当たり前だと思っていた前提がもし崩れてしまったら……。それは、多くのサイト運営者にとって考えたくもない事態だろう。

 そんな「サイトにアクセスできない状況」の1つとして、「DNSの浸透待ち」の状態があるという話を聞いた人は、読者の中にも意外と多いのではないだろうか。

 「DNSの浸透待ち」とは、サイトの引っ越しの際などに、新サイトにアクセスできない期間が発生することがある場合の説明としてよく使われる表現だ。サイトの引っ越しには付きものの仕方のない現象としてとらえる向きもあるが、実はそうではない。本来的に回避できる問題であり、回避のためにはDNSの正しい運用と信頼できる事業者の選択が大事だという。

 「DNSの浸透待ち」がなぜ起こるのか? 運営するサイトへユーザーが確実にアクセスできるようにするために考慮すべきことは何か? ウェブ担当者が知っておくべきDNSの基礎知識を、株式会社日本レジストリサービス(JPRS)の新サービス推進部兼技術研究部部長である三田村健史氏と、システム部の坂口智哉氏、阿波連良尚氏の3名に解説いただいた。

株式会社日本レジストリサービスの三田村健史氏(新サービス推進部兼技術研究部部長)株式会社日本レジストリサービスの坂口智哉氏(システム部)株式会社日本レジストリサービスの阿波連良尚氏(システム部)

DNSとはそもそも何か?

 「DNSの浸透待ち」の起きる原因とその防止方法について理解するには、まず、DNSとはそもそも何なのかを知る必要がある。そこで、その仕組みの概要を、DNSを理解する上で重要なキーワードとともに解説する――。

◇ ◇ ◇

【ドメイン名とIPアドレス】

 「DNS(Domain Name System)」とは、その名の通りドメイン名を使えるようにするための仕組みです。インターネットの通信は、内部的にはネットワークに接続された機器(コンピューター)に付けられた「IPアドレス」と呼ばれる特別な数字を使って行われます。しかし、このIPアドレスを人間が直接扱うのはとても難しい。では、どうすればよいのでしょうか。

 携帯電話を想像してほしいのですが、みなさんが電話をかける時、番号ではなく「アドレス帳」を使って名前(人名や会社名など)でかけたい相手を指定すると思います。現在のインターネットが出来始めた1980年代、当時インターネットを使っていた技術者たちも同じことを考えました。DNSは、名前によって相手を指定できるようにする、いわば「インターネットのアドレス帳」で、名前(ドメイン名)とIPアドレスをきちんと対応付けてくれるのです。

【名前解決】

 ユーザーがウェブサイトにアクセスしたり、メールを送信する時にドメイン名を使うと、コンピューターの内部でブラウザーやメールソフトなどのクライアントプログラム(以降、単に「クライアント」)が「ドメイン名からIPアドレスを調べてくれ」という問い合わせをDNSに対して行い、その回答としてIPアドレスを受け取っています。このように、ドメイン名に対応するIPアドレスを調べることを「名前解決」と呼びます。名前解決は、「リゾルバー」と呼ばれるプログラムによって、ユーザーが意識することなく行われています。

図1 DNSの役割と、その機能

【階層構造と委任】

 世界的に見ると、ドメイン名は膨大な数になります。しかも、新しく登録されたドメイン名や使われなくなるドメイン名、ドメイン名とIPアドレスの対応の変更といったことが頻繁に発生し、その反映も随時必要になりますから、アドレス帳を1カ所で集中管理するのはほぼ不可能です。それに対応するために、ドメイン名には「階層構造」が導入されています。

 一般に、管理する対象が増えてくると、その管理者の負担が大きくなります。これは、人間の世界でも同じですね。このような場合、組織を分割し、信頼できる人にその一部分を任せるということをすると思います。インターネットの世界でもこれと同様の形で「ルート」と呼ばれる頂点の直下に複数の「TLD(Top Level Domain)」という名前を作り、それぞれの管理・運用を信頼できる組織に任せる(委任する)ということをしています。これが、ドメイン名における「階層構造」です。そして、各TLDでもそれぞれの直下にいろいろな名前を登録できるようにして、登録者に委任するということを同様に繰り返します。

 この、管理を分散し、それぞれを自律させるという方法によって、委任された人々は当該ドメイン名について自分自身で管理・運用を行うことができるようになります。例えば、インプレスグループが登録し、自社サイトなどで利用している「impress.co.jp」というドメイン名はインプレスグループに委任されているわけですが、委任されたことでこのドメイン名の中はインプレスグループのルールで管理・運用できるようになります。そのため、上位のドメイン名(この場合は「.jp」というTLD)の管理者と調整しなくても「internet.watch.impress.co.jp」などのドメイン名を作れるわけです。

 階層構造の導入によって得られたこうした自由度の高さが、インターネットの急激な成長の原動力となりました。もし、一極集中型の仕組みのままだったら(DNSが開発される前は、インターネットも一極集中型で名前を管理していたのです)、おそらく今日のようなインターネットは存在していなかったでしょう。インターネットは、DNSという仕組みを採用したからこそ、これだけ発展できたと言うことができます。

 ここでピンと来た読者の方もいらっしゃると思いますが、DNSの仕組みは、いかに「委任」を円滑に行うか、そして、委任を受けた側がどれだけきちんと管理・運用をするかにかかっています。逆の言い方をすると、委任という形で自律した管理・運用を委ねるのですから、委任を受けた側にはその責任を果たしてもらう必要があります。図2を見てください。

図2 委任による自律・分散と協調

 この図は、DNSにおいて誰がそれぞれのドメイン名の責任を持つのかを示しています。その基準は単純で、そのドメイン名に対して委任をしているか否かがポイントになると考えてください。委任をしていなければ、そのドメイン名の管理・運用の責任は上位のドメイン名の管理者にあることになります。

 ルートは、JPドメイン名をJPRSに委任していますので、「.jp」で終わるドメイン名の名前解決要求があった場合、JPドメイン名を管理するDNSサーバー(JP DNS)に改めて問い合わせをするように仕向けます。同様に、JP DNSに「internet.watch.impress.co.jp」というドメイン名への名前解決要求があれば、JP DNSはインプレスグループが管理するDNSサーバーに改めて問い合わせをするように仕向けます。委任された側のDNSサーバーは、最終的な問い合わせに対し、決められた応答をしなければなりません。そうでないと、名前解決がうまくいかないからです。したがって、委任を受けた側は、そのドメイン名の管理・運用に責任を持たなければなりません。

【権威DNSサーバーとキャッシュDNSサーバー】

 DNSの委任と、DNSの名前解決の関係を分かりやすく示したのが図3です。

図3 DNSの委任と名前解決の関係

 委任の仕組み自体は非常に単純です。図3は動作を擬人化していますが、クライアントが「www.example.jp」のIPアドレスを知りたい場合、最初の問い合わせ先としてルートを選びます(ルートの情報は、後述する「キャッシュDNSサーバー」があらかじめ持っています)。ルールは、問い合わせに対して自身が知っている情報を規定された形で返すだけなので、委任をしている場合、その委任先の情報を問い合わせ元に返します。委任元は、その応答を受け取ると、指定された次の委任先に再び問い合わせを行います。この動作を繰り返し、最終的に目的とする情報が得られるわけです。

 ただし、この方法(同じ内容の問い合わせを繰り返すことから「反復問い合わせ」と呼ばれます)は手順が多く、ある程度手間がかかります。そこで、反復問い合わせをして結果を得る(名前解決する)ための専門の中間者を設けます。中間者はクライアントからの要求を処理しますが、一度問い合わせを行った名前解決の結果を一時的に保管(キャッシュ)し、再利用することで外部への問い合わせを減らす役割も担います。

図4 改良された名前解決の形

 DNSの世界では、実際のドメイン名の管理・運用を行っているサーバーを「権威DNSサーバー」、中間者となって名前解決をするサーバーを「キャッシュDNSサーバー」と呼んでいます。

【レジストリとレジストラ】

 このように委任による自律・分散と協調で動いているDNSは、自身のサイトの設定だけを行えば、サイトに確実にアクセスしてもらえるようになるわけではありません。DNSの関係者がどのようになっているのか見てみましょう。

 ここはなかなか単純化できないのですが、イメージをつかんでいただくための図を用意しました。図5を見ていただけますでしょうか。

図5 DNSの関係者

 左端に「ドメイン名登録者」がいます。ドメイン名登録者は自身が使いたいドメイン名を実際に使えるようにするために、「ホスティング事業者」や「DNSプロバイダー」、「ドメイン名レジストラ」(単に「レジストラ」とも)と呼ばれる事業者と契約を行います。この薄いブルーで囲まれたところが、ドメイン名登録者にとっての窓口となる事業者になります。中央やや右の「ユーザー」は、それぞれのサイトの訪問者(顧客)です。ユーザーが名前解決で使用するのはISPの「キャッシュDNSサーバー」です。

 例えば、「example.jp」というドメイン名を使いたい時、ドメイン名登録者は窓口となる事業者を通じて、JPRSに「example.jp」の登録申請を行います。JPドメイン名の管理・運用を行っているJPRSのように、委任を受けてTLDの運用・管理を行っている事業者を「レジストリ」と言います。

 登録が受け付けられ、委任に必要な情報が入力されると、JP DNSに「example.jp」というドメイン名に対する委任情報が加えられます。実際の「example.jp」(「www.example.jp」「mail.example.jp」など)の管理・運用はドメイン名登録者が契約をした事業者などが行うことになりますが、一般的な形はこのようになります。

 DNSで、自身のサイトに対するアクセスを確実にするために必要なことは、これはもう、DNSを正しく設定してもらい、(自身のサイトの情報を持つ権威DNSサーバーへの誘導をするための)委任情報を上位の権威DNSサーバーに正しく登録してもらうことに尽きます。インターネットでは、DNSを通じてアクセス先のIPアドレスを得て接続を行うことになりますが、DNSによる名前解決が失敗すると、接続先のIPアドレスを正しく得られないことになります。そうなると、サイトにアクセスすることができません。

 ドメイン名登録者から見た場合には、契約した事業者がきちんとした管理と設定をしていることを見極める、つまり信頼できる事業者を選ぶことが重要でしょう。

「DNSの浸透待ち」の原因と対策

 それでは、これまで説明してきたDNSの仕組みとDNSの関係者の役割の話をベースに、「DNSの浸透待ち」の原因と回避方法を考えてみよう――。

◇ ◇ ◇

 サイトの引っ越し、特に事業者の引っ越しの際にサービスを中断させないためには、サービスの並行運用が不可欠です。図4をベースに話をすると、例えば「example.jp」の管理・運用者がA社からB社に変わった場合、中間者(キャッシュDNSサーバー)がキャッシュとして保持している情報の有効期間の影響を受けます。仮に、中間者がA社の権威DNSサーバーから返ってきた応答を24時間保持している場合、この中間者からの情報を使う限り、最大で変更後24時間はB社の権威DNSサーバーに対して名前解決の問い合わせをしないことになるからです。

 キャッシュDNSサーバーが受け取った応答をどれだけの時間保持するかは、当該ドメイン名の管理・運用者が権威DNSサーバーの設定として指定できます。この値を「TTL(Time To Live:有効期間の意味)」と呼びます。引っ越しにあたり、引っ越し元の権威DNSサーバーのTTLをあらかじめ短くしておくと古いデータが消えて無くなるのが早くなりますが、TTLはただ単に短くすればよいというものでもありません。専門的になるので詳細は省略しますが、短すぎるTTLは害にもなるからです。

 サイトの引っ越しにおける浸透問題の本質は、古い情報がいつまでも消えないことにあります。「example.jp」の管理・運用者がA社からB社に変わった時に、いつまでもA社の権威DNSサーバー応答が使われてしまうと新しいサイトにアクセスが向かない。これを避けるための方法として、管理・運用者をB社に切り替える前に十分な時間的余裕を持って、A社の権威DNSサーバーが返す応答の中身をB社の権威DNSサーバーが返す応答の中身と同じものにしてしまうやり方があります。このポイントを簡単に示すと、次のようになります。

※引っ越し前にA社で運用している時の「example.jp」のIPアドレスを「192.0.2.101」、引っ越し後のB社で運用する「example.jp」のIPアドレスを「192.0.2.202」として説明。

【引っ越し前:A社が管理している状態】

A社 「example.jp」の管理は「A社の権威DNSサーバー」がしている
  「example.jp」のIPアドレスは「192.0.2.101」である

【引っ越し時:A社からB社への切り替え】

A社 「example.jp」の管理は「B社の権威DNSサーバー」がしている
  「example.jp」のIPアドレスは「192.0.2.202」である

B社 「example.jp」の管理は「B社の権威DNSサーバー」がしている
  「example.jp」のIPアドレスは「192.0.2.202」である

【引っ越し終了時:A社の管理を終了】

B社 「example.jp」の管理は「B社の権威DNSサーバー」がしている
  「example.jp」のIPアドレスは「192.0.2.202」である

 いかがでしょうか。この方法を取ると、引っ越し元のA社と引っ越し先のB社が協調した形で管理・運用者の変更を行いますので、引っ越しの際などに新サイトにアクセスできなくなるという事象は起こりません。ただし、実際の引っ越しの場面では顧客に去られるA社が非協力的であったりするなどの理由により、この方法が採用できない場合もあります。そうならないためには、事業者との契約の際にDNSの安定性やサポートなどをきちんと評価することが不可欠です。

 なお、応答内容の設定方法など技術的詳細については、JPRSトピックス&コラム「DNSサーバーの引っ越し~トラブル発生を未然に防ぐ手順とポイント~」としてJPRSのサイトで公開していますので、そちらもご覧ください(本記事末のURL参照)。

インターネットの安定のために

 冒頭で少し触れましたが、インターネットは、DNSという仕組みを得て今日の繁栄を築くことができました。例えば、インプレスグループは自身の設定変更のみで「impress.co.jp」というドメイン名の下に自由に新しいドメイン名を作ることができ、また、止めることもできますよね。これほど参入や撤退が容易な仕組みは、他に類を見ません。

 インターネットは、私たちの生活に欠かせないものとなりました。それだけに、その安定運用は日々重要度を増しています。JPRSは、こうしたDNSの仕組みがきちんと動作するように、責任を持ってJPドメイン名を管理・運用し、さまざまな情報提供も行っています。レジストリという仕事は、DNSの安定のために、ドメイン名の登録とDNSに関する情報(委任情報)のデータベースを管理し、自身が管理するDNSに正確に反映することが一番の使命なのです。

 ただし、DNSのような分散、自律の仕組みを確実に動かすためには、各関係者の協調を抜きにできません。ぜひ、これを機会に、読者の皆さま方にはDNSの仕組みにも関心を持っていただければと思います。

◇ ◇ ◇

 今回は「DNSの浸透待ち」をキーワードにDNSの基礎知識について解説していただいたが、インターネットを安定して運用するためには、委任という仕組みを上手に使うことと、委任された側がきちんと管理・運用することが求められることが分かった。ウェブ運営担当者は、ユーザーが自身のサイトに確実にアクセスできるようにするために、コンテンツやサービスに加え、こうしたDNSの管理にも気を遣う必要がある。

JPRSは、「.jp」のレジストリとして「.jp」を止めないようにしっかり運用して行くのはもちろんのこと、インターネットを安定させるためのさまざまな活動も行っています。まず、インターネットの仕組みを作る側への働きかけとして、インターネット技術の標準化を推進する団体「IETF(Internet Engineering Task Force)」や、インターネットの各種資源を全世界的に調整することを目的とした組織「ICANN(Internet Corporation for Assigned Names and Numbers)」への参画を通じて、技術標準や運用、ポリシー策定にかかわっています。その成果として、「国際化ドメイン名(IDN)」が国際規格となり、IPv6やDNSSECなどといった新たな技術への対応も進んでいます。
インターネットの仕組みを使う側への働きかけとしては、JPRSの指定事業者向けセミナーなどの定例的な開催、DNSとの関連が深い日本のネットワークコミュニティ(JANOGやDNSOPS.jp、DNSSEC.jpなど)への積極的な参画、一般の方々や技術者向けに、ウェブや記事執筆、講演などの活動を通じてさまざまな情報提供を行っています。インターネットの発展に寄与して社会に貢献できるよう、新たな技術や安定運用のための情報提供などの取り組みを積極的に行っていきます。




関連情報


(遠山 孝)

2012/2/27 06:00