権限委譲
DNSで、あるゾーンの一部(サブドメイン)の管理を、別の権威DNSサーバに任せること。親のゾーンに、サブドメインを管理するネームサーバをNSレコードで書いておく。
イマシルちゃんの解説
大きな会社の名簿を、社長が1人で全部管理するのは大変だよね。
だから、「営業部の名簿は、営業部の人が管理してね」って任せるんだ。
社長の名簿には、「営業部のことは、営業部のだれだれさんに聞いて」ってメモだけ書いておくんだよ。
DNSも、こうやって管理を分けて、名前の住所録を世界中で分担しているんだ。
より深い解説
定義
DNSの名前空間は、ドメイン名の木構造になっていて、管理の単位をゾーンという。親ゾーンの管理者が、サブドメインを独立したゾーンとして切り出し、その管理を別の権威DNSサーバに任せることを、権限委譲(委任)という。ルートから .jp、example.jp へと、委譲を重ねることで、DNSは世界中に分散して管理されている。
委譲の書き方
親ゾーン(example.jp)で、サブドメイン(sales.example.jp)を委譲する例:
; 親ゾーン example.jp のゾーンデータ
sales.example.jp. IN NS ns1.sales.example.jp.
sales.example.jp. IN NS ns2.sales.example.jp.
ns1.sales.example.jp. IN A 192.0.2.53 ← グルーレコード
ns2.sales.example.jp. IN A 198.51.100.53 ← グルーレコード
| 項目 | 内容 |
|---|---|
| NSレコードの先頭のフィールド(名前) | 委譲するゾーンのドメイン名 |
| NSレコードのデータ部(RDATA) | そのゾーンを管理するネームサーバのホスト名 |
| グルーレコード | ネームサーバのホスト名が、委譲するゾーンの中にあるとき、親ゾーンにそのAレコードも書く。書かないと、ネームサーバのアドレスを調べるために、そのネームサーバ自身に聞かなければならず、名前解決ができなくなる |
NSレコードの注意点
| 注意点 | 内容 |
|---|---|
| ホスト名を書く | NSレコードのデータ部には、IPアドレスではなく、ネームサーバのホスト名を書く |
| 別名は書かない | データ部には、CNAMEで定義した別名ではなく、正規のホスト名を書く |
| 親と子の一致 | 親ゾーンのNSレコードと、子ゾーン自身のNSレコードの内容をそろえる |
名前解決の流れでの役割
フルサービスリゾルバが sales.example.jp の名前を問い合わせると、example.jp の権威DNSサーバは、答えを直接返す代わりに「sales.example.jp は、このネームサーバに聞いて」という委譲の情報(NSレコードとグルーレコード)を返す。リゾルバは、それに従って、sales.example.jp の権威DNSサーバに問い合わせる。
委譲の不備(lame delegation)
委譲先のネームサーバが、実際にはそのゾーンを管理していない状態を、lame delegation という。名前解決の失敗や遅延の原因になるほか、廃止したネームサーバのドメイン名を第三者に取得されると、ゾーンを乗っ取られるおそれがある。