The DNS namespace is a hierarchical tree structure that organizes all domain names in the Domain Name System, starting from an unnamed root and branching into top-level domains and subdomains, with authority delegated down the tree to enable global-scale name resolution. Proper namespace design is critical for enterprise operations, as poor management leads to real failures including name collisions, subdomain takeovers, split-horizon DNS mismatches, and dangling delegations that cause inconsistent answers and resolution failures. Treating the namespace as a managed asset with clear ownership, documented delegation, and consistent naming conventions reduces operational risks and simplifies access control, auditing, and troubleshooting across internal and public zones.
DNSネームスペースの仕組み
DNSネームスペースはツリー構造になっています。各ノードにはラベルがあり、ドメイン名とは、あるノードからルートに至るまでのラベルの列であり、ドットで区切られ、左から右へと記述されます。
- ルートから始める:ツリーの最上位はルートであり、ラベルは空です。完全修飾ドメイン名は、それを表す末尾のドットで終わります。
- トップレベルドメインへの分岐:ルートの直下には、国別コードドメインや汎用ドメインなどのトップレベルドメインがあります。ルートゾーンには、これらのドメインに対する委任データが格納されています。
- サブドメインへの分割:各ドメイン所有者は、自身の名前の下に子ラベルを作成できます。host.example.com のような名前は、ルートから 3 レベル下に位置します。
- ゾーン単位での権限委譲:ゾーンとは、単一の単位として管理されるツリーの一部です。親ゾーンは、子ゾーンの権威ネームサーバーを指すNSレコードを公開することで、子ゾーンに権限を委譲します。
- ツリーを辿って解決する:リゾルバーは、要求された名前の権威サーバーに到達するまで、ルートから下方向へと委任を辿っていきます。
RFC 1034 では、ワイヤ形式において各ラベルを 63 オクテット、完全名を 255 オクテット以内に制限しています。ツリーには単一のルートがあるため、特定の完全修飾名はツリー内の 1 つの場所を識別します。また、組織は、パブリックツリーの一部ではない内部ゾーンなどのプライベートネームスペースも運用しています。
DNS ネームスペースに関する一般的な問題
計画なしに内部と外部で同じドメインを使用すると、スプリットホライズンの不一致が生じます。ユーザーは、一部の名前に対しては内部の応答を受け取り、他の名前に対しては外部の応答を受け取るため、片方のみに存在するレコードは解決されません。
独自に作成したサフィックスに基づいて構築された内部名は、そのラベルが後にパブリックネームスペースで委任された場合に衝突する可能性があります。本来は内部にとどまるべきクエリが、予期しないパブリックな回答に解決されたり、証明書の検証に失敗したりすることがあります。
親ゾーンに子サブドメインに対する正しいNSレコードがない場合、またはそれらのNSレコードがもはや応答しないサーバーを指している場合、リゾルバーは存在する名前に対してSERVFAILまたはNXDOMAINを返します。これは、サーバーの移行後に子ゾーンのみが更新された場合に頻繁に発生します。
サブツリーの所有者としてどのチームも登録されていない場合、古いレコードや未解決のエイリアスが蓄積されます。その結果、変更が競合したり、レビューなしに行われたりし、クリーンアップの正当性を説明することが難しくなります。
ホスト名やサブドメインの命名規則が地域やチームごとに異なる場合、自動化、逆引きマッピング、トラブルシューティングが困難になります。特定のパターンを前提としたスクリプトや検索ドメインの設定は、他のパターンでは機能しなくなります。