BINDは大きく分けてBIND4 BIND8 BIND9 の三種類になります。UNIXの醍醐味になる機能なのでほとんど標準で入っています。まずはじめに自分の環境にどのバージョンが入っているのか知っておかなくてはなりません。その三種類は大きく異なります。Solaris8の環境でしたら標準インストールでBIND8が入っています。(入れた覚えがありませんので、始めから入っていたと思います)


 

BIND:名前解決
DNSは一つ間違うとネットワークそのものを崩壊してしまう重要な機関です。以下の事に注意して導入していきましょう。

1)以前の設定から変更する場合は必ずバックアップを取っておいて下さい。
2)グローバルIPの名前解決も行う場合はport53を必ず開けておいて下さい。リゾルバーのリクエストはUDPを使うのでUDPを通 すようにしておかなくてはなりません。
3)MXレコードの書き換えはメールサーバーのエラーを見ながら調節してください。一度にメールサーバーのドメイン名とMXレコードを書き換えるのは危険です。
4)セカンダリーネームサーバーを持つ場合、できるだけ(ネットワーク上)遠い位 置に置くことをお勧めします。

名前解決の原理についてはここでは解説しません。

 

動作と設定

DNSには重要なファイルが3つあります。
1 name.root
2 name.conf (BIND8) & name.boot (BIND4)
3 localhostのゾーンテーブル
name.rootの中をみるとわかるように ルートDNS情報が記されています。このファイルは定期的に更新されるそうです。つまりリゾルバからの問い合わせに必要なものです。自分の管理するゾーンには関係ないでしょう。(それは自分のゾーンテーブルを知っているは自分のDNSサーバーだけなのですから)

では hoge.com のhoge-zoneについて考えていきます。

hoge-zoneのテーブルを持っているネームサーバーは誰なのでしょうか?それは 一つ上のゾーンを管理しているネームサーバーが知っています(注意:com-zoneを持つネームサーバーはルートDNSではありません。ルートDNSは「.-zone」のテーブルを持っているネームサーバーの事です)。と、言うことはhoge-zoneテーブルを持つネームサーバーを一つ上に教えておかなくてはいけません。その手続きは各自でおこなっておく必要があります。

ここでの登録済みネームサーバーは 定番のns.hoge.comとします。
以下がその時のhoge-zoneテーブル情報を持つnamed.confの設定です。
逆マッピング zone "11.10.201.in-addr.arpa" in は201.10.11.* の逆マッピングのゾーンテーブルですがネットワークアドレスが201.10.11.10など限られた範囲の場合 10h.を付けて下さい。つまり zone "10h.11.10.201.in-addr.arpa" in のようになります。

options {
directory "/var/named";  ゾーンテーブルの保存先
};
zone "0.0.127.in-addr.arpa" in { ローカルの逆マッピング (BIND4なら.revという使い方をします)
type master;
file "db.local"; 127.0.0.のテーブルファイル名
};
zone "." in { ルートDNSの情報定義
type hint;
file "named.root";
};
zone "hoge.com" in {  hogeゾーンのテーブルファイルの定義
type master;
file "hoge.com.zone";
};
zone "11.10.201.in-addr.arpa" in { hogeゾーンの逆マッピング
type master;
file "11.10.201.in-addr.arpa.zone";
};

named.rootは元のBINDに付属しているものを使うのが良いでしょう。なければ他のサイトから持ってきて下さい。 named.rootはrootDNSサーバーの情報がしるされているだけです。リゾルバはこれを使って.-zoneに問い合わせに行きます.

db.localはlocal情報を持っています。利用するかしないかに関係なく絶対に必要なファイルですので作成してください。

@ IN SOA localhost. postmaster.localhost (
     1 ; Serial Number
     10800 ; Refresh after 3 hour
     3600 ; Retry after 1 hour
     604800 ; TTL
     86400 ) ; Minimum TTL of 1 day
@ IN  NS   localhost.
1  IN  PTR localhost.

 

11.10.201.in-addr.arpa.zone の設定です。

@ IN SOA ns.hoge.com. admin.hoge.com (
     1 ; Serial Number
     10800 ; Refresh after 3 hour
     3600 ;Retry after 1 hour
     604800 ; TTL 86400 ) ; Minimum TTL of 1 day

IN   NS  ns.hoge.com.
230 IN  PTR ns.hoge.com.
228 IN  PTR penguin.hoge.com.


hoge.com.zoneの設定が最大のポイントになります。

@ IN SOA ns.hoge.com. admin.hoge.com (
    1 ; Serial Number
    1080 ; Refresh after 3 hour
    360 ; Retry after 1 hour
    6048 ; TTL
    864 ) ; Minimum TTL of 1 day
@    IN NS  ns.hoge.com.
     IN MX 10 coara
ns    IN A   210.10.11.230
coara   IN  A  210.10.11.230
penguin  IN  A   210.10.11.228
warp   IN  A   210.13.90.54
www   IN  CNAME  warp

以上で BINDの設定は完了です。ここで hoge.com.zoneの記述で注意しなければならないところをまとめてみました。

@    IN NS  ns.hoge.com.
     IN MX 10 coara

@は起点をあらわします。
2行めにホスト名がなくMXレコードを記述しているのは 前の行の追記をあらわしています。つまり

ns    IN A 210.10.11.230
ns    IN CNAME 210.10.11.230
ns    IN MX 210.10.11.230

と書く必要はなく

ns    IN A 210.10.11.230
     IN CNAME 210.10.11.230
     IN MX 210.10.11.230

といった省略が可能です。

設定がおわるとBINDを再起動してください。そして今後、BINDの設定ファイルを変更するたびに、必ずnamedを再起動してください。

# pkill -HUP in.named


zoneファイルの記述方法

レコード>
SOA
SOAレコードはNICに申請したネームサーバーのDNSをつけでください。
NS
そのゾーンテーブルをもつネームサーバーの事です。
MX
メールサーバーの事でありホスト名を省略できるようになります。

シリアルナンバー>
セカンダリーネームサーバーは 一般にルートネームサーバーを経由してプライマリーネームサーバーのゾーンテーブルの情報を取得しにいきます。そこでこのシリアルナンバーを照合し、自分自身(セカンダリーネームサーバー)のシリアルナンバーより大きい数字なら ゾーンテーブルの情報を更新します。プライマリーネームサーバーのシリアルナンバーにより新しい情報か古い情報かを見分けるわけです。つまりセカンダリーDNSを利用していなければ問題ありませんが、利用している場合は ゾーンテーブルを書き換えた後、必ず今よりも大きい数字にしてセカンダリーネームサーバーに更新した事を知らせなければならないわけです。



<関連書籍の購入>
DNS&BIND(第4版)

DNS&BINDクックブック―ネームサーバ管理者のためのレシピ集


<戻る>