ドメインネームシステム(DNS)ゾーンファイルは、 DNS ゾーンを記述するテキストファイルです。DNS ゾーンは、DNS の階層的なドメイン名構造のサブセットであり、多くの場合、単一のドメインです。ゾーンファイルには、ドメイン名とIP アドレスおよびその他のリソース間のマッピングが含まれており、リソースレコード(RR)のテキスト表現の形式で整理されています。ゾーンファイルは、ゾーンを権威的に記述する DNS マスターファイルである場合もあれば、DNS キャッシュの内容を一覧表示するために使用される場合もあります。[ 1 ] [ 2 ]
ゾーンファイルの形式は、RFC 1035(セクション 5)およびRFC 1034(セクション 3.6.1)で定義されています。この形式は元々Berkeley Internet Name Domain (BIND) ソフトウェア パッケージで使用されていましたが、他の DNS サーバー ソフトウェアでも広く採用されています。ただし、それらの一部(NSD、PowerDNSなど)は、ゾーンファイルをデータベース形式にコンパイルするための出発点としてのみ使用しています。Microsoft DNSとActive Directoryデータベースの統合も参照してください。
ゾーンファイルは、行指向エントリのシーケンスであり、各エントリは単一のリソースレコード( RR ) を定義するディレクティブまたはテキスト記述のいずれかです。エントリは、任意の組み合わせの空白 (タブとスペース) で区切られたフィールドで構成され、引用符で囲まれた文字列フィールド値または一対の書式設定括弧の内側を除いて、行境界で終了します。どの行もセミコロンで始まるコメントテキストで終了することができ、ファイルには任意の数の空白行を含めることができます。[ 3 ]
ゾーンファイル内のエントリは任意の順序で記述できますが、SOAレコードはゾーンファイルの先頭に配置する必要があります。
ディレクティブは、ゾーンファイルの残りの部分に影響を与える制御エントリです。ディレクティブの最初のフィールドは、ドル記号とキーワードで構成されます。
リソースレコードのエントリは、以下の複数のフィールドで構成されます(フィールドの順序はどちらでも構いません。また、どちらの順序でも使用できます)。
名前欄は空白のままにできます。その場合、レコードは前のレコードから名前欄の内容を継承します。単独の「@」記号は、現在の起点を示すために使用されます。
ttlフィールドは、キャッシュ クライアントがレコードを破棄し、新しい解決操作を実行して最新の情報を取得するまでの秒数を指定します。BIND を含む一部のネーム サーバーでは、時間単位の略語を使用した非標準の表現(たとえば、「2d」は 24 時間で 2 日、「1h30m」は 1 時間 30 分を意味します)が使用できます。このフィールドは省略可能で、その場合はデフォルトの TTL(定義されている場合)または直前のレコードから値が設定されます。
レコードクラスフィールドは、レコード情報の名前空間を示します。省略することも可能で、その場合は前のレコードから値が設定されます。最も一般的に使用される名前空間はインターネットの名前空間で、パラメータINで示されますが、 CHAOSなど、他にも使用中の名前空間があります。
レコードタイプフィールドは、最後のフィールドであるレコードデータに格納される情報タイプの略語です。たとえば、アドレスレコード(IPv4の場合はタイプA 、 IPv6の場合はタイプAAAA)は、最初のフィールドのドメイン名をレコードデータ内のIPアドレスにマッピングします。メールエクスチェンジャーレコード(タイプMX)は、ドメインのSimple Mail Transfer Protocol (SMTP)メールホストを指定します。
レコードデータフィールドは、レコードタイプの要件に応じて、1つまたは複数の情報要素で構成されます。たとえば、アドレスレコードにはアドレスのみが必要ですが、メール交換レコードには優先度とドメイン名が必要です。これらの情報要素は、空白で区切られたフィールドとして表されます。
ドメインexample.comのゾーンファイルの例を以下に示します。
$ORIGINexample.com.; designates the start of this zone file in the namespace$TTL3600; default expiration time (in seconds) of all RRs without their own TTL valueexample.com.INSOAns.example.com.username.example.com.(20200910257200360012096003600)example.com.INNSns; ns.example.com is a nameserver for example.comexample.com.INNSns.somewhere.example.; ns.somewhere.example is a backup nameserver for example.comexample.com.INMX10mail.example.com.; mail.example.com is the mailserver for example.com@INMX20mail2.example.com.; equivalent to above line, "@" represents zone origin@INMX50mail3; equivalent to above line, but using a relative host nameexample.com.INA192.0.2.1; IPv4 address for example.comINAAAA2001:db8:10::1; IPv6 address for example.comnsINA192.0.2.2; IPv4 address for ns.example.comINAAAA2001:db8:10::2; IPv6 address for ns.example.comwwwINCNAMEexample.com.; www.example.com is an alias for example.comwwwtestINCNAMEwww; wwwtest.example.com is another alias for www.example.commailINA192.0.2.3; IPv4 address for mail.example.commail2INA192.0.2.4; IPv4 address for mail2.example.commail3INA192.0.2.5; IPv4 address for mail3.example.com
ゾーンファイルには、最低限、ゾーンの権威マスターネームサーバーの名前と、ネームサーバーの管理責任者のメールアドレス(通常の@記号の代わりにピリオド文字を使用したドメイン名で表現)を含むSOA( Start of Authority)レコードを指定する必要があります。SOAレコードのパラメータには、タイミングと有効期限に関するパラメータ(シリアル番号、スレーブ更新間隔、スレーブ再試行時間、スレーブ有効期限、レコードをキャッシュする最大時間)のリストも指定されます。BINDなどの一部のネームサーバーでは、さらに少なくとも1つのNSレコードが必要です。
ゾーンファイルでは、末尾がピリオド文字で終わるドメイン名(上記の例の「 example.com. 」など)は完全修飾ドメイン名ですが、末尾がピリオドで終わらないドメイン名は現在のオリジンからの相対ドメイン名です(そのため、上記の例のwwwはwww.example.comを指します)。
ゾーンファイルは、ネームサーバーソフトウェアの設定ファイルによって参照されます。例えば、BINDでは通常、次のような記述が使用されます。
ゾーン "example.com" { タイプ master; ファイル "/var/named/db.example.com"; };DNSルートゾーンおよびトップレベルドメインのセットのゾーンファイルには、各ドメイン名に対応する権威ドメインネームサーバーのリソースレコードのみが含まれています。
一部のサーバーソフトウェアは、 localhostなどの特別なドメインまたはホスト名に対してリソースレコードを自動的に構成しますが、カスタマイズされたゾーンマスターファイルを使用することも可能です。
localhostの転送ゾーンを手動で設定する例を以下に示します。
$ORIGIN localhost. @ 86400 IN SOA @ root ( 1999010100 ; シリアル10800 ; 更新 (3 時間) 900 ; 再試行 (15 分) 604800 ; 有効期限 (1 週間) 86400 ; 最小 (1 日) ) @ 86400 IN NS @ @ 86400 IN A 127.0.0.1 @ 86400 IN AAAA ::1対応する逆ゾーンの定義は次のとおりです。
;; 127.0.0.1 および ::1 の逆ゾーン ファイル$TTL 1814400 ; 3 週間@ 1814400 IN SOA localhost. root.localhost. ( 1999010100 ; シリアル10800 ; 更新 (3 時間) 900 ; 再試行 (15 分) 604800 ; 有効期限 (1 週間) 86400 ; 最小 (1 日) ) @ 1814400 IN NS localhost. 1 1814400 IN PTR localhost.このファイルでは発信元が指定されていないため、この設定でIPv4とIPv6の両方に使用できます。
zone "0.0.127.in-addr.arpa" IN { type master ; file "r.local" ; } ; zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN { type master ; file "r.local" ; } ;同様のゾーンマスターファイルは、ブロードキャストアドレスとヌルアドレスの逆引き解決のために作成される場合があります。このようなゾーンファイルは、DNSサーバーが他の(場合によっては外部の)DNSサーバーを参照することを防ぎます。