ゾーンファイルには、特定のネーム空間についての情報が記載されており、デフォルトで 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>に置かれています。
namedが、このゾーンをリロードするべきであることがわかるよう <serial-number>は、ゾーンファイルが変更されるたびに インクリメントされます。<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> |
The <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つのブロックがこのゾーンで正しく添付されます。