DNS サーバ djbdns のインストールと設定 - DNS とは

DNS サーバである djbdns のインストールと設定をまとめてみました。

ここは、DNS システムとはどういったものかというお話です。


1-1: DNS とは

ドメイン名と IP アドレス

インターネットの世界では、ちょうど現実世界での住所に当たるものとして IP アドレスというものがあります。これは 0 〜 255 までの数字 (1バイト) を4つ使って、それぞれをピリオドで区切って表現します。例を挙げるならば 192.168.0.1 とか 10.0.0.1 といった感じです。

インターネットに公開されているサーバはみな、事実上、それぞれが違った IP アドレスを持っていて、そのおかげで目的のコンピュータへたどり着くことができるようになっています。

たどり着く先のコンピュータがどんな IP アドレスを持っているかは、ping というコマンドで見ることができます。Windows や Linux をもっている方はコンソール/コマンドプロンプトなどから、ping www.ez-net.jp というような感じで命令をだすと、とりあえず先ほど例に挙げたような IP アドレスを見ることができると思います。

 

しかしながら普段、インターネットを使用していても特に IP アドレスの存在はそれほど気になりません。人によっては IP アドレスなんてものがあることを知らないかもしれません。

けれどそれでも誰もが何の問題もなくインターネットにかかわることができます。

 

ここに DNS というシステムが大きくかかわってきます。

DNS というのは、Domain Name System の略で、簡単に言うと、ドメイン名と IP アドレスを関連付ける役割を担います。

最近ではもはや 「独自ドメイン」 とかがはやっているようなので、既に耳にしたことがあるかもしれませんけど、Web サイトへアクセスするときにはその大部分が http://www.ez-net.jp/ というようにドメイン名をつかってアクセスします。

この http://www.ez-net.jp/ の、www.ez-net.jp という部分を、「ドメイン名」 といいます。

 

先ほども述べたように、インターネット上のパソコンを判別するのには IP アドレスを使用します。Web ブラウザは、アドレス (URL) に入力された情報からドメイン名を取り出して、そのドメイン名に割り当てられている IP アドレスを調べます。

そして対応した IP アドレスがわかって初めて、インターネット上の目的のサーバへ接続して、目的のページをダウンロードするというような流れになります。

 

ここで IP アドレスを調べるときに、DNS サーバが利用されます。ちなみにこの、ドメイン名から IP アドレスを取得する行為のことを、「名前解決」 といいます。

 

名前解決の流れ

まず、ドメイン名を IP アドレスに変換したがっているクライアントがあります。

そのクライアントは、名前解決に使用する DNS として登録されている DNS サーバへ、そのドメイン名を渡します。

受け取った DNS サーバは、まず自分自身が持っている情報からその IP アドレスを見つけようとします。ここで自分が持っている情報のなかで見つけることができたら、その IP をクライアントに返しておしまいです。

 

見つからなかったら再帰検索を行います。

まずはルートサーバと呼ばれる DNS サーバに問い合わせます。そこで IP アドレスが見つかればそれをクライアントに返します。

が、大体の場合は、別の DNS サーバに問い合わせるように指示されます。そしてその DNS サーバへ問い合わせ。そこでまた DNS サーバを紹介されたら、その DNS サーバへ…。というようにやっていって、最終的に IP アドレスを答えられる DNS サーバへたどり着いた時点で、名前解決は完了です。

 

ドメイン名はたくさんありますので、たくさんの DNS サーバで分散管理しています。なので、必要に応じて適切な DNS サーバを順々にたどる必要があるわけです。

日本では、JPNIC が元となる大きな DNS サーバです。

たとえば WWW.EZ-NET.JP を検索する場合は、まずこの JPNIC へ問い合わせることになります。するとドメイン取得の際に、EZ-NET.JP ドメインを担当する DNS サーバが登録されているので、その DNS サーバへ問い合わせるように指示されるといった感じです。

 

キャッシュ

検索のたびに DNS サーバを巡っていては効率が悪いため、キャッシュという仕組みが用意されています。

これは一度入手した情報を一定期間保存しておくことで、次にその情報が必要になったときも、わざわざ別の DNS に問い合わせなくてもすむようにするものです。

情報を保存する期間は、その情報が登録されている DNS サーバによります。

 

このような仕組みによって、検索効率が格段によくなりますが、逆にこれが問題になる場合もあります。

たとえば、とある DNS サーバで情報を更新したとします。当然、この DNS サーバへ問い合わせがあった場合には新しい情報を返すのですが、中には古い情報のままのキャッシュを使用してしまう DNS サーバも存在します。

これは別に悪さをしているのではなく、効率よく名前解決を行うためにキャッシュを使っているだけです。ただ、キャッシュの有効期限が切れるまでは新しい情報を再収集しないので、結果として間違った処理を行ってしまいます。

 

これは自分自身の DNS サーバの有効期限の設定の影響が大きいので、いくらかは予測が着ますが、このような都合から、DNS の世界では、変更した内容が、全ての DNS サーバへ行き届くには少々時間がかかります。

 

ドメイン名の利用のされ方

インターネットは、コンピュータを IP アドレスによって判別するため、ある意味、ドメイン名を知らなくても IP アドレスさえ知っていれば目的のコンピュータにたどり着くことができます。

さらにドメイン名の場合には一度 DNS サーバに問い合わせて IP アドレスを取得しなくてはならないのに対して、IP アドレスならばその必要がないので待たされる時間も短くなります。

 

けれど、”ドメイン名は知らないけど IP アドレスは知っている”、という状況はあるのでしょうか…。まったくないとはいえないですけど、限りなく少ないのではないかと思います。

その差はなんといっても覚えやすさでしょう。

人にとっては無意味な数字の羅列である IP アドレスを覚えるよりも、意味がこもった名前 (文字) の方がすんなりと頭に入ってきます。

近年、インターネットがここまで一般に普及した背景には、きっとこの DNS という仕組みが大きく貢献しているのだと思います。それだけでもこの DNS という仕組みは大きな発明といってもいいでしょう。

 

けれどこう、ドメイン名はコンピュータのアドレスを覚えやすくするというだけにはとどまりません。

たとえば、目的の Web サイトが 192.168.0.1 という IP アドレスを持っていたとします。だからといって http://192.168.0.1/ と入力して、必ずしもちゃんと目的の Web サイトが見られるかといえば決してそうとはいえません。

たしかに、http://192.168.0.1/ と入力した時点で、基本的にはその Web サイトへ接続することができてはいるのですけど。

 

たとえば、次のような場合を考えてみてください。

DNS サーバによって、たとえば www1.ez-net.jp が 192.168.0.1 に、また同様に www2.ez-net.jp も 192.168.0.1 に割り当てられているとします。

このとき、http://www1.ez-net.jp/ と入力した場合と http://www2.ez-net.jp/ と入力した場合について考えてみましょう。

このとき、名前解決を行った時点でどちらも http://192.168.0.1/ と入力したのと同じことになります。ということはたどり着くコンピュータが同一なので、基本的に同じ Web サイトが表示されることになります。

 

これをうまく利用したのが 「仮想ホスト (Virtual Host)」 という仕組みです。

本来は名前解決を行った時点でドメイン名は使用しなくて済むのですけど、あえて入力されたドメイン名の情報も相手 ( ここでは 192.168.0.1 ) に渡します。そうすると相手側は、入力されたドメイン名に応じて、違うサイトを見せるということが可能になります。

もちろんこれを行うには、お互いでそのドメイン名を伝える仕組みを備える必要がありますが、Web に限っていえばもはや、ほぼすべてのブラウザやサーバがその機能を備えています。

この仕組みの利点はブラウザを使ってみる側にはあまりないのですけど、サーバを運用する側にとっては、1台のコンピュータで複数のサイトを運用することができるのでかなり魅力的な仕組みです。

 

目次