DNSゾーンとは、ドメイン名空間の管理対象領域であり、委任されたドメイン名を起点として、権威ネームサーバーによって提供され、1人の管理者によって単一の単位として管理されるものです。 名前空間のサブツリー全体を表すドメインとは異なり、ゾーンはそのサブツリーのうち、他の場所に委任されていない部分のみを指します。ゾーンは、誰がどの名前を変更できるか、またエラーがどこまで伝播するかを決定する、DNSにおける管理の基本単位です。 ゾーンの設計と管理は、信頼性、セキュリティ、および運用の一貫性に直接影響を与えます。そのため、別々のネットワーク上に複数の権威サーバーを設置し、適切な委任設定を行い、安全なゾーン転送を確保するとともに、断続的な解決失敗を引き起こす可能性のある、不適切な委任、古いシリアル番号、スプリットビューのずれといった一般的な設定ミスを防止する必要があります。
DNSゾーンの仕組み
ゾーンは、親ゾーンがドメイン名を一連のネームサーバーに委任する際に作成されます。その後、そのゾーンには、その名前およびそれ以上委任されていないサブドメインに関するレコードが格納されます。
- 委任(Delegation):親ゾーンは、子ドメインの権威サーバーを指定するNSレコードを公開します。これにより、その名前空間の一部に関する管理責任が、子ゾーンの管理者に委譲されます。
- ゾーンの定義:管理者は、権限開始(SOA)レコードで始まるゾーンファイルまたはデータベースエントリを作成します。また、このファイルには、NSレコードや、A、AAAA、MX、CNAMEなど、ゾーン内の名前に対応するその他のリソースレコードも記載されます。
- パブリケーション:1つ以上の権威あるネームサーバーがゾーンを読み込み、そのゾーン内の名前に対するクエリに、権威あるデータを用いて応答します。
- レプリケーション:セカンダリサーバーは、ゾーン転送を使用してプライマリサーバーからゾーンをコピーします。SOAレコード内のシリアル番号を比較し、より新しいバージョンが存在するかどうかを判断します。
- 解決:再帰的リゾルバは、ルートから下方向へと委任をたどって、そのゾーンの権限を持つサーバーに到達するまで進み、そのサーバーにレコードを問い合わせます。
ゾーンはドメインとは異なります。ドメインは名前空間のサブツリーであるのに対し、ゾーンはそのサブツリーのうち、1つの単位として管理される部分です。したがって、サブドメインが委任されているドメインは、複数のゾーンにまたがることになります。また、ゾーンファイルは、ゾーンの動作を変更することなく、データベースを基盤としたストレージに置き換えることも可能です。
DNSゾーンに関する一般的な問題
親ゾーンには、子ゾーンに対して権威ある応答を行わないサーバーのNSレコードがリストされます。これは、サーバーが廃止された場合や、ゾーンが一度も読み込まれなかった場合によく見られます。リゾルバーは、選択したサーバーに応じて、一部のクエリに対してSERVFAILまたはタイムアウトを返します。
管理者がゾーンを編集してもSOAシリアル番号を変更しない場合、セカンダリサーバーは新しいバージョンを認識できず、それを転送することもありません。クライアントは、どの権威サーバーが応答するかによって異なる回答を受け取ることになります。
子ゾーンのネームサーバーは子ゾーン内に存在しますが、親ゾーンはグルーアドレスを公開しません。リゾルバーはサーバーを見つけることができず、ゾーン全体にアクセスできなくなります。
プライマリサーバーは、どのリクエスト元に対しても転送を許可するため、誰でもそのゾーン内のすべてのレコードをダウンロードし、内部ホストをマッピングすることができます。転送をリストに登録されたセカンダリに限定し、TSIG を使用して認証を行ってください。
同一ゾーンの内部バージョンと外部バージョンは別々に編集されるため、徐々に差異が生じます。ユーザーはクエリを実行する場所によって、同じ名前に対して異なるアドレスが表示されるため、トラブルシューティングに時間がかかります。