パソコン実習室
アドレス検索 - DNSの話
≪ previous next ≫

W.ネームサーバー

 ユーザーの機器(PC等)に備わっているDNS問い合わせ用のソフトウェアをリゾルバ(resolver)といいます。
 ユーザーがホームページ閲覧やメール等でインターネットへのアクセスを開始すると、リゾルバは通信相手のIPアドレスをネームサーバーに問い合わせ、ネームサーバーは他のネームサーバーと連携して要求された情報を検索します。
 DNSは通信相手のホスト名からIPアドレス(あるいはその逆)を検索するシステムで、この一連の検索処理を名前解決 (name resolution)、または単に解決 (resolution) と呼びます。

 名前解決では様々な問い合わせと応答が繰り返されます。問い合わせとネームサーバーは役割によって様々な名前で呼ばれます。

W.1.問い合わせの種類

 問い合わせは着眼点によっていくつかの種類に分類できます。

W.1.1.正引きと逆引き

 DNSはドメイン(ホスト)名とIPアドレスを扱うデータベースで、問い合わせによってユーザーの求める情報が検索されます。何を検索対象とするかによって、問い合わせは〈正引き〉と〈逆引き〉に分類できます。
  • 正引き (forward mapping)
    ドメイン(ホスト)名をキーとしてAレコードを検索し、IPアドレスを得ます。

  • 逆引き (reverse mapping)
    IPアドレスをキーとしてPTRレコードを検索し、ドメイン(ホスト)名を得ます。

W.1.2.反復と再帰

 問い合わせのタイプに、反復的(iterative)問い合わせと再帰的(recursive)問い合わせの2つのタイプがあります。
 両者の違いは問い合わせを受けたネームサーバーが、要求された情報を持っていなかった時の動作にあります。それぞれの問い合わせによるネームサーバーの動作は次のようになります。
  • 反復的問い合わせ
    1. 問い合わせが自ゾーンに関するものであれば、そのデータを返します。
    2. 答えが見つからない場合、問い合わせドメイン名に近いネームサーバー名とIPアドレスを、ローカルデータから探して参照先として返します。別のネームサーバーに問い合わせることはしません。
      ※ 参照先ネームサーバーが複数ある場合はそのすべてを返します。
        参照先の選択は問い合わせ元が行います。
    3. 要求元のネームサーバーは参照先を使って名前解決処理を続行します(返された参照先へ同じ問い合わせを送ります)。
    ※ 非再帰的(non-recursive)問い合わせともいいます。

  • 再帰的問い合わせ
    1. 問い合わせが自ゾーンに関するものであれば、そのデータを返します。
    2. 答えが見つからない場合は、他のネームサーバーに反復的な問い合わせを繰り返し、最終的な回答(IPアドレス、もしくはドメイン名が存在しないエラー)を得て要求元に返します。このような同じ処理の繰り返しを再帰(的処理)といいます。
      ※ 返された参照先を順に追うことで、該当する情報にたどり着きます。
    3. 最初の問い合わせ先は、要求ドメイン名に近い情報を自分のキャッシュから検索します。該当する情報があればそのネームサーバーからスタートしますが、なにも手掛かりがなければルートネームサーバーからスタートします。
      ※ 各ネームサーバーは、ルートネームサーバーの情報(公開されています)を持っています。
    ※ 再帰的な問い合わせを受けた場合、他のネームサーバーを参照先として返すことはできません。
      ただし、再帰的問い合わせのサポートはオプションです。


W.2.リゾルバとネームサーバー

 ユーザーが要求している情報を連携して検索するリゾルバとネームサーバーは、役割によっていくつかに分類されます。

W.2.1.スタブリゾルバ (stub resolver)

 ユーザーの機器に実装されている名前解決用のソフトウェアを、スタブリゾルバといいます。

 アプリケーション(ブラウザやメーラー等)から名前解決の依頼を受けると、問い合わせ用のフォーマットに変換し、あらかじめ設定されているローカルネームサーバーに送信します。
 ローカルネームサーバーから回答を受信すると、フォーマットを戻してアプリケーションに返します。
 スタブリゾルバの出す問い合わせは再帰的問い合わせです。自身で名前解決する機能は持っていません。単にリゾルバと言った場合スタブリゾルバを指します。

W.2.2.フルサービスリゾルバ (full-service resolver)

ローカルネームサーバーをこのようにも呼びます。
 DNSでは名前解決を依頼するソフトウェアをリゾルバと言います。スタブリゾルバから問い合わせを受けたローカルネームサーバーは、他のネームサーバーへの問い合わせを繰り返して名前解決を図ります。こうした自身で解決するリゾルバとしての働きからフルサービスリゾルバと呼ばれています。
※ フルリゾルバ(full resolver)とも言います。

W.2.3.ローカルネームサーバー (local name server)

 スタブリゾルバから再帰的問い合わせを受けると、自分の持っている情報(キャッシュ及びローカルデータ)を検索し、該当情報をスタブリゾルバへ返信します。
 該当する情報がない時は、ドメイン名空間の逆ツリー構造をたどるように他のネームサーバーへ反復的問い合わせを繰り返し、要求された情報を得てスタブリゾルバへ返信します。逆ツリー構造をたどる時は、利用できるキャッシュがあれば利用します。
 各ネームサーバーへ問い合わせた結果はキャッシュとして保存し、同様の問い合わせに対してはキャッシュを利用します。キャッシュネームサーバー(cache name server)とも呼ばれます。

 ローカルネームサーバーはプロバイダや企業ネットワークが用意し、そのIPアドレスはプロバイダ契約者や企業内のパソコン(あるいはルータ)にDNSサーバーとして設定します。このIPアドレスをスタブリゾルバが参照します。
※ パソコンへのDNSサーバーの設定は、DHCPによる自動設定が多いようです。
 ローカルネームサーバーの役割は、限られたクライアントからの問い合わせに応えることにあります。不特定のクライアントから名前解決依頼を受けて、負荷の増大や予期せぬトラブルに遭わないため、一般的にはアクセスを許容するクライアントの範囲を契約者や社員に限定(アクセス制御)します。
※ アクセス制御は option の allow-query で設定します。
※ アクセス数や企業規模を考慮して権威ネームサーバーを兼ねる事も可能です。

ローカルネームサーバーは通常、ゾーンの権威を持ちません。

※ キャッシュサーバー、DNSキャッシュサーバーとも言います。

W.2.4.権威ネームサーバー (authoritative name server)

 自ゾーンのゾーンデータを管理しゾーンに権威を持っています。自分が管理し権威を持っている情報に対する問い合わせにのみ回答を返します。

権威ネームサーバーは次の順序で該当する情報を返します。
  1. 自分が管理しているゾーン内のサブドメイン、ホストに関する問い合わせには、該当する資源レコードを返します。
  2. 委任しているゾーンへの問い合わせには、委任先のネームサーバー名とIPアドレスに関する資源レコードを返します。
  3. どちらも該当しない時は"情報なし"を返します。
※ 他ネームサーバーからの問い合わせはツリー構造を辿ってきた結果なので、問い合わせ内容が自ゾーン
  のものでない場合でも、通常それは委任先のものになります。
  どちらのデータもない時は、問い合わせのドメイン(ホスト)が存在しない事を意味します。
※ 他のネームサーバーへの問い合わせ動作を抑制するため option の recursion no を設定します。
  これによりスタブリゾルバから名前解決依頼を受けても、自分の情報のみを基に応答します。

※ DNS権威サーバー、DNSコンテンツサーバー、コンテンツネームサーバー、
  コンテンツサーバーとも言います。

W.2.5.ルートネームサーバー (root name server)

 ドメイン名空間最上位に位置し名前解決の起点となる権威ネームサーバーです。
登録されているルートネームサーバーの名称は13件(アメリカ10、ヨーロッパ2、日本1)ですが、複数のサーバーで同一名称(ホスト名とIPアドレス)を共有できるIPエニーキャスト(IP Anycast)を使って負荷分散・地域分散を行い、世界中の200以上のサイトで運用されています。

 日本の組織に割り当てられているルートネームサーバーのホスト名は m.root-servers.net で、関連する資源レコードは次のように公開されています。
.518400INNSm.root-servers.net.
m.root-servers.net.3600000INA202.12.27.33

 これと同じ名称・IPアドレスのルートネームサーバーは他の地域(国)にも存在し、もちろん日本にも他地域と同じルートネームサーバーがあります。ルートネームサーバーの配置はRoot Server Technical Operations Assnで見ることができます。

※ ルートサーバー、DNSルートサーバーとも言います。






≪ previous [[ アドレス検索 - DNSの話 ]] next ≫