ニュースレターNo.22/2002年12月発行
インターネット10分講座:DNS
DNS(ディーエヌエス: Domain Name System)は、 インターネットの重要な基盤技術の一つで、 ドメイン名とIPアドレスの対応付けや、 メールの宛先ホストを指示するためのシステムです。
DNSとは
DNSは、Domain Name Systemの略で、その名前が示すようにインターネット上でドメイン名(ドメインネーム※1)を管理・運用するために開発されたシステムです。DNSはインターネットを利用するうえでなくてはならない存在であり、現在のインターネットにとって、必要不可欠なシステムの一つとなっています。
では、DNSとはどのようなものなのでしょうか。
インターネットに接続している機器には「IPアドレス」という固有の番号が必ず割り当てられます。そして、インターネット上におけるすべての通信は、相手先のIPアドレスが指定されることにより行われます。例えば、JPNIC Web(http://www.nic.ad.jp/)をWebブラウザで見る場合、実際にはwww.nic.ad.jpのIPアドレスである202.12.30.144という宛先IPアドレスに対して通信が行われることになります。そのためhttp://www.nic.ad.jp/を指定するかわりにhttp://202.12.30.144/とすることも可能です※2。
しかし、このようにIPアドレスで相手先を直接指定することは、インターネットを利用する各ユーザーが、該当するWebサーバ等のIPアドレスをなんらかの方法ですべて記憶しておく必要があり、現実的ではありません。また、なんらかの理由により相手先ネットワークの構成が変更された場合、IPアドレスはしばしば付け直されたり、変更される場合があります。このような場合、以前記憶していたIPアドレスでは接続できなくなってしまいます。
そのため、より人間が覚えやすく使いやすい「名前」で指定できるようにするためのしくみが必要となります。DNSはそれを実現するためのシステムです。
HOSTS.TXTからDNSへ
インターネットの前身であるARPANET※3では、ホスト名※4とIPアドレスの対応表として、HOSTS.TXT というテキストファイルを使用していました。これと同じ仕組みは、現在でもUNIXベースのシステムに/etc/hostsファイルとして存在しています。以前はHOSTS.TXTのおおもとのファイルはSRI-NIC※5で保守・管理され、Anonymous FTPで公開※6されていました。
当時、新しくARPANETに接続した組織は、最新のHOSTS.TXTをSRI-NICから入手し、自分のホストに導入していました。これにより、相手先ホストを名前で指定することができるようになります(図1)。
自分の名前とIPアドレスの対応は、SRI-NICにメールで通知します。SRI-NICではこのメールを受けてHOSTS.TXTの更新作業を行い、公開します。すなわち各ホストでは、定期的にSRI-NICからHOSTS.TXTを入手し、ファイルを更新すればいいことになります。
しかし、この方法は、
- 接続ホスト数の増加によるHOSTS.TXTファイルの肥大化
- HOSTS.TXTファイルの更新頻度の増大による作業量の増加
- マスターファイルを集中管理するサーバの負荷の増大
等の理由により、1980年代初頭にはすでに限界に達していました。そこで、これらの問題を解決するための新たな仕組みが開発され、1983年にRFC882およびRFC883として発表されました。これが現在のDNSの元となったものです。その後RFC882とRFC883は1987年にそれぞれRFC1034とRFC1035に改版され、現在のDNSになりました。DNSにはその後も数多くの機能付加や改良が行われ、現在に至っています。
DNSのしくみ
DNSのしくみについて説明しましょう。DNSでは名前空間の最上位に「ルートサーバ」と呼ばれるサーバが作成されます。ルートサーバでは"jp"や"com"など、一番上位のドメイン名(TLD※7)のDNSサーバがインターネット上のどの位置にあるか(つまり、どのIPアドレスなのか)を管理します。TLDサーバではそれぞれの空間で管理される名前、たとえば"example.jp"や"ad.jp"などのDNSサーバがどこにあるかを管理します。"example.jp"のサーバでは自分の名前空間の中にあるホストへの対応表、たとえば"www.example.jp"のIPアドレスが管理されます。
このようにDNSでは、名前を「ドメイン」と呼ばれる階層構造で管理することによりデータを複数のホストに分散化して管理するようになっています(図2)。これにより、
- ファイルが肥大化しないように、データを複数のホストに分散化
- 名前を「ドメイン」として階層化し、更新作業の集中を防止
が実現され、HOSTS.TXTを一元管理していた際に生じた問題が解決されました。
DNSにおける問い合わせの流れ
実際にDNSを使用して名前を問い合わせるときの流れについて説明しましょう(図3)。
DNSを利用するときにはまず「DNSサーバに問い合わせを行うためのサーバ」を1台用意します。問い合わせを行うためのサーバには、ルートサーバのIPアドレスが書かれた表をあらかじめ準備しておきます。
問い合わせを行うためのサーバは、組織内の他の機器(PCなど)から問い合わせの依頼を受けます。たとえば"www.example.jp"というドメイン名のIPアドレスの問合わせを受けた場合、まずルートサーバにwww.example.jpのIPアドレスを問い合わせます。ルートサーバはそれに対し「それはjpサーバが管理しています」ということを知らせるために、jpサーバの位置を知らせます。
結果を受け取ったサーバは、jpサーバに同様の問い合わせを行います。jpサーバはルートサーバと同様に「それはexample.jpサーバが管理しています」ということを知らせます。最終的に問い合わせを受けたexample.jpサーバが、www.example.jpのIPアドレスを返します。
このようにDNSでは、問い合わせを行うためのサーバがルートサーバから下位サーバに対し反復的に名前を問い合わせることで※8、すべての名前空間に対する問い合わせに対応できるようになっています。
またDNSでは、同じ問い合わせを繰り返し行うことを防止するため、DNSサーバへの問い合わせによって得た結果をある時間記憶しておく(キャッシュする)仕組みが実装されている場合があります。キャッシュが有効な間に同じ内容の問い合わせがあった場合、サーバでは再度反復問い合わせをすることなく、自分が持っているキャッシュの内容を回答します。このため、問い合わせを行うためのサーバは「DNSキャッシュサーバ」とも呼ばれています。
DNSの今後
DNSは開発されてから現在までほぼ15年間、基本設計を変えることなくインターネット上の重要なプロトコルとして利用されてきました。その間にインターネットはめざましい成長をとげ、現在では社会的インフラの一つとして、なくてはならない存在となりました。このようなインターネットの成長を見えない部分から支えてきた技術の一つがDNSであるといえるでしょう。
インターネットの安定運用のためには、安定なDNSの運用が必須条件となります。このための管理体制や安定運用のための技術的な試みが、ICANN、IETFをはじめとする国際調整の場で積極的に議論されています。また今後、ENUM(Newsletter No.21のインターネット10分講座を参照)やDNSSEC※9、あるいは国際化ドメイン名(IDN) のような、DNSをとりまく新しい技術の開発により、インターネットにおけるDNSが果たす役割は今後ますます大きくなっています。
JPNICではドメイン名に関する情報センター業務の一環として、今後もICANN等における国際調整の状況をみなさんにお伝えするとともに、インターネットにおいてより安定したDNSの運用が行われるよう、各種団体への働きかけを継続して行っていきます。
参考RFC
- RFC810: DoD Internet host table specification. E.J. Feinler, K. Harrenstien, Z. Su, V. White. Mar-01-1982.
- RFC882: Domain names: Concepts and facilities. P.V. Mockapetris. Nov-01-1983.
- RFC883: Domain names: Implementation specification. P.V. Mockapetris. Nov-01-1983.
- RFC1034: Domain names - concepts and facilities. P.V. Mockapetris. Nov-01-1987.
- RFC1035: Domain names - implementation and specification. P.V. Mockapetris. Nov-01-1987.