DNS って何の役に立つの?

あまり人の目に触れることのない DNS ですが、単に hosts ファイルの代わりというだけではありません。まず、メールシステムとの関連についてご紹介しましょう。

インターネットにおける標準のメールシステムは SMTP(Simple Mail Transfer Protocol) です。SMTP においては、メールアドレスの形式は、

ユーザ名@ホスト名(またはドメイン名)

であることはみなさんご承知だと思います。ドメイン名というのがよくわからなくても、一度でもインターネット上の誰かにメールを出したことがあれば、「hotta@net-newbie.com」みたいな呪文をどこかで入力したことがあるんじゃないでしょうか。

ここで言葉の定義ですが、「ホスト名」と言うと、ネットワークにつながっているコンピュータのうちの 1 つを表し、ドメイン名というと、ホストが 1 つ以上(通常は複数)集まったある組織のことだと思っていただければよいでしょう。ホスト名とドメイン名の決定的な違いは、前者はある IP アドレスと対になっていますが、後者はホストの集まりなので IP アドレスを一意に特定できない、ということがあげられます。

(そろそろ識者の方々に突っ込まれそうな予感が……(^^;)

たとえばあなたの部屋にパソコンが 2 台あって、それで家庭内乱^H^H LAN を構築しているとしましょう。それらが他にどこともつながっていなければ、そのネットワークの世界においてはただ 2 台のノードしか存在しないので、それらにどんな名前(ホスト名、IP アドレスの別名)をつけようとあなたの勝手です。1 台からもう 1 台の方にメールを送る(こんな奴いないとは思いますが)場合も、「daresore@hogehoge」くらいで十分届くはずです。

また、これらの PC には Linux が入っていると勝手に仮定しますが、Linux(UNIX)システムは基本的にマルチユーザなので、1 台の PC を複数のユーザが使っている場合もあります。同じ PC を使っているあなたの妹にメールを送る(こんな奴もっといないとは思いますが)場合は、メールサーバの設定にもよりますが、通常「imoto」というユーザ名だけでメールが届きます。これは、ホスト名部分('@'より右側)が指定されていなければ、メールサーバは、相手側マシンは自ホスト(localhost)であると仮定するからです。

では次に、あなたは気合いを入れてドメインを取得し、(ちょっと考えづらくはありますが(^^;)専用線接続でめでたくインターネットとつながったとします。もちろん DNS と Sendmail(SMTP メールサーバの代表的なもの)も立ち上げました。これで一挙に世界中の人とメールのやりとりができるようになりました。さっそく foo さんにメールを出そうと思いますが、単に「foo」宛だと、メールサーバは自ホスト内の「foo」というユーザにメールを出そうとしてしまいます。少なくともあなたは、foo さんがどのドメイン配下にいるのかを知る必要があります。これを平たく言えば、何という会社/学校/組織の LAN につながっているのか、もしくは何というプロバイダのアカウントを持っているのかということです。

ここで、実際のアドレス hotta@net-newbie.com について ちょっと考えてみましょう。 '@' の左側にある 'hotta' はユーザ名であることはわかりますね。 では、'net-newbie.com' とはいったい何でしょう?

ここであなたがご使用中のメーラ(メール送受信クライアント・ソフトウェア)の設定を確認していただきたいのですが、その中に「SMTP サーバ名または IP アドレス」とか何とかいうのがあると思います。メーラは宛先のメールアドレスにかかわらず、無条件にその「SMTP サーバ」なるものにメールを送って、あとは知らん顔をしています。このことを、技術的には「SMTP(メール)サーバに配送を依頼する」といいます。宛先アドレスを解析して、しかるべき先にそのメールを届けるのは SMTP サーバ(MTA -- Mail Transfer Agent ともいう)の役割です。

結論から言えば、'net-newbie.com' はドメイン(ホストの集まり)であり、 ホスト名ではありません。だから 'hotta' というユーザは 'net-newbie.com' ドメインに属するある特定のホストにあるユーザ名だということは 分かっているのですが、このままではそのホストが特定できないので 送ることができません。どうすればそのホスト(送信先メールサーバ名)が 特定できるのでしょうか?

ここでやっと DNS の登場です。DNS の登録情報の 1 つに MX(Mail Exchanger) レコードというものがありますが、これは、よそ(実は世界中のどこかにあるメールサーバ)からの、

その「ドメイン」に所属するユーザに対してメールを
送りたい場合、何という「ホスト」に送ればよいか

という問い合わせに対して、

AA.BB.CC.DD という「ホスト」に送ってね。
そのホストの IP アドレスはこれこれですよ。

という答えを返してくれる機能です。これにより、送信側メールサーバは、宛先のアドレスから求められた相手側メールサーバ名を特定し、初めて相手側にメールを送る、という動作を行います。DNS がないと、メール 1 つ送れないということがお分かりいただけたと思います。