3. Zone Contents (ゾーンの内容)
このセクションでは, AXFR応答に含まれるDNSリソースレコード (RR) と除外されるものについて説明します。ゾーン転送の内容は任意ではありません。含まれるものと含まれないものを管理する特定のルールがあります。
3.1. Records to Include (含めるレコード)
AXFRサーバーは, AXFR応答に以下のRRを含めなければなりません:
-
SOA RR: ゾーンapexのSOA RRは, 最初の応答メッセージの回答セクションの最初のRRとして, また最後の応答メッセージの回答セクションの最後のRRとして表示されなければなりません。
-
すべての権威RR: ゾーン内のドメイン名が所有するすべての権威RRを含めなければなりません。これには以下のRRタイプが含まれますが, これらに限定されません:
- ゾーンapexのNS RR
- A, AAAA, MX, CNAME, TXT, およびその他の標準RRタイプ
- DNSSEC関連のRR (DNSKEY, RRSIG, NSEC, NSEC3, ゾーンapexのDS (存在する場合))
- [RFC3597] に従って定義された未知または実験的なRRタイプ
-
RRsets: 同じ所有者名, クラス, タイプのすべてのRRがRRsetを構成します。RRsetのすべてのメンバーをゾーン転送に含めなければなりません。効率のために, 同じRRsetのすべてのRRがAXFR応答内で連続して表示されることが推奨されます。
-
空の非終端: 空の非終端 (ENT) ドメイン名はRRを所有しませんが, ドメイン名ツリー内でプレースホルダーとして機能します。ただし, ENTはRRを所有しないため, AXFR応答で明示的に表現されません。それらは従属名の存在によって暗黙的に定義されます。
AXFRサーバーは, AXFR応答に以下を含めてはなりません:
-
ゾーン外データ: ゾーン内のドメイン名が所有していないRRを含めてはなりません (セクション3.3で説明するグルーレコードを除く)。
-
非権威データ: キャッシュされたデータ, ヒント, またはその他の非権威情報を含めてはなりません。
-
回答セクション内のOPT RR: EDNS(0) OPT擬似RRはゾーンデータではなく, 回答セクションに表示してはなりません。それらは追加セクションにのみ表示できます。
3.2. Delegation Records (委任レコード)
ゾーンカット (委任ポイント) は, 権限が別のゾーンに委任されるゾーン内のドメイン名です。ゾーンカットでは, NS RRが委任を示します。AXFRでの委任レコードの処理は微妙です。
委任NS RR: ゾーンカット (子ゾーンへの権限の委任) でのNS RRは, AXFR応答に含めなければなりません。これらのNS RRは親ゾーンに対して権威があり, 権限がどこに委任されたかを示します。
例: ゾーン example.com に child.example.com への委任が含まれている場合, child.example.com のNS RRは example.com のAXFR応答に含めなければなりません。
ゾーンカットでのDS RR: DNSSEC署名ゾーンの場合, DS (Delegation Signer) RRが親ゾーンのゾーンカットに表示される場合があります。委任ポイントのDS RRは, 親ゾーンのAXFR応答に含めなければなりません。
ゾーンカットでの他のRRタイプ: ゾーンカットでは, NS RR (およびDNSSECのオプションのDS RR) のみが親ゾーンで権威があります。同じドメイン名に存在する可能性のある他のRRタイプは次のいずれかです:
- グルーレコード (セクション3.3を参照), または
- ゾーンカットによって隠されている (セクション3.5を参照)。
親ゾーンのゾーンカットでは, NSとDS以外の他の権威RRタイプは存在しません。
3.3. Glue Records (グルーレコード)
グルーレコードは, ゾーンの権威範囲外に存在するが, ゾーンのネームサーバーを解決するときに循環依存を防ぐために必要なアドレスレコード (AまたはAAAA) です。
定義: グルーレコードは, ゾーンのNS RRにリストされているネームサーバーにIPアドレスを提供するAまたはAAAA RRであり, それらのネームサーバーは委任された子ゾーン内に存在します。
例: example.com が child.example.com に委任し, child.example.com のNS RRの1つが ns1.child.example.com である場合, ns1.child.example.com のAまたはAAAA RRは, example.com ゾーンのコンテキストでグルーになります。
AXFR動作:
-
グルーレコードはAXFR応答に含めてはなりません。グルーレコードはゾーン外データであり, 転送されるゾーンに対して権威がありません。AXFRサーバーは, AXFR応答の回答セクションでグルーレコードを送信してはなりません。
-
AXFRクライアントは, 他の手段 (たとえば, 子ゾーンのクエリやキャッシュされたデータへの依存) を通じてグルーレコードを取得する責任があります。
理由: AXFR応答にグルーレコードを含めると, 権威データと非権威データが混在し, 混乱と不整合につながる可能性があります。グルーレコードを除外することで, AXFR応答にはゾーンの権威データのみが含まれます。
歴史的注記: 一部の古いDNS実装は, AXFR応答にグルーレコードを含めていました。現代の実装はグルーレコードを含めてはなりません。この動作は非標準であり, 相互運用性の問題を引き起こす可能性があるためです。
3.4. Name Compression (名前圧縮)
DNSメッセージフォーマットは名前圧縮をサポートしています。これは, メッセージ内で以前に出現した同じ名前へのポインタで繰り返しドメイン名を置き換えることにより, DNSメッセージのサイズを削減する技術です。
AXFRと名前圧縮:
-
個々のAXFR応答メッセージ内で名前圧縮を使用できます。AXFRシーケンスの各DNSメッセージは名前圧縮に関して独立しています。ポインタは前または後続のメッセージ内の名前を参照してはなりません。
-
名前圧縮は, 多くのRRが共通のドメイン名サフィックス (たとえば, ゾーン名自体) を共有しているため, AXFR応答で特に有益です。
-
AXFRサーバーは, 帯域幅を削減し効率を向上させるために名前圧縮を使用すべきですが, これは必須ではありません。
-
AXFRクライアントは名前圧縮をサポートし, AXFR応答内の名前を正しく解凍しなければなりません。
3.5. Occluded Names (隠された名前)
隠された名前は, 通常はゾーン内にあるはずですが, ゾーンカットのためにゾーンのビューから隠されているドメイン名です。隠された名前は委任ポイントの従属位置に存在します。
例: example.com が child.example.com に委任する場合, child.example.com に従属する任意のドメイン名 (www.child.example.com や ftp.child.example.com など) は, example.com ゾーンの視点から隠されています。
AXFR動作:
-
隠された名前とそれに関連付けられたRRは, 親ゾーンのAXFR応答に含めてはなりません。ゾーンカット (委任ポイントのNS RR) のみが含まれます。
-
委任されたゾーン (例の
child.example.com) の内容は, そのゾーン専用のAXFRセッションを介してのみ転送されます。
理由: 親ゾーンのAXFR応答に隠された名前を含めると, DNSの階層構造に違反し, 複数のゾーンからのデータが混在します。
特殊なケース - DNAME: ゾーンにDNAME RR [RFC2672] が含まれている場合, DNAMEはリダイレクトを作成し, DNAME所有者に従属する任意の名前は, 委任に従属する名前と同じ方法で効果的に隠されます。DNAME隠された名前はAXFR応答に含めてはなりません。