コンテンツにスキップ

階層・委任・ゾーン

権威 DNS サーバーが答えられる範囲を決めているのがゾーンです。

「ドメイン」と「ゾーン」は日常の会話ではほぼ同じ意味で使われますが、DNS では指すものが違います。Unbound の local-zone、forward-zone、stub-zone はいずれもゾーン単位で設定するため、この違いは後の章の前提になります。

階層(ドメイン名は右から左へ階層を形成する)

Section titled “階層(ドメイン名は右から左へ階層を形成する)”

www.example.com. のような名前は、ドットで区切られたラベルの並びです。階層は右端から始まります。右端の空のラベルがルートで、末尾のドットがそれを表します。

. ルート
com. TLD
example.com.
www.example.com.

名前解決は、この階層を右から左へ1段ずつたどって進みます。ルートの直下にある com. や jp. は TLD(Top Level Domain)と呼ばれます。

ルートまで書き切った名前を絶対ドメイン名(absolute domain name)、途中で打ち切った名前を相対ドメイン名(relative domain name)と呼びます。www.example.com. は絶対ドメイン名で、末尾のドットを落とした www.example.com はルートからの相対ドメイン名です1。

本書では、設定ファイルやゾーンの定義に絶対ドメイン名を書きます。一方、文章内で名前を挙げるときは、絶対か相対かが問題にならない限り example.com のように書きます。以降のページはこの書き方に従います。

「FQDN」という用語も広く使われますが、末尾のドットまで含む名前を指す場合と、TLD まで書いてあれば足りるとする場合があります2。たとえば SMTP の仕様は、やり取りに使うドメイン名を FQDN に限ると定める一方で、コマンドの構文はドメイン名を sub-domain *("." sub-domain) と定義しており、末尾のドットで終わる形を作れません3。ここの FQDN は、末尾のドットまで含む名前ではなく、指すものが文脈で変わるため、本書では「FQDN」という用語は使いません。

また、ラベルと名前には長さの制限があります。1つのラベルは63バイトまで、名前全体は、各ラベルの長さを表す1バイトずつを含めて255バイトまでです4。この上限は、第5章で local-data に名前を書くときに関係します。

委任(親が子の権威 DNS サーバーを指す)

Section titled “委任(親が子の権威 DNS サーバーを指す)”

DNS は、階層を区切って管理を分担します。com の管理者が example.com 以下の情報まで持つのではなく、example.com の管理を別の管理者へ渡します。これが委任です。

委任は、親ゾーンに置かれた NS RR で表現されます。DNS が返す情報はリソースレコード(RR)という単位で表され、NS はそのうち「このゾーンの権威 DNS サーバーはこれである」を表す型です。型の一覧は本書で使う RRで扱います。

com の権威 DNS サーバーは example.com の NS RR を持ち、問い合わせを受けるとこれを委任応答として返します。

反対に、子は親への参照を持ちません。example.com 側に「親は com である」と書く場所はありません。委任は親ゾーンだけで表現されます。

ゾーン(委任で切れる管理の単位)

Section titled “ゾーン(委任で切れる管理の単位)”

ゾーンは、1組の権威 DNS サーバーが実際に情報を持っている範囲です。範囲の切れ目をゾーンカットと呼びます5。

www.example.com と dev.example.com は、名前の階層では同格です。どちらも example.com の1つ下にある名前で、名前の形からどこのゾーンに入るかは決まりません。違いを作るのは、管理を分けたかどうかです。

  • www.example.com は example.com の管理者が自分で答える。example.com ゾーンの中にある
  • dev.example.com は別の担当者に任せる。example.com ゾーンから切り離し、dev.example.com ゾーンにする

後者のように委任すると、example.com と dev.example.com の間に境界ができます。これがゾーンカットです。このとき example.com ゾーンが持つのは dev.example.com の NS RR までで、dev.example.com 以下の情報は持ちません。委任しなければゾーンカットは生じず、dev.example.com の情報も example.com ゾーンの中にあります。

ゾーンの最上位の名前をゾーン頂点と呼びます。すべてのゾーンは、ゾーン頂点に SOA RR と NS RR を持ちます6。SOA は、そのゾーンの管理情報を持つ型です。

図1.2 階層と委任、そして委任によって切れるゾーンの境界
図1.2 階層と委任、そして委任によって切れるゾーンの境界

2つの語は、次の点で異なります。

ドメイン ゾーン
指すもの 名前空間の部分木 1組の権威 DNS サーバーが情報を持つ範囲
範囲の決まり方 名前の階層だけで決まる 委任によって切れる
例 example.com 以下のすべての名前 example.com から、委任した先の手前まで

example.com というドメインには dev.example.com も含まれますが、dev.example.com を委任していれば、example.com ゾーンにその情報は含まれません。ドメインとゾーンは範囲が一致するとは限りません。

この区別が、どの権威 DNS サーバーに聞けば答えが得られるかを決めます。次のページでは、ルートから順に委任をたどって目的の権威 DNS サーバーに到達するまでの流れを見ていきます。

  1. RFC 1034 の 3.1. Name space specifications and terminology ↩

  2. RFC 9499 の 2. Names の Fully Qualified Domain Name (FQDN) の項 ↩

  3. RFC 5321 の 2.3.5. Domain Names と 4.1.2. Command Argument Syntax ↩

  4. RFC 1035 の 2.3.4. Size limits と 3.1. Name space definitions ↩

  5. RFC 2181 の 6. Zone Cuts ↩

  6. RFC 2181 の 6.1. Zone authority ↩