20.5 ゾーンファイル

ゾーンファイルは2種類必要です。1つはIPアドレスをホスト名に割り当てるゾーンファイル、もう1つは逆にホスト名をIPアドレスに割り当てるゾーンファイルです。

[Tip]ゾーンファイルでのピリオドの使用

.は、ゾーンファイル内で重要な意味を持ちます。末尾に.のホスト名を指定すると、ゾーンが追加されます。完全なホスト名を完全なドメイン名とともに指定する場合は、末尾に.を付けて、ドメインが追加されないようにします。ピリオドの打ち忘れや位置の間違いは、ネームサーバ設定エラーの原因としておそらく最も頻繁に見られるものです。

最初に、ドメインworld.cosmosに責任を負うゾーンファイルworld.zoneについて示します(例 20.6. 「/var/lib/named/world.zoneファイル」参照)。

例 20.6 /var/lib/named/world.zoneファイル

$TTL 2D
world.cosmos. IN SOA      gateway  root.world.cosmos. (
            2003072441  ; serial
            1D          ; refresh
            2H          ; retry
            1W          ; expiry
            2D )        ; minimum

            IN NS       gateway
            IN MX       10 sun

gateway     IN A        192.168.0.1
            IN A        192.168.1.1
sun         IN A        192.168.0.2
moon        IN A        192.168.0.3
earth       IN A        192.168.1.2
mars        IN A        192.168.1.3
www         IN CNAME    moon
1行目:

$TTLは、このファイルのすべてのエントリに適用されるデフォルトの寿命(time to live)です。この例では、エントリは2日間(2 D)有効です。

2行目:

ここから、SOA (start of authority)制御レコードが始まります。

  • 管理対象のドメイン名は、先頭にあるworld.cosmosです。これは、末尾に. (ピリオド)が付いています。ピリオドを付けないと、ゾーンが再度末尾に追加されてしまいます。 あるいはピリオドを@で置き換えることもできます。 その場合は、ゾーンが/etc/named.confの対応するエントリから抽出されます。

  • IN SOAの後には、このゾーンのマスタであるネームサーバの名前を指定します。これらの名前は末尾に. (ピリオド)が付いていないので、gatewayからgateway.world.cosmosに拡張されます。

  • この後には、このネームサーバの責任者の電子メールアドレスが続きます。@記号は既に特別な意味を持つので、ここでは代わりに. (ピリオド)を使用します。root@world.cosmosの場合、エントリはroot.world.cosmos.となります。ここでもゾーンが追加されないよう、.を末尾につける必要があります。

  • (は、)までの行をすべてSOAレコードに含める場合に使用します。

3行目:

シリアル番号は任意の番号で、このファイルを変更するたびに増加します。変更があった場合、セカンダリネームサーバ(スレーブサーバ)に通知する必要があります。これには、日付と実行番号をYYYYMMDDNNという形式で表記した10桁の数値が、慣習的に使用されています。

4行目:

リフレッシュレートは、セカンダリネームサーバがゾーンserial numberを確認する時間間隔を指定します。この例では1日です。

5行目:

再試行間隔は、エラーが生じた場合に、セカンダリネームサーバがプライマリサーバに再度通知を試みる時間間隔を指定します。この例では2時間です。

6行目:

有効期限は、セカンダリネームサーバがプライマリサーバに再通知できなかった場合に、キャッシュしたデータを廃棄するまでの時間枠を指定します。この例では1週間です。

7行目:

SOAレコードの最後のエントリは、ネガティブキャッシュTTLです。これは、DNSクエリが解決できないという他のサーバからの結果をキャッシュしておく時間です。

9行目:

IN NSは、このドメインを担当するネームサーバを指定します。これらの名前は末尾に. (ピリオド)が付いていないので、gatewayからgateway.world.cosmosに拡張されます。このように、プライマリネームサーバと各セカンダリネームサーバに1つずつ指定する行がいくつかあります。/etc/named.confnotifynoに設定しない限り、ゾーンデータが変更されると、ここにリストされているすべてのネームサーバにそれが通知されます。

10行目:

MXレコードは、ドメインworld.cosmos宛ての電子メールを受領、処理、および転送するメールサーバを指定します。この例では、ホストsun.world.cosmosが指定されています。ホスト名の前の数字は、プリファレンス値です。複数のMXエントリが存在する場合、値が最も小さいメールサーバが最初に選択され、このサーバへのメール配信ができなければ、次に小さい値のメールサーバが試みられます。

12~17行目:

これらは、ホスト名に1つ以上のIPアドレスが割り当てられている実際のアドレスレコードです。ここにリストされている名前にはドメインが含まれていないので、. (ピリオド)が付いておらず、その結果、すべての名前にworld.cosmosが追加されることになります。ホストgatewayは、ネットワークカードが2枚搭載されているので、2つのIPアドレスが割り当てられます。ホストアドレスが従来型のアドレス(IPv4)の場合、レコードにAが付きます。アドレスがIPv6アドレスの場合、エントリにA6が付きます。以前は、IPv6アドレスがAAAAで示されていましたが、現在では廃止されました。

[Note]A6構文

A6レコードは、AAAAと多少異なる構文を持ちます。断片化の可能性があるため、アドレスの前に消失したビットに関する情報を入力する必要があります。完全に断片化されないアドレスを使用する場合でも、この情報を入力する必要があります。この構文を持つ古いAAAAレコードの場合

 pluto IN            AAAA 2345:00C1:CA11:0001:1234:5678:9ABC:DEF0
 pluto IN            AAAA 2345:00D2:DA11:0001:1234:5678:9ABC:DEF0

消失したビットに関する情報はA6形式で追加する必要があります。上記の例は完全なので(いずれのビットも消失していない)、このレコードのA6形式は次のようになります。

 pluto  IN            AAAA 0 2345:00C1:CA11:0001:1234:5678:9ABC:DEF0
 pluto  IN            AAAA 0 2345:00D2:DA11:0001:1234:5678:9ABC:DEF0

IPv6マッピングでIPv4アドレスを使用しないでください。ホストがIPv4アドレスを持つ場合、A6ではなくAレコードを使用します。

18行目:

エイリアスwwwmondの別名として使用できます(CNAMEcanonical name(キャノニカル名)という意味です)。

擬似ドメインin-addr.arpaは、IPアドレスからホスト名への逆引き参照に使用されます。このドメインの前に、IPアドレスのネットワーク部分が逆順に指定されます。たとえば、192.168.1は、1.168.192.in-addr.arpaに解決されます。例 20.7. 「逆引き」を参照してください。

例 20.7 逆引き

    

$TTL 2D
1.168.192.in-addr.arpa. IN SOA gateway.world.cosmos. root.world.cosmos. (
                        2003072441      ; serial
                        1D              ; refresh
                        2H              ; retry
                        1W              ; expiry
                        2D )            ; minimum

                        IN NS           gateway.world.cosmos.

1                       IN PTR          gateway.world.cosmos.
2                       IN PTR          earth.world.cosmos.
3                       IN PTR          mars.world.cosmos.
1行目:

$TTLは、このファイルのすべてのエントリに適用される標準のTTLです。

2行目:

この設定ファイルは、ネットワーク192.168.1.0の逆引きを有効にします。ゾーン名は1.168.192.in-addr.arpaであり、これはホスト名に追加しません。したがって、すべてのホスト名は完全な形で、つまりドメインと末尾の. (ピリオド)が付いて指定されます。残りのエントリは、前のworld.cosmosの例の記述と同じです。

3~7行目:

前の例のworld.cosmosを参照してください。

9行目:

正引きの場合と同様、この行は、このゾーンを担当するネームサーバを指定します。ただし、ホスト名はドメインと末尾の. (ピリオド)が付いた完全な形で指定されます。

11~13行目:

これらはそれぞれのホスト上でのIPアドレスを示すポインタレコードです。IPアドレスの最後のオクテットのみが、行の最初に入力され、末尾に. (ピリオド)は付きません。ゾーンをこれに追加すると(.in-addr.arpaを付けずに)、完全なIPアドレスが逆順で生成されます。

通常、異なるバージョンのBIND間のゾーン転送は、問題なく行えるはずです。