DNS delegation is a hierarchical mechanism that transfers authority for a subdomain from a parent zone to different authoritative name servers through NS records, enabling the DNS to scale across organizations without requiring a single server to hold every record. The delegation process involves creating a child zone on target servers, adding NS records in the parent zone, and optionally publishing glue records when a name server hostname resides within the delegated subdomain. Poorly managed delegation causes common DNS failures such as lame delegations, mismatched NS record sets, and missing glue records, while regular audits and monitoring of delegation consistency reduce both operational and security risks.
DNS デリゲーションの仕組み
委任は、親ゾーンにポインタを配置することで機能します。このポインタは、リゾルバーに対して子ゾーンの権威サーバーがどこにあるかを示します。その後、子ゾーンは、委任ポイントより下位にあるすべての名前に対して応答を行います。
- 子ゾーンの作成:委任を受けた側は、自身の権威ネームサーバー上に sales.example.com などのサブドメイン用のゾーンを設定し、そのゾーンのレコードを読み込みます。
- 親ゾーンにNSレコードを追加する:親ゾーンの管理者は、委任ポイントに、子ゾーンの権威サーバーを指定するNSレコードを追加します。
- 必要に応じてグルーレコードを追加してください:ネームサーバーのホスト名が委任されたサブドメイン内にある場合、親ドメインもそのホスト名に対するアドレスレコード(グルーレコードと呼ばれる)を公開します。これにより、リゾルバーは循環ルックアップを行うことなくそのホスト名に到達できるようになります。
- リゾルバーはリファラルに従います:リゾルバーがサブドメイン内の名前について親サーバーにクエリを送信すると、親サーバーは回答の代わりに、NSレコードを含むリファラルを返します。
- 子サーバーの応答:リゾルバーは指定されたサーバーのいずれかにクエリを送信し、そのサーバーがサブドメインに対して権威ある応答を返します。
親ゾーンには、NSレコードとグルーレコード以外の子ゾーンのデータは保持されないため、子ゾーンはレコードを自由に変更できます。子ゾーンのNSレコードは親ゾーンのものと一致している必要があり、そうでないと解決結果に一貫性が失われる可能性があります。DNSSECが使用されている場合、親ゾーンはDSレコードも公開し、信頼の連鎖を子ゾーンに結びつけます。
DNS 委任に関する一般的な問題
親ゾーンには、子ゾーンに対して権威ある応答を行わないサーバーのNSレコードが記載されています。これは、プロバイダーの移行後やサーバーの運用終了後に多く見られます。リゾルバーは一部のクエリでSERVFAILやタイムアウトを返しますが、どの記載されたサーバーが選択されるかによって結果が異なるため、障害は断続的に発生しているように見えます。
親ゾーンのNSレコードが子ゾーン内のNSレコードと異なるのは、通常、一方だけが更新され、もう一方が更新されなかったためです。リゾルバによってキャッシュされるセットが異なるため、動作はさまざまであり、変更が反映されるまでに時間がかかります。
委任ゾーン内のネームサーバーが親ゾーンにグルーレコードを持たないか、あるいはグルーレコードに古いIPアドレスが登録されている場合、リゾルバーは子サーバーに到達できず、サーバーの番号変更後にサブドメイン全体の解決に失敗します。
キーのロールオーバーや別のプロバイダーへの移行後など、子ゾーンがもはや使用していないキーについて、親ゾーンには依然として DS レコードが残っている場合があります。検証を行うリゾルバーは、そのサブドメインに対して SERVFAIL を返しますが、検証を行わないリゾルバーは通常通り応答します。