トップ > スキル : ネットワーク > プロトコル(DNS)

ネットワーク

DNSサーバの仕組み

さて、DNSについて概要を説明してきました。ここでは、もう少し補足した説明とDNSにおける疑問点を挙げることにします。

対応関係と逆引き

CNAMEレコードを利用して、1台のコンピュータに複数のドメイン名を割り当てる手法はよく使います。また、CNAMEレコードを使わなくても、Aレコードで指定することもできます。つまり、ドメイン名を変えて同じIPアドレスを登録すれば実現できます。

逆に1つのドメイン名に異なるIPアドレスを登録することも可能です。この場合、Aレコードを使って、ドメイン名はそのままにしてIPアドレスを変えて登録します。このやり方は、同じコンテンツを複数のWebサーバで提供するときや、DNSサーバを複数台用意するときなど、システムの冗長性を確保する目的で使われています。

DNSは、ドメイン名からIPアドレスを見つける仕組みだけでなく、その逆であるIPアドレスからドメイン名の名前解決の仕組みも備えています。これを「逆引き」と呼び、通常の名前解決は「正引き」と呼びます。

どちらも基本動作は同じですが、逆引きの仕組みのポイントは、IPアドレスをあたかもドメイン名であるかのように扱っていることです。具体的には、ルートドメインの下に「in-addr.arpa」という逆引き用のドメインを設け、ここにIPアドレスをマッピングさせています。マッピングの仕方は、IPアドレスの順序をひっくり返したもので、210.110.0.5というIPアドレスなら、5.0.110.210.in-addr.arpaというドメイン名として扱います。逆引きを利用する例は、アクセス制御があります。特定のドメインに所属している利用者だけに向けたサーバを立ち上げるようなときに用いられます。

DNSサーバの名前解決を見る

DNSサーバに登録されているゾーン情報を調べるツールには「NSLOOKUP」コマンドがあります。これを利用した例を下の図で参照してください。

ドメイン名に日本語を使う

これまでDNSの規定には、ドメイン名に使える文字の種類は、7ビットのASCIIコードだけとなっていました。しかし、2001年5月から日本語ドメイン名が使えるようになりました。では、どういう形で扱えるようになったかを見ていきます。

基本的な仕組みは、まず日本語ドメイン名を1対1でASCII文字列に変換するための規則を作ります。そして、アプリケーションが内部でASCII文字列への変換処理を実行し、変換後のASCII文字列をリゾルバに渡すようにします。このようにすれば、これまでのDNSの仕組みに手を加える必要はありません。DNSサーバには、日本語ドメイン名を変換した後のASCII文字列をゾーン情報として登録するだけです。

ただ、日本語ドメイン名からASCII文字列へ変換するには、Webブラウザなどのアプリケーション上で国際的な共通文字体系となるUnicodeに変換し、これにさらに処理を加えて最終的にASCII文字列に変換させます。標準化は2001年で行われて、現在では日本語ドメイン名の取得も可能となっています。しかし、古いパソコンやWebブラウザなどでは、日本語ドメインの仕様にまだ準拠していないものもあります。

1台のWebサーバに複数のドメイン名を割り当てる

複数のドメイン名を取得し、それぞれ別のWebページを見せる手法が多くなってきています。これは、Webサーバの運用するコストを削減できるからです。どのようにDNSサーバの設定するのかを見ていくと、それぞれのドメイン名を管理するDNSサーバのゾーン・ファイルの中のAレコードでWebサーバのドメイン名に同じIPアドレスを対応付けて登録します。これだけで、複数のドメイン名からのアクセスで、同じWebページサーバを指定できます。もし、ドメイン名ごとに違うページを見せるのであれば、仮想ホストと呼ばれる機能を使います。

仮想ホストは、WebブラウザがWebサーバに送るHTTP要求メッセージを見て、どのドメイン名でアクセスしてきたのかを判断し、それに応じたWeb ページで応答します。これはHTTP要求メッセージの中には、必ず入力されたURLが含まれていますので、これからドメイン名を見つけ、どのドメイン名に対してアクセスしたかが判断できるからです。という事から、もしIPアドレスでアクセスすると、IPアドレスにはドメイン名が含まれていないので、目的の Webページが見れないことになります。

【DNS:DNSサーバの仕組み】