書式がわかったところで、具体的なゾーン設定例を挙げる。
ルートサーバの定義ファイル。 ftp://ftp.rs.internic.net/domain/named.root をダウンロードしてリネーム。運用開始後も、時々シリアルナンバーを比較して、必要なら更新。
localhost => 127.0.0.1 の解決をする正引き。
$TTL 86400
@       IN      SOA     localhost.  root.hoge.cxm. (
  2004040101 ;serial
  28800      ;refresh 8h
  14400      ;retry 4h
  604800     ;expire 1w
  10800 )    ;nttl 3h
        IN      NS      localhost.
        IN      A       127.0.0.1
127.0.0.1 => localhost の逆引き。
$TTL 86400
@       IN      SOA     localhost.  root.hoge.cxm. (
  2004040101 ;serial
  28800      ;refresh 8h
  14400      ;retry 4h
  604800     ;expire 1w
  10800 )    ;nttl 3h
        IN      NS      localhost.
1       IN      PTR     localhost. 
ゾーン "hoge.cxm" の正引き。サーバが2台 (ローカルでの名前 host1 と host2) 
あり、それぞれにメールと WWW を提供しているとする。加えて、ゲイトウェイであるルータ (rt0) も登録してある。
もし、データ部だけが異なる同一のレコードがあった場合、named はクエリを受ける度にいずれかをランダムに返す。このメカニズムは、同じ内容を持つWEB サーバを複数置き、負荷分散を行う場合などに利用される。
$TTL 86400
@       IN      SOA     ns.hoge.cxm.  root.hoge.cxm. (
  2004040101 ;serial
  28800      ;refresh 8h
  14400      ;retry 4h
  604800     ;expire 1w
  10800 )    ;nttl 3h
        IN      NS      ns.hoge.cxm.
        IN      MX      10  mail.hoge.cxm.
        IN      MX      20  mail2.hoge.cxm.
host1   IN      A       192.168.0.1
mail    IN      A       192.168.0.1
ns      IN      A       192.168.0.1
www     IN      CNAME   host1
host2   IN      A       192.168.0.2
mail2   IN      A       192.168.0.2
www2    IN      CNAME   host2
rt0     IN      A       192.168.0.254
ゾーン "0.168.192.in-addr.arpa" の逆引き。
$TTL 86400
@       IN      SOA     ns.hoge.cxm.  root.hoge.cxm. (
  2004040101 ;serial
  28800      ;refresh 8h
  14400      ;retry 4h
  604800     ;expire 1w
  10800 )    ;nttl 3h
        IN      NS      ns.hoge.cxm.
1       IN      PTR     host1.hoge.cxm.
2       IN      PTR     host2.hoge.cxm.
254     IN      PTR     rt0.hoge.cxm.
RedHat系では、named の起動スクリプト /etc/init.d/named の中で、起動オプションを /etc/sysconfig/named ファイルから拾うようにできている。なかなか良くできていて、特に次章の chroot の際に実感。敢えて編集する必要はないが、例えばログをもっと詳細にしたいなら、
OPTIONS="-d 1"
としておけば、起動時の初期デバグレベルが 1 になる。その他の主なオプションは以下:
| -u user | named を user 権限で動かす。ソケットの作成など root 権限の必要な処理が完了後 user へ setuid する仕組み | 
| -p port | 通常は 53 となる named のポートを変えることができる | 
| -t dir | dir へ chroot する。 chroot 環境への移行を参照のこと | 
named.conf で syslogd を経由しないログを定義した場合には、それに合わせてカスタムログファイルを作っておく。 /var/log/ ディレクトリは named にとって書き込み権限がないため、このようにディレクトリを一段挟む必要がある。この例における /var/log/named/ ディレクトリのパーミションは named.named の 700 が妥当。
root# touch /var/log/named/named_custom.log root# chown named.named /var/log/named/named_custom.log root# chmod 600 /var/log/named/named_custom.log
syslogd を通じて書き出すログファイルは、特に作っておく必要はない。パーミションに関しては PID ファイルにも同様なことが言えるが、 PID ファイルそのものは勝手にできるので放っておけばよい。
rndc は、named を操作するためのユーティリティ。デフォルトでは TCP の 953 ポートを使って named と通信を行う。 named との通信を成立させるためには、 named 
と rndc が同じ定義名の同じキーフレーズを使わなければならない。同一のファイルである必要は無い。
いろいろと意地悪なテストをしてみたところ、named は named.conf の "controls" 
および "key" (今回の設定では別ファイルでinclude) セクションで定義したキーファイルを起動時に 1 度だけ読み込むが、rndc は呼び出す度に rndc.conf 
で定義したキーファイルを読み込む。 rndc ユーティリティは root にしか使わせないので、 rndc.conf 
と rndc.key のパーミションは root.root の 600 
にする。
rndc.conf と rndc.key を作るには、BIND に付属するツール rndc-confgen を使用する。
| -a | /etc/rndc.key ファイルだけ生成し、rndc.conf は作らない | 
| -b byte | キー長。生成されるキーは HMAC-MD5。最大長の 512 を指定すべき。デフォルトは128 | 
| -k name | キーの定義名。デフォルトは "rndc-key" | 
やり方は好みによるが、BIND のインストール時に作られた /etc/rndc.conf (好みによっては rndc.key も) をとっておくならリネームしておき、
root# rndc-confgen -b 512 -k rndckey > /etc/rndc.conf
出来上がった rndc.conf を下記のように編集。赤字部分は、切り取って rndc.key ファイルに貼り付ける。文末に吐き出される named.conf の設定のサンプルも、参考に見るだけ見ておくとためになる。なお、 rndc は今のところ HMAC-MD5 の対称鍵しか使えない。本当は RSA 非対称鍵が使えるといいのだが...
key "rndckey" {                                         # 切り取ってrndc.keyへ
        algorithm       hmac-md5;
        secret "***********************************************************";
};
options {
        default-key     "rndckey";
        default-server  localhost;
        default-port    953;
};
server localhost {
        key     "rndckey";
};
include "/etc/rndc.key";                                # 追加する
options セクションは、rndc をオプション無しで起動したときのデフォルト動作を定義する。
server セクションは、接続先ごとに、使うキーを指定する。別のサーバへの接続用に server セクションを複数記述することもできるが、今回はやらない。
key "rndckey" {
        algorithm       hmac-md5;
        secret "***********************************************************";
};
最後に /etc/rndc.key を複製して /etc/named.key を作る。必要なパーミションが異なるので注意。
| named に設定とゾーンを再読込させる。ゾーンを指定するとそのゾーンのみ | |
| reconfig | 設定と、新たに増えたゾーンだけ読み込む | 
| flush | DNSキャッシュをクリア | 
| デバグレベルを level にする。level を省略するとデバグレベルをひとつ上げる | |
| notrace | デバグレベルを 0 にする | 
| querylog | クエリもログ出力するかどうかのオン/オフを切り替える | 
| dumpdb | 現在のキャッシュデータを named のワーキングディレクトリに named_dump.db として書き出す。ダンプ先を恒常的に変更したい場合は named.conf の options セクションで `dump-file "file_path";' を定義すればよい | 
| status | named のステータスを stdout に出力 | 
| stats | named のステータスを named のワーキングディレクトリに named.stats として書き出す | 
他にもあるが、マスターサーバだけなら主に使うのはこのあたり。詳しくは man を。
なお、named の停止や再起動は、PID ファイルやロックファイルの処理がきちんとされる service コマンド (つまり rc スクリプトの `stop') 
で行ったほうが間違いない。再起動と "rndc reload" の違いは、 
このへんを押さえて使い分ける。