DNSはプライマリとしてセットアップするにはゾーンファイルをかなり書かなくてはいけませんが
セカンダリとして設定する場合はかなり簡単です。
プライマリのDNSサーバが起動しているのが前提ですが・・・
設定ファイルはnamed.confとローカルループバックの分だけで十分です。
では、実際にやってみましょう。

セカンダリといえどもやはりbind自身はインストールしてあげなくてはいけません。
bindのインストールの部分に関してはプライマリでやったのとまったく同じです。
ここ参照

【準備】
ダウンロードはこちらから
ftp://ftp.isc.org/isc/bind9/
から最新版をダウンロードしてきます。
バージョンはとりあえず9を使ってみることにします。

おそらくセカンダリにbind8を使ってもbind9とはやり取りできると思いますが
検証はしてないのでbind9でやってみます。

【インストール】
※前提条件としてSolaris8で構築する場合はここのフリーソフトのインストールは
行っているものとする。あくまでSol8でのログなのでLinuxでやるとipv6の部分が
成功するか分からないのでLinuxの場合はとりあえずconfigureはオプション無し
でやってもOKなのでは?IPv6するにはおそらくカーネルをいじらないとダメです。
もしカーネルが古い場合は--disable-threadsをつけた方がいいかも。

bindの起動でつまずいてしまうかもしれません。

bash-2.05# cp /usr/local/arc/bind-9.1.3.tar.gz /usr/local/src/
bash-2.05# cd /usr/local/src
bash-2.05# gzip -d < bind-9.1.3.tar.gz |tar xf -
bash-2.05# rm bind-9.1.3.tar.gz
bash-2.05# cd bind-9.1.3/
bash-2.05# ./configure --enable-threads --enable-ipv6 2>&1|tee configure.log
bash-2.05# make 2>&1|tee make.log
bash-2.05# make install 2>&1|tee make_install.log

インストールはたったこれだけです。configureスクリプトのおかげで
インストールはめちゃくちゃ簡単になりましたね。


【設定】
構築するdnsはjinjin.comというドメインのセカンダリdnsサーバとしましょう!
ドメイン:jinjin.com
IPアドレス:192.168.128.5

・上位DNS:192.168.128.3(home3.jinjin.com)
・上位DNS:203.139.161.37(ns-os001.ocn.ad.jp)

・用意するファイル一覧
/var/named/localhost.rev
/var/named/localhost.zone
/var/named/named.root
/etc/named.conf

とりあえずやってみましょう!

bash-2.05# mkdir /var/named
bash-2.05# cd /var/named

●ローカルホスト正引きファイル
bash-2.05# vi localhost.zone
; localhost.
$TTL 3600
@ in soa localhost. postmaster.localhost. (
    2001091801 ;serial
    3600 ;refresh
    1800 ;retry
    604800 ;expiration
    3600 ) ;minimum
;
    in ns localhost.
in a 127.0.0.1
構文エラーがないかチェック
bash-2.05# /usr/local/sbin/named-checkzone /var/named/localhost.zone
OK

●ローカルホスト逆引きファイル
bash-2.05# vi localhost.rev
; 0.0.127.in-addr.arpa
$TTL 3600
@ in soa localhost. postmaster.localhost. (
    2001091701 ;serial
    3600 ;refresh
    1800 ;retry
    604800 ;expiration
    3600 ) ;minimum

    in ns localhost.
1 in ptr localhost.
構文エラーがないかチェック
bash-2.05# /usr/local/sbin/named-checkzone /var/named/localhost.rev
OK

●ルートキャッシュファイル
ftp://rs.internic.net/domain/
から最新版のnamed.rootをダウンロードしてくる。
bash-2.05# vi named.root

●bindの設定ファイル
bash-2.05# vi /etc/named.conf
acl ipasec {
192.168.128.0/24;
127.0.0.1;
};

options {
directory "/var/named";
pid-file "/var/named/named.pid";
query-source address * port 53;
allow-transfer { ipasec; };
auth-nxdomain yes;  #auth-nxdomain' option is now 'no'というエラーが出るときなどは明示的にyesにしてあげます。
version "";
};

zone "." {
type hint;
file "named.ca";
};

zone "localhost" {
type master;
file "localhost.zone";
allow-update { none; };
};

zone "0.0.127.in-addr.arpa" {
type master;
file "named.local";
allow-update { none; };
};

zone "jinjin.com" {
type slave;
file "bak/jinjin.com";
masters { 192.168.128.4; };
};

zone "128.168.192.in-addr.arpa" {
type slave;
file "bak/jinjin.com.rev";
masters { 192.168.128.4; };
};
logging{
channel config_debug{
file "/var/named/log/config_debug.log" versions 5 size 10m;
severity debug 3;
print-category yes;
print-severity yes;
print-time yes;
};


channel xfer-in_debug{
file "/var/named/log/xfer-in_debug.log" versions 5 size 10m;
severity debug 3;
print-category yes;
print-severity yes;
print-time yes;
};

channel xfer-out_debug{
file "/var/named/log/xfer-out_debug.log" versions 5 size 10m;
severity debug 3;
print-category yes;
print-severity yes;
print-time yes;
};


channel notify_debug{
file "/var/named/log/notify_debug.log" versions 5 size 10m;
severity debug 3;
print-category yes;
print-severity yes;
print-time yes;
};

channel security_debug{
file "/var/named/log/security_debug.log" versions 5 size 10m;
severity debug 3;
print-category yes;
print-severity yes;
print-time yes;
};


category config { config_debug; };
category xfer-in { xfer-in_debug; };
category xfer-out { xfer-out_debug; };
category notify { notify_debug; };
category security { security_debug; };

};
構文エラーがないかチェック
bash-2.05# /usr/local/sbin/named-checkconf /etc/named.conf

・ログファイルの保存場所の作成
bash-2.05# mkdir /var/named/log

【リゾルバの設定】
bash-2.05# vi /etc/resolv.conf
domain jinjin.com
nameserver 192.168.128.4
nameserver 192.168.128.5
bash-2.05# vi /etc/nsswitch.conf
hosts: dns files

【起動ユーザの作成】
・namedを起動するユーザ・グループの作成
・最後に/var/namedをbindユーザに変更します。

# groupadd bind;useradd -c "bind user" -g bind -d /var/named -s /usr/bin/false bind
# chown -R bind:bind /var/named

【起動確認】
一度動くかどうか動作確認してみます。
・違うターミナルでtail -f /var/adm/messages
・/usr/local/sbin/named -u bind
もしもエラーがあると今までのv8以前のようにエラーのまま起動することはありません。
-uオプションでbindユーザで起動しています。


ここで本当に動いているかどうか確認します。
hostコマンドで使用するdnsサーバを指定する場合は最後にそのサーバを指定します。
例;#host [-t タイプ] 参照するサーバ [使用するDNSサーバ]
  下の実際のログを見ると分かると思います。

■正引きの確認
[root@home3 /]# host www.jinjin.com
www.jinjin.com is an alias for home3.jinjin.com.
home3.jinjin.com has address 192.168.128.13

■逆引きの確認
[root@home3 /]# host 192.168.128.13
13.128.168.192.in-addr.arpa domain name pointer home3.jinjin.com.

■mxレコード確認
bash-2.05# host -t mx jinjin.com 192.168.128.5
Using domain server:
Name: 192.168.128.5
Address: 192.168.128.5#53
Aliases:

jinjin.com. mail is handled by 10 home5.jinjin.com.
■cnameレコードの確認
[root@home3 /]# host -t cname www.jinjin.com
www.jinjin.com is an alias for home3.jinjin.com.

どやらOKのようですね。
これでセカンダリDNSはうごいていますね。


もしここでDNS参照でいないようだったらちゃんとゾーンファイルを
プライマリから持ってきているか確認してください。
#ls /var/named/bak
でちゃんとファイルが出来ているかどうか確認してください。
出来ていない場合は/var/adm/messages(/var/log/messages)をみてください。
必ず原因がわかります。

【自動起動設定】
システムブート時に自動でbindがあがるように設定しておきましょう。

●solarisの場合
bash-2.05# vi /etc/rc2.d/S72inetsvc
オリジナル
77if [ -f /usr/sbin/in.named -a -f /etc/named.conf ]; then
78 echo 'starting internet domain name server.'
79 /usr/sbin/in.named &
80fi
↓変更
変更後
77if [ -f /usr/local/sbin/named -a -f /etc/named.conf ]; then
78 echo 'starting internet domain name server.'
79 /usr/local/sbin/named -u bind &
80fi


●Redhat7.1Jの場合
※ソースからインストールした場合はrpm版と場所が違うので
起動ファイルはrpm版のものを使ってもいいですがバイナリの場所だけ
ちゃんと書き換えて使用してください。

/etc/init.d/named
. /etc/rc.d/init.d/functions
. /etc/sysconfig/network
[ "${NETWORKING}" = "no" ] && exit 0
[ -f /etc/sysconfig/named ] && . /etc/sysconfig/named
[ -f /usr/local/sbin/named ] || exit 0
[ -f /etc/named.conf ] || exit 0
RETVAL=0
prog="named"

start() {
# Start daemons.
echo -n $"Starting $prog: "
if [ -n "${ROOTDIR}" -a "x${ROOTDIR}" != "x/" ]; then
OPTIONS="${OPTIONS} -t ${ROOTDIR}"
fi
daemon named -u bind ${OPTIONS}
RETVAL=$?
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/named
echo
return $RETVAL
}
stop() {
# Stop daemons.
echo -n $"Stopping $prog: "
killproc named
RETVAL=$?
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/named
echo
return $RETVAL
}
rhstatus() {
/usr/local/sbin/rndc status
return $?
}
restart() {
stop
start
}
reload() {
/usr/local/sbin/rndc reload >/dev/null 2>&1 || /usr/bin/killall -HUP named
return $?
}
probe() {
# named knows how to reload intelligently; we don't want linuxconf
# to offer to restart every time
/usr/local/sbin/rndc reload >/dev/null 2>&1 || echo start
return $?
}

case "$1" in
start)
start
;;
stop)
stop
;;
status)
rhstatus
;;
restart)
restart
;;
condrestart)
[ -f /var/lock/subsys/named ] && restart
;;
reload)
reload
;;
probe)
probe
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|reload|probe}"
exit 1
esac

exit $?
bindでセカンダリDNSとして設定(2001.10.5)