管理者はネームサーバーを運用して、自ドメインの名前解決(ドメイン名とIPアドレスの相互変換)サービスを提供します。管理者がカバーしなければならない範囲はサブドメインにも及びますが、サブドメインは必要があって分割した部分ツリーですから、そちら側の組織に管理を一任するのが一般的です。
管理を一任する行為を
委任と言い、委任された組織ではネームサーバーを設置して自ドメインの名前解決サービスを開始します。
分割し委任された範囲を
ゾーン(zone)と呼びます。
ゾーンとは、ドメイン名空間において
自治管理される部分ともいえます。
ゾーン内のホスト情報等(名前解決)は、そのゾーンの管理者がネームサーバーを立ち上げて管理する事になり、分割元の親のゾーンでは、委任先ゾーンのネームサーバーのみを管理すれば良いことになります。
サブドメインとして分割しても委任しないことも可能です。その時のサブドメインのゾーンは分割元の親ドメインに属します。
ゾーンとドメインの関係を、ある架空の組織(project研究所)で考えてみましょう。
project研究所は下記のドメイン名を取得しました。
project.ed.jp
研究所のネットワーク管理者は、ネットワーク構成について次のように考えたとします。
- 主要な研究部門は Windows部門, Linux部門, Network部門 の3部門なので、それぞれをサブドメインとする。
- Windows部門 と Linux部門 は自分で管理しよう。
- Network部門 は大所帯なので、その部門の管理者に一任(委任)する。
その話を聞いたNetwork部門の管理者は次のように考えるかもしれません。
- Webチームまでは手が回らないので分割し、管理はWebチームに委任しよう。
- 他のチームは自分で管理しよう。
こうして出来上がったproject.ed.jp研究所ネットワークの、ドメインと委任とゾーンの関係は次の図のようになります。
管理者が把握・維持しなければならないのは自ゾーン内(および委任先ゾーンのネームサーバー)の情報に限定できるため、各管理者の保守範囲は次のようになります。
- 【 project.ed.jp ゾーン : 研究所管理者の保守範囲 】
Windows, Linux両サブドメインを含む、project.ed.jp ゾーン内のホスト情報。
network.project.ed.jp ゾーンのネームサーバーの情報。
- 【 network.project.ed.jp ゾーン : Network 部門管理者の保守範囲 】
network.project.ed.jp ゾーン内のホスト情報。
web.network.project.ed.jp ゾーンのネームサーバーの情報。
- 【 web.network.project.ed.jpゾーン : Web チーム管理者の保守範囲 】
web.network.project.ed.jp ゾーン内のホスト情報。
ネームサーバーが扱うデータはゾーンデータと呼ばれ、複数の資源(リソース)レコードで構成されています。資源レコードには、ドメイン名、ホスト名、IPアドレス、ネームサーバー等の情報を記述しますが、資源レコードは扱う情報ごとに数種類あります。
ゾーンデータはネームサーバー(再)起動時に読み込まれます。ネームサーバーは問い合わせを受けると読み込み済みのゾーンデータから目的の資源レコードを検索し、記述内容を応答メッセージとして返します。
1つの資源レコードは1行で完結するように記述しますが、括弧でくくることで複数行わたる記述が可能になります。
資源レコードは10種類ほどありますが、主な資源レコードの記述例を以下に示します。
前項の project.ed.jp ゾーンで、ホスト nsw をネームサーバーとして運用した場合を例としています。
ネームサーバーが当該ゾーンの信頼できる情報源であることを表明します("権威がある"、"権威を持つ"と表現します)。SOAレコードは1つのゾーンデータファイル中に1つだけ記述します。
@ | A | B | C | D | E |
project.ed.jp. | 86400 | IN | SOA | nsw.project.ed.jp. | adm.project.ed.jp. ( |
| 123 3h 15m 1w 1d ) | ;serial ;refresh ;retry ;expire ;minimum |
@ | owner | このゾーンの名称を記述します。 |
A | ttl | Time To Live. このレコードの情報がキャッシュされた場合の有効期間を秒単位で指定します。 |
B | class | internet 用を表す先頭の2文字"IN"が入ります。現在はIN以外は使われていないようです。 |
C | type | レコードタイプ。SOA(Start Of Authority)によって、このネームサーバーが project.ed.jp. ゾーンの権威を持つことになります。 |
D | source-dname | このゾーンに権威を持っているプライマリマスターネームサーバー※1のホスト名を記述します。ここでは nsw を指定しています。 ネームサーバーをホスト project に設定することも可能で、その場合は project.ed.jp. となります。実際にそのようにしているサイトも多数あります。 |
E | mbox | ゾーン管理者のメールアドレス。最初のドット(.)は@に読み替えます。 |
括弧でくくった部分の serial 〜 expire は、スレーブネームサーバー
※1が使用する情報で、ゾーンデータの世代管理番号(serial)や、更新確認の間隔(refresh)等を指定します。
最後尾の minimum はネガティブキャッシュ
※2のTTL(有効期間)を指定します。
refresh〜minimumは秒単位の数値を記述するか、例題のようにweek、day、hour、minuteの頭文字を使います。
ゾーンに対して権威を持っているネームサーバーである事を宣言します。
@ | A | B | C | D |
project.ed.jp. | 86400 | IN | NS | nsw.project.ed.jp. |
project.ed.jp. | 86400 | IN | NS | ns2.project.ed.jp. |
@ | owner | ゾーンの名称を記述します。 |
A | ttl | SOAレコードの項参照。 |
B | class | SOAレコードの項参照。 |
C | type | レコードタイプ。NS(Name Server)。 |
D | name-server-dname | <owner>欄に記述したゾーンの、権威あるネームサーバーのホスト名を記述します。 |
2つのNSレコードで project.ed.jp ゾーンのネームサーバーが2台あることを示していますが、どちらがプライマリマスターネームサーバーであるかは意識しません。
ホスト名に対応するIPアドレスを記述します。
@ | A | B | C | D |
nsw.project.ed.jp. | 86400 | IN | A | 10.23.145.241 |
ns2.project.ed.jp. | 86400 | IN | A | 10.23.145.242 |
ftp.windows.project.ed.jp. | 86400 | IN | A | 10.23.145.243 |
www.linux.project.ed.jp. | 86400 | IN | A | 10.23.145.244 |
@ | owner | ホスト名を記述します。 |
A | ttl | SOAレコードの項参照。 |
B | class | SOAレコードの項参照。 |
C | type | レコードタイプ。A(Address)。 |
D | address | <owner>欄に記述したホストのIPアドレスを記述します。 |
ホスト名はAレコードによってIPアドレスへの変換(名前解決)が行われます。
ホストの別名に対応した正規なホスト名を記述します。
例えばホスト nsw を使って www.project.ed.jp のwebサーバーを運用するような場合、CNAMEレコードを次のように記述します。
@ | A | B | C | D |
www.project.ed.jp. | 86400 | IN | CNAME | nsw.project.ed.jp. |
@ | owner | ホストの別名を記述します。 |
A | ttl | SOAレコードの項参照。 |
B | class | SOAレコードの項参照。 |
C | type | レコードタイプ。CNAME(Canonical NAME)。 |
D | canonical-name | <owner>欄に記述したホストの正規名を記述します。 |
別名(www.project.ed.jp.)に対する問い合わせがあると、正規名(nsw.project.ed.jp.)に置き換えて検索が再実行されます。
IPアドレスに対応するホスト名を記述します。このレコードは逆引き(IPアドレスからホスト名を検索)で使用されます。
@ | A | B | C | D |
241.145.23.10.in-addr.arpa | 86400 | IN | PTR | nsw.project.ed.jp. |
244.145.23.10.in-addr.arpa | 86400 | IN | PTR | www.linux.project.ed.jp. |
@ | owner | 逆引き用ドメイン名で定義されたIPアドレスを記述します。 |
A | ttl | SOAレコードの項参照。 |
B | class | SOAレコードの項参照。 |
C | type | レコードタイプ。PTR(PoinTeR)。 |
D | dname | <owner>欄に記述したIPアドレスに対応したホスト名を記述します。 ただしここに記述できるのは正規名のみで別名は記述できません。 |
分割・委任したゾーン network.project.ed.jp のネームサーバーの情報も、親ゾーンの責任として記述する必要があります。
子ゾーン側で運用しているネームサーバーのホスト名を、親ゾーン側ネームサーバーのNSレコードに記述する事で、委任している事実を認証します。
network.project.ed.jp. | 86400 | IN | NS | nns.network.project.ed.jp. |
nns.network.project.ed.jp. | 86400 | IN | A | 10.23.145.193 |
この例では1行目のNSレコードで network.project.ed.jp ゾーンのネームサーバーのホスト名を示し、2行目のAレコードで対応するIPアドレスを示しています。
委任先ゾーンに関するIPアドレス情報の提供は本来不要なのですが、委任先ネームサーバーのIPアドレスについては委任元のネームサーバーで解決する必要があります。
こうした目的のAレコードをグルーレコード(glue recode)と呼んでいます。
ただし、network.project.ed.jp のネームサーバーがそのゾーンにない場合は、グルーレコードは不要になります。例えば network.project.ed.jp のネームサーバーが ns.example.co.jp にあるような場合は、
network.project.ed.jp. | 86400 | IN | NS | ns.example.co.jp. |
と記述するだけです。
ns.example.co.jp.の名前解決(IPアドレス検索)は問い合わせ元に任せます。
ドメインネームサーバー、DNSサーバーとも呼ばれます。