Domain Name System
表示
(DNSから転送)
TCP/IP群 |
---|
アプリケーション層 |
|
トランスポート層 |
カテゴリ |
インターネット層 |
カテゴリ |
リンク層 |
カテゴリ |
Domain Name System︵ドメイン・ネーム・システム、DNS︶とは、コンピュータネットワーク上のホスト名や電子メールのアドレスに使われるドメイン名と、IPアドレスとの対応づけ︵正引き、逆引き︶を管理するために使用されているシステムである。後述の通りインターネットのシステムとして開発されているが、インターネットに限定したシステムではなく、それ以外のネットワークでも応用できる。
1983年に、インターネットを使った階層的な分散型データベースシステムとして、Information Sciences Institute︵ISI︶のポール・モカペトリスとジョン・ポステルにより開発された[1]。
インターネットに接続されているすべてのコンピュータは、固有のIPアドレスを持っている。インターネット上のコンピュータにアクセスするためには、そのコンピュータのIPアドレスを知る必要がある。しかし、IPアドレスは0から255までの数値を4つ組み合わせ︵IPv4の場合︶で表現されるため、人間には記憶しにくい。そのため、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に格納されている情報を﹁レコード﹂︵DNSレコード、リソースレコード︶と呼ぶ。レコードは格納する情報によって種類が分類分けされている。レコードの種類は﹁DNSレコードタイプの一覧﹂を参照。
ただし現実の電話帳との違いは、この情報がインターネット上のいくつものコンピュータ︵DNSサーバ︶に分散して格納されているところにある。インターネットには莫大な数のコンピュータが接続されており、これらのホスト名とIPアドレスは日々更新されつづけているため、インターネット上のすべてのホスト名を一台のコンピュータで集中管理することは現実的ではなかった。そのためインターネット上のコンピュータをある単位で区分けして、それぞれのグループがもつデータをグループごとのコンピュータに別々に管理させるようにした。これが DNS の基本的なアイデアである。このグループをドメインと呼ぶ。各グループには英数字とハイフン︵ -
︶からなるラベル︵ドメイン名︶がつけられており、異なるドメインの情報は異なるコンピュータに格納される。
今でこそDNSはホスト名とIPアドレスの対応づけに使用されるのがほとんどだが、もともとは電子メールの配送方法やコンピュータの機種名を登録するなどといった用途も考えられていた。
ドメイン名は階層的な構造をもっている。たとえばja.wikipe
dia.org
というホスト名はja
、wikipedia
、org
という3つの階層に区切ることができる。ja.wikipedia.or
g
というホストはwikipedia.org
ドメインに所属しており、このドメインはさらにorg
ドメインに所属している。ドメイン名は一個の巨大な木構造をなしており、この構造をドメイン名前空間︵Domain Name Space︶と呼ぶ。ドメイン名前空間は頂点に.
︵ルート︶ノードを持ち、そこから.com
、.org
、.jp
などの各トップレベルドメイン︵TLD︶が分かれている。
各ドメインはゾーンと呼ばれる管轄に分けて管理されている。ゾーンはドメイン名前空間上のある一部分に相当し、それぞれのゾーンは独立したDNSコンテンツサーバと呼ばれるコンピュータによって管理されている︵ドメイン名の委譲︶。DNSコンテンツサーバは、管理しているゾーンのホスト名とIPアドレスの組を記述したデータベースを持っており、クライアントマシン︵あるいはDNSキャッシュサーバ︶からの要求に応じて、あるホスト名に対応するIPアドレスを返す。DNSクライアントはルートサーバからいくつものDNSサーバをたどっていき、最終的なホスト名のIPアドレスを得る︵DNSの再帰検索︶。
DNSサーバの役割[編集]
具体的な例として、
ja.wikipedia.org
というホスト名のIPアドレスを検索することを考えると、再帰検索は、トップレベルドメインをルートサーバに問い合わせることからはじまる。ja.wik
ipedia.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.or
g
ドメインのネームサーバのIPアドレスを問い合わせる。するとそのネームサーバのホスト名はdns34.register.com
︵216.
21.226.87
︶であることがわかる。
最後に、このネームサーバにja.wikipedia.org
のIPアドレスを問い合わせる。するとこのサーバは最終的な答130.94.
122.197
を返す。こうして目的とするホスト名のIPアドレスを検索できる。
権威サーバとキャッシュサーバ[編集]
DNSはデータを分散して保持する多数の権威DNSサーバと、キャッシュサーバからなる。authoritativeネームサーバ︵﹁権威DNSサーバ﹂[2]、﹁権威あるDNS﹂[3]とも︶は自らが担当する一定の範囲のドメイン名の名前解決を内部のデータベースを使って行い、その結果のIPアドレスを送り返す[2]。キャッシュDNSサーバは権威DNSサーバの回答結果を一定期間保存して代わりに回答する機能を持ち、権威DNSサーバの負荷を分散する[4]。DNS over HTTPS (DoH) / DNS over TLS (DoT)[編集]
詳細は「DNS over HTTPS」および「DNS over TLS」を参照
DNS over HTTPS (DoH)は、リゾルバとのDNSクエリのやり取りをHTTPS上で行う[注 1]ことで、セキュリティとプライバシーを向上させる。これは RFC 8484 で定義され、MIMEタイプとして
application/dns-messag
e
を使う。
DNS over TLS(DoT)は、TLSプロトコルを介してリゾルバとのDNSクエリをやり取りする。効果はDoHと同様である。
存在意義[編集]
DNSは、ほとんどのインターネット利用者が普段意識していない透過的なシステムだが、その役割は非常に重要である。あるドメインを管理しているDNSサーバが停止してしまうと、そのドメイン内のホストを示すURLやメールアドレスの名前解決などができなくなり、ネットワークが利用者とつながっていてもそのドメイン内のサーバ類には事実上アクセスできなくなる。そのため、重要なDNSサーバは二重化されていることが多い。 またDNS偽装を行うと、情報を容易に盗聴・偽装することができてしまう。情報レコードの不正な書き換えを防止するため、コンテンツサーバのマスタ︵プライマリ︶はインターネット︵外部︶から隠匿し、インターネットには特定のマスタのコピー︵ゾーン転送︶を受け取るスレーブ︵セカンダリ︶を公開するなどの構成を組んで、防衛手段を講じる。関連語句[編集]
- DNSサーバ
- Dynamic Domain Name System(ダイナミックDNS、DDNS)
- リゾルバ
- djbdns - DNSサーバ用ソフトウェア。
- BIND
- unbound - オープンソースのDNSキャッシュサーバ
- DNSルートゾーン
- DNSゾーン転送
- DNSレコードタイプの一覧
- DNSBL(DNSブラックリスト)
- DNSラウンドロビン
- EDNS0 (extension mechanisms for DNS version 0)
- ドメイン名
- トップレベルドメイン (TLD)
- 国際化ドメイン名
- Fully Qualified Domain Name(FQDN)
- 地域インターネットレジストリ
- TCP/IP
- 名前解決
- ディレクトリ・サービス
- DNS偽装
- 誕生日攻撃
- DNS-Pinning (DNSリバインディング (DNS rebinding) )
- DNS Security Extensions (DNSSEC)
- エニーキャスト
関連プロトコル[編集]
- STD0013
- RFC 8310: Usage Profiles for DNS over TLS and DNS over DTLS - TLS(TCPを使用)およびDTLS(UDPを使用)上でDNSメッセージのやり取りを行うプロトコルの規定。セキュリティやプライバシー保護の向上を意図している。
- RFC 8484: DNS Queries over HTTPS - HTTPS上でDNSメッセージのやり取りを行うプロトコルの規定。使用するHTTPのバージョンとしてはHTTP/2が推奨されている。こちらも、セキュリティやプライバシー保護の向上を意図している。
- マルチキャストDNS - mDNS とも表現される
- LLMNR - Link Local Multicast Name Resolution
脚注[編集]
注釈[編集]
- ^ つまり、ポート53を使わずにポート443を使う。
出典[編集]
(一)^ “ISI Marks 20th Anniversary of Domain Name System”. Information Sciences Institute (2003年6月26日). 2022年11月6日閲覧。
(二)^ ab“インターネット用語1分解説~権威DNSサーバ(authoritative name server)とは~”. JPNIC (2012年9月18日). 2022年11月6日閲覧。
(三)^ “第7回 DNSの仕組みについて”. Linux技術者認定機関 LPI-Japan [エルピーアイジャパン]. 2022年11月6日閲覧。
(四)^ “重要技術 DNSの仕組み”. 国民のための情報セキュリティサイト. 2022年11月6日閲覧。