インターネット上にあるサーバやサービスの「名前」とIPアドレスとの対応を管理することで、インターネットを支えている「DNS(Domain Name System)」。まずは、その役割や構造といった基礎から説明する。
本入門連載では、システム管理者やシステムエンジニアの方々を主な対象として、IT業界でよく使われる技術や概念、サービスなどの解説をコンパクトにまとめておく。
「DNS(Domain Name System)」とは、簡単に言うと、コンピュータ名やドメイン名などの名前を表す文字列とIPアドレスの対応を管理したり、検索したりする階層構造のサービスである。
例えば「http://www.example.jp/」のようなアドレスをWebブラウザのアドレスバーに入力すると、このWebサイトが開かれる。だがTCP/IPプロトコルの視点から見ると「www.example.jp」という文字列のままでは通信はできない。TCP/IPは名前ではなく、IPアドレスを使って通信相手を識別するプロトコルだからだ。
そのため名前で指定された場合は、内部ではいったんIPアドレスに変換してから、相手のWebサーバにTCPで接続する。このアドレス変換のことを「名前解決(Name Resolution)」と言う。
上の例では、www.example.jpという名前が10.20.2.101というIPアドレスに対応していたが、この対応関係を管理するのがDNSの役目である。DNSのサービスを実際に担当するシステムはDNSサーバと呼ばれる。
DNSサーバには、大きく分けて2つの機能がある。
コンテンツサーバは、
といった情報を外部に対して提供する。ドメイン名は階層的に構築されているため、(基本的には)そのドメインごとにそれぞれ担当するコンテンツサーバが存在し、それらがツリー状につながっていることになる。
ドメインを取得したユーザーは、そのドメインの情報を外部へ向けて公開するために、DNSのコンテンツサーバを用意する必要がある。
以下に、あるDNSサーバで提供されているドメインの情報の例を示しておく(詳細は次回解説)。なおnslookupはDNSサーバに直接問い合わせ要求などを送信するコマンドである。
※Windows OS上での実行例。Linuxなどではもっと高機能なDNS関連コマンドが用意されているが、標準のWindows OSにはnslookupしかないのでこれを使う
C:\>nslookup -type=all example.jp ……example.jpドメインに関する情報の取得
サーバー: localhost ……問い合わせ先のDNSサーバ
Address: ::1
example.jp nameserver = example-dc1.example.jp
example.jp
primary name server = example-dc1.example.jp ……このドメインを担当するDNSサーバ名
responsible mail addr = hostmaster.example.jp ……このドメインの担当者(のメールアドレス)
serial = 1706146022
refresh = 900 (15 mins) ……このドメインデータの寿命など
retry = 600 (10 mins)
expire = 86400 (1 day)
default TTL = 3600 (1 hour)
example.jp MX preference = 10, mail exchanger = example-dc1.example.jp ……このドメインのメールサーバ名
example-dc1.example.jp internet address = 10.20.1.101 ……DNS/メールサーバのIPアドレス
C:\>
DNSサーバのもう1つの役割としてリゾルバ機能がある(「キャッシュDNSサーバ」などと呼ばれることもある)。
DNSによる名前解決は実は簡単な作業ではない。ドメインごとにコンテンツサーバが分かれているため、名前解決するためには、各ドメインのDNSサーバに順番に問い合わせていく必要があるからだ。
例えばwww.example.jpという名前を解決する場合、最初はルート(トップ)のDNSサーバにjpドメインの情報を問い合わせ、次にjpドメインのDNSサーバにexampleドメインの情報を問い合わせ、……、というふうに、ルートから順にたどっていく必要がある(詳細は第3回で解説)。
この処理はあまり軽くないし、各ユーザーが独自に行うのでは効率が悪過ぎる(重複した、無駄なネットワークトラフィックが多く発生する)。そこで通常は名前解決専用のサーバを用意して処理を担当させる。そして一般のユーザーは、名前解決を全てそのDNSサーバに委譲する、という運用を行う。これならばクライアント側の処理が軽くなるし、一度解決した名前をキャッシュしておけば、他のクライアントに対しても高速に結果を返すことができる。
DNSサーバに対する名前解決要求としては、次の2種類がある。
一般的には正引きの方がよく使われるが、逆引きは通信相手を特定する場合などに使われる。例えばWebサーバのアクセスログを見ると、どのIPアドレスからアクセスされたかということは分かる。だが、そのIPアドレスが実際にはどのドメインからのものかを知るには、IPアドレスから逆引きする必要がある。
以下に正引きと逆引きの例を示しておく。
C:\>nslookup www.example.jp ……名前からIPアドレスを求める例(正引き)
サーバー: localhost ……問い合わせ先のDNSサーバ(ローカルホスト)
Address: ::1
名前: www.example.jp
Address: 10.20.2.101 ……結果のIPアドレス
C:\>nslookup 10.20.2.101 ……IPアドレスから名前を求める例(逆引き)
サーバー: localhost
Address: ::1
名前: www.example.jp ……結果のドメイン名(FQDN)
Address: 10.20.2.101
C:\>
インターネット上の組織やサービスなどを一意に識別するために作られた階層的な名前空間のことを「ドメイン名(Domain Name)」と言う。ドメイン名は階層的に構築されており、インターネットの世界では、世界的に一意になるように(異なる組織が重複して同じ名前を使用しないように)、厳密な管理の下で割り当てられている。
このドメインツリーの最上部にあるのがルートゾーン(DNSの表記では、単なる「 . 」だけでルートを表すことがある)である。
ルートゾーンの情報は、ルートゾーンを担当するDNSサーバ(ルートサーバ)に保存されている。
ルートドメインの直下にあるドメイン、例えば.comや.jp、.infoなどは「TLD(Top Level Domain)」と呼ばれる。ルートサーバには、このTLDの情報が登録されている。
TLDには、汎用的なgTLD(.comや.org、.info、.tokyoなど)の他に、国別コードを使ったccTLD(.jpや.usなど)、iTLD(.int)などがある。
TLDの1つ下は「SLD(Second Level Domain)」という。例えばwww.example.jpなら、.jpがTLD、exampleがSLDになる。SLDの情報は、その1つ上にあるTLDのドメインのDNSに登録されている。
このように、各ドメインの情報(権威情報、Authority)は、(基本的には)その1つ上のドメインのDNSサーバにのみ登録されている。そのため、あるドメインの権威情報を取得するには、その上位のDNSサーバからたどる必要がある。
このようにDNSではドメインごとに独立したDNSサーバ(コンテンツサーバ)を利用することにより、世界レベルでの分散型の名前管理データベースを実現している。
TCP/IPネットワークにおいて、ホスト名からIPアドレスを求める機能としてはDNS以外にも幾つかある(あった)。だが現在ではほぼDNS(と、場合によってはhostsファイル)に集約されている。主なものとしては次のようなものがある。
機能 | 概要 |
---|---|
hostsファイル | hostsという名前のテキストファイルに、IPアドレスと名前文字列の対応を書き込んでおいて、それを参照するという名前解決方法。UNIX/Linuxなら/etc/hostsファイル、Windows OSならC:\Windows\System32\Drivers\etc\hostsファイルが該当する。ネットワークを参照する必要がないので独立した環境でも利用できるが、内容を更新するのは非常に面倒である(特に組織内で統一したhostsファイルを利用する場合) |
IEN 116ネームサーバ | DNSやNISの前に使われていた非常にシンプルな名前解決サービス |
NIS(Network Information Service) | ネットワークファイルシステムNFSとともによく使われていたサービス。ユーザー管理機能なども持つ。最初はYP(Yellow Pages、電話帳)という名称だった |
WINS/lmhostsファイル | Windows OSのNetBIOSベースの名前解決サービス。NetBIOSではIPアドレスではなく名前を使って通信相手を識別するので、OS自身で独自に名前とIPアドレスの対応を管理していた ・TIPS「Windowsにおけるhostsとlmhostsの違い」 |
DNS以外の名前解決サービスの例 |
いずれもローカルのLAN向けの技術であり、インターネットレベルでの利用にはあまり向いていないので(組織ごとに分散・委譲管理ができない、運用や更新が面倒など)、DNSの代わりにはならなかった。
Copyright© Digital Advantage Corp. All Rights Reserved.