21.6 ゾーンファイル

ゾーンファイルは2種類必要です。一方はIPアドレスをホスト名に割り当て、もう一方は逆にIPアドレスのホスト名を提供します。

ヒント: ゾーンファイルでのピリオドの使用

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

最初に、ドメインexample.comの責任を負うゾーンファイルexample.com.zoneについて検討します(例 21-6参照)。

例 21-6 ファイル /var/lib/named/example.com.zone

1.  $TTL 2D 
2.  example.com. IN SOA      dns  root.example.com. ( 
3.               2003072441  ; serial
4.               1D          ; refresh
5.               2H          ; retry
6.               1W          ; expiry
7.               2D )        ; minimum
8.  
9.               IN NS       dns 
10.              IN MX       10 mail
11. 
12. gate         IN A        192.168.5.1 
13.              IN A        10.0.0.1 
14. dns          IN A        192.168.1.116 
15. mail         IN A        192.168.3.108 
16. jupiter      IN A        192.168.2.100
17. venus        IN A        192.168.2.101
18. saturn       IN A        192.168.2.102
19. mercury      IN A        192.168.2.103
20. ntp          IN CNAME    dns 
21. dns6         IN A6  0    2002:c0a8:174::
1行目:

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

2行目:

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

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

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

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

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

3行目:

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

4行目:

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

5行目:

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

6行目:

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

7行目:

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

9行目:

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

10行目:

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

行12–19:

これらは、ホスト名に1つ以上のIPアドレスが割り当てられている実際のアドレスレコードです。ここでは、名前が.なしでリストされています。これは、これらの名前にはドメインが含まれていないためです。したがって、 これらの名前にはすべて、example.comが追加されます。ホストgateには、ネットワークカードが2枚搭載されているので、2つのIPアドレスが割り当てられます。ホストアドレスが従来型のアドレス(IPv4)の場合、レコードにAが付きます。アドレスがIPv6アドレスの場合、エントリにAAAA が付きます。

メモ: IPv6の構文

IPv6レコードの構文は、IPv4と少し異なっています。断片化の可能性があるため、アドレスの前に消失したビットに関する情報を入力する必要があります。IPv6アドレスを必要な数の0で満たすには、アドレス内の正しい位置に2つコロンを追加します。

pluto     AAAA 2345:00C1:CA11::1234:5678:9ABC:DEF0
pluto     AAAA 2345:00D2:DA11::1234:5678:9ABC:DEF0
20行目:

エイリアスntpdnsの別名として使用できます(CNAME一般名という意味)。

擬似ドメインin-addr.arpaは、IPアドレスからホスト名への逆引き参照に使用されます。このドメインの前に、IPアドレスのネットワーク部分が逆順に指定されます。たとえば、192.168は、168.192.in-addr.arpaに解決されます。参照先 例 21-7.

例 21-7 逆引き

1.  $TTL 2D
2.  168.192.in-addr.arpa.   IN SOA dns.example.com. root.example.com. (
3.                          2003072441      ; serial
4.                          1D              ; refresh
5.                          2H              ; retry
6.                          1W              ; expiry
7.                          2D )            ; minimum
8.
9.                          IN NS           dns.example.com.
10. 
11. 1.5                     IN PTR          gate.example.com. 
12. 100.3                   IN PTR          www.example.com. 
13. 253.2                   IN PTR          cups.example.com. 
1行目:

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

2行目:

この設定ファイルは、ネットワーク192.168の逆引きを有効にします。ゾーン名は168.192.in-addr.arpaであり、これはホスト名に追加しません。そのため、すべてのホスト名はドメインの最後に.を付けた完全形式で入力します。残りのエントリは、前のexample.comの例で説明した通りです。

行3–7:

前のexample.comの例を参照してください。

9行目:

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

行 11–13:

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

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