DNS(Domain Name Service)とはIPアドレスをホスト(ドメイン)名に、ホスト名をIPアドレスに変換する名前解決メカニズムの総称のことです。つまり、DNSを利用するとIPアドレスをもとにホスト名を求めたり、ホスト名からIPアドレスを求めたりすることが可能になるのです。DNSが登場する前にはhostsと呼ばれるファイルによってコンピュータごとにアドレス管理が行われており、ローカルネットワークだけであればこれでも運用していくことができました。しかし、昨今のネットワークの肥大化に伴い、ユーザーのコンピュータそれぞれに膨大な名前解決情報を持たせ、接続する機器が増えるたびにそれを書き直していくことは気が遠くなるような作業となってしまいます。このため現在ではDNSという簡単に名前を解決できるシステムをサイトに設置してコンピュータの名前とIPアドレスの結びつきを一元的に管理する仕組みが採用されているのです。
ドメインネームとはインターネット上の住所に相当し、IPアドレス同様、世界で重複することのないたったひとつのものです。例えば日常は「http://www.yahoo.co.jp」とブラウザに入力するだけでYahoo!JapanのWebページを閲覧することができますが、実際は「http://211.14.13.66」のような数字の羅列を入力しなくてはなりません。しかし、それでは不便であると言うことで、人間にもわかりやすい形で表したものが「http://www.yahoo.co.jp」のような
FQDN(Fully
Qualified Domain Name)と呼ばれるものです。FQDNとは、「ホスト名+ドメイン名」をあわせた識別名称のことです。このように、ドメインネーム⇒IPアドレス、IPアドレス⇒ドメインネームへの変換を実現しているのがDNSサーバーで、ホスト名とIPアドレスの対応をアドレステーブルによって管理しているのです。なお、ホスト名からIPアドレスを求めることを「
正引き」、IPアドレスよりホスト名を求めることを「
逆引き」といいます(参考:「
NSLOOKUPコマンド」。
◎名前解決とDNSサーバー
■DNSサーバーの構成
DNSサーバーは、最上部に世界で約10台運用されているルートDNSサーバーがあり、その下に「jp」や「com」、「net」などのトップレベルドメインと呼ばれるDNSサーバーがあります。さらにその下には「co」や「ac」「ne」などの第2レベルドメインと呼ばれるDNSサーバーがあり、その下に第3レベルドメインである各組織のDNSサーバーがあります。よって特定のコンピュータから名前解決の要求が発生すると、まず、自社内のDNSサーバーに問い合わせを行い、自社内で名前解決ができないときは、自社内のDNSサーバーを介して、自動的に上位のDNSサーバーに問い合わせする仕組みが確立されています。ここでいう「上位のサーバー」は一般的には、
|
(A)ルートDNSサーバー |
|
|
(B)自社のネットワークが接続されている直属のプロバイダのDNSサーバー |
|
のいずれかが利用されます。
◎DNSツリー構造
DNSによる名前解決は以下の図のような構成になっています。例えば、「xxx.yyy.co.jp」の企業の問い合わせをする例を考えてみましょう。社内のDNSサーバーがわからなければ上位のDNSサーバーに問い合わせを行い、ルートDNSサーバーより「jpドメインですよ」と通知されます。社内のDNSサーバーはさらにjpドメインへと再び名前解決の要求を出し、jpドメインより「co.jpドメインですよ」と通知されます。以上のような名前解決を繰り返し、最終的にはxxx.yyy.co.jp内にあるDNSサーバーより社内にあるDNSサーバーへと名前解決が行われ、DNSクライアントは社内のDNSサーバーより「xxx.yyy.co.jp」のIPアドレスを求めることができるようになっているのです。つまり、どれだけの時間がかかろうとも、結果的には必ず、ホスト名⇔IPアドレスの変換が成立します。しかし、実際にこれらの作業は瞬時に完了してしまうために、これほどまでに複雑なプロセスを経て成り立っていることが利用者には全くわからないでしょう。
◎DNSによる名前解決の仕組み
尚、DNSサーバーはそれぞれのドメイン(組織)内に1つ以上設置することが義務付けられています。DNSサーバーには
プライマリDNSサーバー(管轄するドメインの第1次情報となるサーバー)と
セカンダリDNSサーバー(プライマリDNSサーバーのドメイン情報を複製したDNSサーバー)の2つのレベルがあり、セカンダリDNSサーバーについては、組織内外を問わずバックアップ用にいくつでも設置していいことになっています。インターネットに接続しているユーザーならば、大抵はプロバイダからDNSサーバーのIPアドレスを教えられるでしょう。あれは、ユーザー側のコンピュータで常に名前解決が行えるようにするためで、そのためにはプロバイダの(つまり、上位の)DNSサーバーを利用しなくてはならないからです。(なお、プロバイダや接続種別によってはDNSサーバーのIPアドレスを入力しなくても自動取得できる場合もあります)。