検索
連載

すべての基礎、マスター・ゾーンサーバの設定実用 BIND 9で作るDNSサーバ(2)(2/3 ページ)

今回は、マスター・ゾーンサーバとキャッシュサーバの機能を1つのnamedで実現してみよう。シンプルな構成だが、BINDの基本をマスターするにはちょうどいいだろう。(編集局)

Share
Tweet
LINE
Hatena

ゾーンファイルの作成

 次に、/var/named下に/etc/named.confで記述したすべてのゾーンファイルを作成します。

named.ca

 キャッシュサーバとして動作するためには、ルートサーバがどこにあるのかを正しく知っておく必要があります。そのためのゾーンファイルをftp://ftp.rs.internic.net/domain/named.rootから入手し、/var/named/named.caとして保存します。

 ルートサーバは不変であると思われがちですが、頻繁でないにしろ更新されることがあります。2002年11月にはDoS攻撃への対策から、5年ぶりにルートサーバに変更が加えられました。BINDはnamed起動時にルートサーバに接続し、自動的に最新のルートサーバ一覧情報に置き換えますが、たまには最新のファイルが公開されていないか確認しましょう。

example.zone

 example.zoneは、自身で管理しているドメインの正引き用ゾーンファイルになります。ここは皆さんの環境に合わせて修正を加えてください。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

(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レコードの先頭行を見てみましょう。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 「dns.example.jp.」はプライマリゾーンサーバ名、「root.example.jp.」はドメイン管理者のメールアドレスです。適宜自分の環境に合わせて置き換えてください。その際、メールアドレス中の「@」を「.」に置き換えることと、最後に「.」を付けることに注意しましょう。なお、管理者の情報はRP(Responsible Person)情報として公開されます。

example.rev

 example.revは逆引き用ゾーンファイルです。IPアドレスに対するホスト名を記述する際は、PTRレコードを用います。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

local.zone

 local.zoneはループバックアドレスの名前解決に使用します。具体的には、localhost→127.0.0.1正引き情報を提供します。一度設定すれば、以降は変更する必要はありません。local.zoneのTTLは長めに設定しても構いません。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

local.rev

 local.revは、ループバックアドレスの逆引き用に使用されます(127.0.0.1→localhost)。これも一度設定してしまえば、ほとんど修正を加えることがありません。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

/var/run/named/named.pid

 最後に、/var/run/named/named.pidが作成されるように、/var/run/namedディレクトリをnamedユーザー/namedグループで作成します。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 カーネル2.4.xを採用している環境であれば/var/run/named.pidを作ることが可能ですが、カーネル2.2.x環境ではnamedデーモンをnamedユーザーで起動すると/var/run直下にpidファイルを作れずエラーとなります。ここでは、どちらの環境でもうまくいくように/var/run/named/named.pidとしています。

TTLとネガティブキャッシュ

 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を短くする、といったことが可能になります。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る