ゾーンファイルには、ネーム空間についての情報が記載されており、デフォルトで namedの作業ディレクトリ /var/named/ に保存されます。各ゾーンファイル名は zoneステートメントのfileオプションデータに従い、通常 example.com.zoneなどのように、該当するドメインに関係し、ゾーンデータが記載されているファイルとして識別できるような名前が付けられます。
各ゾーンファイルには、ディレクティブと リソースレコードが含まれている場合があります。 ディレクティブは、ネームサーバーに対して、タスクを実行したり、ゾーンに特別の設定を適用したりするよう命令します。リソースレコードは、ゾーンのパラメータを定義し、個々のホストに識別を割り当てるものです。ディレクティブはオプションですが、リソースレコードはネームサービスをゾーンに提供するため必要です。
すべてのディレクティブとリソースレコードは、個々の行に記載する必要があります。
コメントは、ゾーンファイル内のセミコロン(;)の後に置かれます。
ディレクティブは、ドルサイン文字($)で始まり、その後にディレクティブの名前が続きます。通常はゾーンファイルの先頭に置かれます。
以下のディレクティブが最も一般的に使用されます:
$INCLUDE — ディレクティブが使用されている場所で、このゾーンファイル内に別のゾーンファイルをインクルードするようnamedを設定します。このディレクティブにより、おもなゾーンファイル以外にも追加ゾーン設定を保存することができます。
$ORIGIN — ホストだけしか指定していないレコードなど、資格のない レコードに付けるドメイン名を設定します。
たとえば、ゾーンファイルには以下のような行を含むことができます:
$ORIGIN example.com. |
後付きのピリオド(.)のないリソースレコードに使用されている名前はどれも、その後にexample.comが付加されます。
![]() | 注記 |
---|---|
ゾーンが/etc/named.conf内に指定されている場合は、$ORIGIN ディレクティブを使用する必要はありません。ゾーンの名前はデフォルトで$ORIGIN ディレクティブ値として使用されます。 |
$TTL — デフォルトのTime to Live(TTL)値を ゾーンに設定します。これは、ゾーンのリソースレコードが有効である時間を秒単位で与えられる数です。 各リソースレコードはそれぞれ自己のTTL値を含むことが可能で、それがこのディレクティブを上書きします。
この値を増加させると、リモートネームサーバーは、このゾーンの情報をより長時間キャッシュします。 こうすると、このゾーンについて行われるクエリの数は減りますが、リソースレコード変更を伝えるのに 要する時間は長くなります。
ゾーンファイルの主要コンポーネントはそのリソースレコードです。
ゾーンファイルリソースレコードには、多種のタイプがあります。最もよく使用されるタイプを以下に示します:
A — アドレスレコード。名前に割り当てるIPアドレスを 次の例のように指定します。
<host> IN A <IP-address> |
この<host>値が省略された場合、Aレコードは ネーム空間の一番上にデフォルトIPアドレスをポイントします。このシステムは、すべての非FQDN要求の対象となります。
example.comゾーンファイルについて、以下のAレコード例を考えてみましょう:
IN A 10.0.1.3 server1 IN A 10.0.1.5 |
example.com用の要求は10.0.1.3をポイントし、server1.example.comの 要求は10.0.1.5をポイントします。
CNAME — Canonical ネームレコードで、 1つのネームを別のネームにマップします。このタイプのレコードは エイリアス(別名)レコードとして知られています。
次の例では、namedに対して、<alias-name>に 送信された要求はすべてホスト、<real-name>をポイントすることを知らせます。 CNAMEレコードは、最も一般的にWebサーバーのwwwなどの共通名スキームを使用するサービスをポイントするのに使用されます。
<alias-name> IN CNAME <real-name> |
次の例で、1つのAレコードがあるホスト名をあるIPアドレスにバインドし、 CNAMEレコードが一般的に使用されるwwwホスト名をそれに ポイントしています。
server1 IN A 10.0.1.5 www IN CNAME server1 |
MX — Mail eXchangeレコード。 このゾーンによって制御されるネーム空間に送られるメールがどこへ行くのかを知らせます。
IN MX <preference-value> <email-server-name> |
上記の例では、<preference-value>により、 このネーム空間のEメールサーバーを数値的にランク付けすることが出来るため、幾つかの Eメールシステムに、他のEメールシステムよりも優先させることが出来ます。 最低の<preference-value>を持つMX リソースレコードは、他のものよりも優先されますが、同じ値で複数のEメールサーバーを 指定してEメールのトラフィックを分散させることができます。
<email-server-name>はホスト名か、 FQDNとすることが出来ます。
IN MX 10 mail.example.com. IN MX 20 mail2.example.com. |
この例では、最初のmail.example.comEメールサーバーは example.comドメイン宛のEメールを受信する時に、2行目の mail2.example.comEメールサーバーよりも優先されます。
NS — ネームサーバーレコード。あるゾーンに対して 権限のあるネームサーバーを発表する。
以下にNSレコードの例を示します:
IN NS <nameserver-name> |
<nameserver-name>はFQDNでなければなりません。
次に、2つのネームサーバーがあるドメインについて権限を持っていることが示されます。 これらのネームサーバーがどちらもスレーブであるか、それとも1つはマスターであるかは重要では ありません。これらは両方とも権限があると考えられます。
IN NS dns1.example.com. IN NS dns2.example.com. |
PTR — PoinTeRレコード。ネーム空間の別の部分を指すよう設計されています。
PTRレコードは、逆に IPアドレスから名前を示すため、主に逆引き名前解決に使用されます。使用中のPTRレコードの例については 項12.3.4を参照してください。
SOA — Start Of Authorityレコード。ネーム空間についての重要な権限ある情報をネームサーバーに示します。
SOAレコードは、ディレクティブの後に置かれ、ゾーンファイル内の最初のリソースレコードとなります。
以下の例は基本的なSOAレコードの構成を示しています。
@ IN SOA <primary-name-server> <hostmaster-email> ( <serial-number> <time-to-refresh> <time-to-retry> <time-to-expire> <minimum-TTL> ) |
@記号は、このSOAリソースレコードによって定義されている ネーム空間として$ORIGINディレクティブ($ORIGINディレクティブが 設定されていない場合にはゾーンの名前)を置きます。このドメインの権限であるプライマリネームサーバーのホスト名は <primary-name-server>ディレクティブであり、このネーム空間に関して連絡する人のEメールは<hostmaster-email>ディレクティブです。
<serial-number>ディレクティブは、 namedがゾーンをリロードするべきであることを知らせるためにゾーンファイルが変更されるたび数が増えていく数値です。 <time-to-refresh>ディレクティブは、ゾーンに変更が行われた場合に、マスターネームサーバーに問い合わせるまでの待機時間を決定するためにスレーブサーバーが使用する数値です。<serial-number>ディレクティブは、スレーブが古いゾーンデータを使用しているかどうか、それに従いリフレッシュすべきなのかどうかを判断するためにスレーブサーバーによって 使用される数値です。
<time-to-retry>ディレクティブは、マスターネームサーバーが応答していない場合に、リフレッシュ要求を発行するまでの待機間隔をスレーブサーバー決定するのに使用する数値です。マスターが、<time-to-expire>ディレクティブで指定された時間内にリフレッシュ要求に応答しなかった場合、スレーブサーバーはそのネーム空間についての要求の権限を持つものとして応答を停止します。
<minimum-TTL>ディレクティブは、 他のネームサーバーがゾーンの情報をキャッシュする時間です。
BINDを設定する際は、時間はすべて秒数で指定します。しかし、分(M)、 時間(H)、日(D)、週(W)など秒以外の時間単位を指定するときに短縮形を使用することもできます。 表12-1の表は、秒数での時間量と他の形式による相当時間を示します。
秒 | 他の時間単位 |
---|---|
60 | 1M |
1800 | 30M |
3600 | 1H |
10800 | 3H |
21600 | 6H |
43200 | 12H |
86400 | 1D |
259200 | 3D |
604800 | 1W |
31536000 | 365D |
表 12-1. 他の時間単位と比較した秒数
以下の例は、SOAリソースレコードが実際の値で設定されると、どのように表示されるかを示したものです。
@ IN SOA dns1.example.com. hostmaster.example.com. ( 2001062501 ; serial 21600 ; refresh after 6 hours 3600 ; retry after 1 hour 604800 ; expire after 1 week 86400 ) ; minimum TTL of 1 day |
個別に見た場合、ディレクティブとリソースレコードは把握するのが困難です。しかし、 共通ファイルとして一緒に置くと理解しやすくなります。
以下に非常に基本的なゾーンファイルの例を示します。
$ORIGIN example.com. $TTL 86400 @ IN SOA dns1.example.com. hostmaster.example.com. ( 2001062501 ; serial 21600 ; refresh after 6 hours 3600 ; retry after 1 hour 604800 ; expire after 1 week 86400 ) ; minimum TTL of 1 day IN NS dns1.example.com. IN NS dns2.example.com. IN MX 10 mail.example.com. IN MX 20 mail2.example.com. IN A 10.0.1.5 server1 IN A 10.0.1.5 server2 IN A 10.0.1.7 dns1 IN A 10.0.1.2 dns2 IN A 10.0.1.3 ftp IN CNAME server1 mail IN CNAME server1 mail2 IN CNAME server2 www IN CNAME server2 |
この例では、標準ディレクティブとSOA値が使われています。権限のあるネームサーバーは、 dns1.example.comとdns2.example.comに設定され、これらをそれぞれ 10.0.1.2と10.0.1.3に結び付けるAレコードがあります。
MXレコードで設定されるEメールサーバーは、CNAMEレコードを介して server1とserver2をポイントします。server1と server2の名前は最後がピリオド(.)で終わっていないため、その後ろに $ORIGINドメインが置かれ、server1.example.comと server2.example.comに拡張されます。関連Aリソースレコードを通して、 そのIPアドレスを決定することができます。
標準名のftp.example.comとwww.example.comで 利用できる一般的なFTPとWebのサービスは、CNAMEレコードを使って、 これらの名前に合ったサービスにポイントされます。
逆引き名前解決ゾーンファイルは、特定のネーム空間の IPアドレスを FQDN に変換します。これは標準ゾーンファイルに非常に似ていますが、PTRリソースレコードが IPアドレスを完全修飾ドメイン名に連結するのに使われるという点で異なっています。
PTRレコードは以下のようになります:
<last-IP-digit> IN PTR <FQDN-of-system> |
<last-IP-digit>は、特定のシステムの FQDNをポイントする IPアドレスの最後の数です。
次の例では、10.0.1.20から10.0.1.25までの IPアドレスが対応するFQDNにポイントされています。
$ORIGIN 1.0.10.in-addr.arpa. $TTL 86400 @ IN SOA dns1.example.com. hostmaster.example.com. ( 2001062501 ; serial 21600 ; refresh after 6 hours 3600 ; retry after 1 hour 604800 ; expire after 1 week 86400 ) ; minimum TTL of 1 day IN NS dns1.example.com. IN NS dns2.example.com. 20 IN PTR alice.example.com. 21 IN PTR betty.example.com. 22 IN PTR charlie.example.com. 23 IN PTR doug.example.com. 24 IN PTR ernest.example.com. 25 IN PTR fanny.example.com. |
このゾーンファイルは、named.confファイルのzoneステートメントで サービスにコールされます。以下のようになります:
zone "1.0.10.in-addr.arpa" IN { type master; file "example.com.rr.zone"; allow-update { none; }; }; |
ゾーンの命名法を除き、この例と標準zoneステートメントの間にはほとんど違いがありません。逆引き名前解決ゾーンでは、IPアドレスの最初の3つのブロックを逆にし、その後に .in-addr.arpa を添付する必要があることに注意してください。これにより逆引き名前解決ゾーンファイルで使用される IP番号の1つのブロックがこのゾーンで正しく添付されます。