次に、/var/named下に/etc/named.confで記述したすべてのゾーンファイルを作成します。
キャッシュサーバとして動作するためには、ルートサーバがどこにあるのかを正しく知っておく必要があります。そのためのゾーンファイルをftp://ftp.rs.internic.net/domain/named.rootから入手し、/var/named/named.caとして保存します。
ルートサーバは不変であると思われがちですが、頻繁でないにしろ更新されることがあります。2002年11月にはDoS攻撃への対策から、5年ぶりにルートサーバに変更が加えられました。BINDはnamed起動時にルートサーバに接続し、自動的に最新のルートサーバ一覧情報に置き換えますが、たまには最新のファイルが公開されていないか確認しましょう。
example.zoneは、自身で管理しているドメインの正引き用ゾーンファイルになります。ここは皆さんの環境に合わせて修正を加えてください。
$TTL 86400 (1) |
/var/named/example.zone |
(1) TTLに86400秒(1日)を指定
(2) ここからSOAレコード
(3) これらの値はマスター・ゾーンサーバとスレーブ・ゾーンサーバ間でやりとりする際に使用される。次回以降に説明
(4) ここまでがSOAレコード
(5) NSレコード
(6) Aレコード
example.zoneには、SOA、NS、Aなどの「レコード」と呼ばれる記述が見られます。それぞれのレコードには「主なDNSレコードの種類」のような意味があります。
ここで、1行目に記述されている「$TTL」に注目します。TTLは、外部のDNSがあなたのドメイン情報を参照してキャッシュする際に、どれくらいの期間情報を保持するかを指定するものです。しかし、2行目から始まるSOAレコードと呼ばれるブロックにもTTLの記述があります。一見無駄な設定のように思えるかもしれませんが、大変重要な意味を持っています。これについては、後述の「TTLとネガティブキャッシュ」を参照してください。
次に、SOAレコードの先頭行を見てみましょう。
@ IN SOA dns.example.jp. root.example.jp. (......) |
「dns.example.jp.」はプライマリゾーンサーバ名、「root.example.jp.」はドメイン管理者のメールアドレスです。適宜自分の環境に合わせて置き換えてください。その際、メールアドレス中の「@」を「.」に置き換えることと、最後に「.」を付けることに注意しましょう。なお、管理者の情報はRP(Responsible Person)情報として公開されます。
example.revは逆引き用ゾーンファイルです。IPアドレスに対するホスト名を記述する際は、PTRレコードを用います。
$TTL 86400 |
/var/named/example.rev |
local.zoneはループバックアドレスの名前解決に使用します。具体的には、localhost→127.0.0.1正引き情報を提供します。一度設定すれば、以降は変更する必要はありません。local.zoneのTTLは長めに設定しても構いません。
$TTL 86400 |
/var/named/local.zone |
local.revは、ループバックアドレスの逆引き用に使用されます(127.0.0.1→localhost)。これも一度設定してしまえば、ほとんど修正を加えることがありません。
$TTL 86400 |
/var/named/local.rev |
最後に、/var/run/named/named.pidが作成されるように、/var/run/namedディレクトリをnamedユーザー/namedグループで作成します。
# mkdir /var/run/named/ |
カーネル2.4.xを採用している環境であれば/var/run/named.pidを作ることが可能ですが、カーネル2.2.x環境ではnamedデーモンをnamedユーザーで起動すると/var/run直下にpidファイルを作れずエラーとなります。ここでは、どちらの環境でもうまくいくように/var/run/named/named.pidとしています。
TTLはデフォルトのキャッシュ有効期限(Time To Live:TTL)を指定するものですが、SOAレコードの中にもTTLの値を見つけることができます。これを理解するには、キャッシュの機能を理解しておく必要があります。
通常、キャッシュサーバはDNS問い合わせに成功したもの、すなわち「www.atmarkit.co.jp→211.4.250.170(または211.4.250.170→www.atmarkit.co.jp)」の結果をー時的に蓄えます。その一方で、「dummy.atmarkit.co.jp→NXDOMAIN(ドメインが存在しない)」といった、失敗した結果をキャッシュする「ネガティブキャッシュ」も併せ持っています。
2つのキャッシュの性質を考えると、同じTTLの値を使用するのはあまり有効ではありません。そこで、RFC 2308(http://www.ietf.org/rfc/rfc2308.txt?number=2308)で新たにネガティブキャッシュが定義されました。
これを受けて、BIND 8.2以降ではいままでのSOAレコードにあるデフォルトTTLの値をネガティブキャッシュ用のTTLとし、新たに$TTL行を設けてゾーンデータのデフォルトTTLの値を指定するようにしました。また、ゾーン全体に対してTTLを設定する以外に、レコードごとの指定もできます。これにより、変更を予定しているホストのレコードは個別にTTLを短くする、といったことが可能になります。
(略) |
/var/named/example.zone(TTL設定例) |
Copyright © ITmedia, Inc. All Rights Reserved.