Domain Name System
テンプレート:Redirect テンプレート:Infobox Domain Name System(ドメイン ネーム システム、DNS)はインターネットを使った階層的な分散型データベースシステムである。1983年に情報科学研究所 (ISI) のポール・モカペトリスとジョン・ポステルにより開発された。
現在では主にインターネット上のホスト名や電子メールに使われるドメイン名と、IPアドレスとの対応づけを管理するために使用されている。
概要
インターネットに接続されているすべてのコンピュータは、固有のIPアドレスを持っている。たとえば、ウィキペディア日本語版のwebサーバの持つIPアドレスは2012年10月現在では "208.80.154.225" である。インターネット上のどのコンピュータにアクセスする際にも最終的にはそのコンピュータの IPアドレスを知る必要がある。しかし、IPアドレスは3桁までの4つの数値の組み合わせ(IPv4の場合)で表現され、最大12桁の数字の羅列となり覚えにくい。このため、IPアドレスを人間が覚えやすい名前で扱うことができるような機構が考案された。これがインターネットドメイン名である。このドメイン名からIPアドレスを引き出す機能が、DNSの代表的な機能である。このほか、ドメイン名に関連するメールサーバ情報なども取り扱っている。
動作
DNSは、ホスト名(例えば"ja.wikipedia.org")の入力があるとDNSサーバ と呼ばれるコンピュータを参照し、そのホストのもつ IP アドレス(例えば"130.94.122.197")を検索するシステムである。例えるなら、DNSは氏名から電話番号を自動で調べる電話帳のようなものである。
たとえば ウェブブラウザ に URI を入力してネットワークにアクセスする際、ブラウザはURIを解析して、アクセスすべきWebサーバのホスト名を取り出し、後述のリゾルバAPIに渡す。リゾルバAPI(通常はOS内部での働き)は、Webサーバのホスト名をDNSサーバに問い合わせて返ってきたIPアドレスにより、ホスト名をIPアドレスに変換してブラウザに返す。ブラウザは、得られたIPアドレスを使用して、Webサーバとの通信を開始する。このようにしてブラウザはインターネットにアクセスする。
ホスト名から、そのホストにアクセスするためのIPアドレスを得ることを、(ホスト名の)「解決」 (resolve) と呼び、これを行うためのクライアント側のしくみを「リゾルバ」(resolver)という。
ただし現実の電話帳との違いは、この情報がインターネット上のいくつものコンピュータ(DNSサーバ)に分散して格納されているところにある。 インターネットには莫大な数のコンピュータが接続されており、これらのホスト名と IPアドレスは日々更新されつづけているため、インターネット上のすべてのホスト名を一台のコンピュータで集中管理することは現実的ではなかった。 そのためインターネット上のコンピュータをある単位で区分けして、それぞれのグループがもつデータをグループごとのコンピュータに別々に管理させるようにした。これが DNS の基本的なアイデアである。このグループをドメインと呼ぶ。各グループには英数字とハイフン ( - ) からなるラベル(ドメイン名)がつけられており、異なるドメインの情報は異なるコンピュータに格納される。
今でこそ DNS はホスト名とIPアドレスの対応づけに使用されるのがほとんどだが、もともとは電子メールの配送方法やコンピュータの機種名を登録するなどといった用途も考えられていた。
ドメイン名は階層的な構造をもっている。たとえば"ja.wikipedia.org" というホスト名は"ja"、 "wikipedia"、 "org"という 3つの階層に区切ることができる。ja.wikipedia.org というホストは"wikipedia.org" ドメインに所属しており、このドメインはさらに "org" ドメインに所属している、といった具合である。ドメイン名は一個の巨大な木構造をなしているといっていい。この構造をドメイン名前空間 (Domain Name Space) と呼ぶ。ドメイン名前空間は頂点に "."(root) ノードをもち、そこから .com, .org, .jp などの各トップレベルドメイン (TLD) が分かれている。
各ドメインはゾーンと呼ばれる管轄に分けて管理されている。ゾーンはドメイン名前空間上のある一部分に相当し、それぞれのゾーンは独立したDNSコンテンツサーバと呼ばれるコンピュータによって管理されている(ドメイン名の委譲)。DNSコンテンツサーバは、管理しているゾーンのホスト名とIPアドレスの組を記述したデータベースをもっており、クライアントマシン(あるいはDNSキャッシュサーバ)からの要求に応じて、あるホスト名に対応するIPアドレスを返す。DNSクライアントはルートサーバからいくつものDNSサーバをたどっていき、最終的なホスト名のIPアドレスを得る(DNSの再帰検索)。
DNSサーバの役割
テンプレート:See also 具体的な例として、ja.wikipedia.org というホスト名の IPアドレスを検索することを考えると、再帰検索は、トップレベルドメインをルートサーバに問い合わせることからはじまる。ja.wikipedia.org というホスト名は wikipedia.org ドメインに属し、またwikipedia.orgドメインはorgドメインに属するため、クライアントは最初にorgドメインのDNSサーバ(ネームサーバ)のIPアドレスを得なければならない。
まず、クライアントは適当なルートサーバをひとつ選ぶ。ここでは A.ROOT-SERVERS.NET (198.41.0.4) としよう。現在 ルートサーバ に登録されている org ドメインのネームサーバは 9つあり、そのうちのひとつはa7.nstld.com (192.5.6.36) である。
つぎにクライアントは、このネームサーバに wikipedia.org ドメインのネームサーバの IPアドレスを問い合わせる。するとそのネームサーバのホスト名は dns34.register.com (216.21.226.87) であることがわかる。
最後に、このネームサーバにja.wikipedia.orgのIPアドレスを問い合わせる。するとこのサーバは最終的な答130.94.122.197を返す。こうして目的とするホスト名のIPアドレスを検索できる。
存在意義
DNSは、ほとんどのインターネット利用者が普段意識していない透過的なシステムだが、その役割は非常に重要である。あるドメインを管理しているDNSサーバが停止してしまうと、そのドメイン内のホストを示す URL やメールアドレス の名前解決などができなくなり、ネットワークが利用者とつながっていてもそのドメイン内のサーバ類には事実上アクセスできなくなる。そのため、重要なDNSサーバは二重化されていることが多い。
またDNS偽装を行うと、情報を容易に盗聴・偽装することができてしまう。情報レコードの不正な書き換えを防止するため、コンテンツサーバのマスタ(プライマリ)はインターネット(外部)から隠匿し、インターネットには特定のマスタのコピー(ゾーン転送)を受け取るスレーブ(セカンダリ)を公開するなどの構成を組んで、防衛手段を講じる。
関連語句
- Dynamic Domain Name System(ダイナミックDNS、DDNS)
- TCP/IP
- トップレベルドメイン (TLD)
- リゾルバ
- 国際化ドメイン名
- ゾーン
- Glue Record
- 正引き
- 逆引き
- BIND
- djbdns
- unbound
- FQDN
- DNSラウンドロビン
- DNS偽装
- MXレコード
- テンプレート:仮リンク
- 誕生日攻撃
- DNS-Pinning (DNSリバインディングテンプレート:Enlink)
- レジストリ
- レジストラ
- ディレクトリ・サービス
- 名前解決
- DNS Security Extensions (DNSSEC)
- DNSゾーン転送
- エニーキャスト
- テンプレート:仮リンク (extension mechanisms for DNS version 0)
関連プロトコル
- STD0013
- RFC 1034 : DOMAIN NAMES - CONCEPTS AND FACILITIES
- RFC 1035 : DOMAIN NAMES - IMPLEMENTATION AND SPECIFICATION
- Web Based DNS Lookup & DNS Header Analyser
- マルチキャストDNS - mDNS とも表現される
- LLMNR - Link Local Multicast Name Resolution