もしすでに (例えば RPM などから)
インストールされている BIND がある場合は、
新しいのをインストールする前にそれを削除する必要があると思います。
Red Hat システムでは
bind
と bind-util
のパッケージ、
そして bind-devel
と caching-nameserver
なども、存在していたら削除する必要があるでしょう。
もし init スクリプト (すなわち /etc/rc.d/init.d/named
)
があった場合は、パッケージの削除の前に、
このファイルをコピーして保存しておくほうがいいでしょう。
きっとあとで役に立ちます。
BIND 8 のような、古いバージョンの BIND からアップグレードする場合は、
BIND のソースパッケージの doc/misc/migration
にある、
移行のための文書を読んでおくほうがいいでしょう。
移行に関する内容は、この文書では扱いません。
単に現在動作している BIND 9 のインストールを置き換えようとしている、
というのが本文書での想定対象です。
これは簡単です :-)
make install
を実行して、おまかせするだけです。
いや、本当にこれだけなんですよ!
ディストリビューションに含まれている init スクリプトがあれば、 新しいバイナリを適切なスイッチで起動するように、 そいつを変更するのが最も簡単でしょう。 スイッチは... (ここでドラムロール...)
-u named
, これは BIND をユーザ root
ではなく
named
で実行します。-t /chroot/named
, これにより BIND は自分自身を
(先に用意した) jail に chroot します。-c /etc/named.conf
, これは BIND に、
jail の内部における設定ファイルのありかを教えます。以下の init スクリプトは、著者が自分の
Red Hat 6.0 システムで使っているものです。
おわかりのとおり、ほとんどは Red Hat のものと変わりありません。
わたしは rndc
コマンドはまだ試していませんが、
これが動かない理由はないはずです。
#!/bin/sh # # named This shell script takes care of starting and stopping # named (BIND DNS server). # # chkconfig: 345 55 45 # description: named (BIND) is a Domain Name Server (DNS) \ # that is used to resolve host names to IP addresses. # probe: true # Source function library. . /etc/rc.d/init.d/functions # Source networking configuration. . /etc/sysconfig/network # Check that networking is up. [ ${NETWORKING} = "no" ] && exit 0 [ -f /usr/local/sbin/named ] || exit 0 [ -f /chroot/named/etc/named.conf ] || exit 0 # See how we were called. case "$1" in start) # Start daemons. echo -n "Starting named: " daemon /usr/local/sbin/named -u named -t /chroot/named -c /etc/named.conf echo touch /var/lock/subsys/named ;; stop) # Stop daemons. echo -n "Shutting down named: " killproc named rm -f /var/lock/subsys/named echo ;; status) status named exit $? ;; restart) $0 stop $0 start exit $? ;; reload) /usr/local/sbin/rndc reload exit $? ;; 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 exit 0 ;; *) echo "Usage: named {start|stop|status|restart|reload}" exit 1 esac exit 0
syslogd での場合と同じく、現在の Red Hat 7.2 では、
この過程はさらに簡単になっています。
/etc/sysconfig/named
というファイルがあり、
ここで named に与える追加パラメータを定義できます。
ただし Red Hat 7.2 でのデフォルトの
/etc/rc.d/init.d/named
では、
起動前に /etc/named.conf
があるかをチェックします。
このパスは変更しなければなりません。
Caldera OpenLinux システムでは、 先頭付近で定義されている変数を修正し、以下のようにすれば OK です。
NAME=named
DAEMON=/usr/local/sbin/$NAME
OPTIONS="-t /chroot/named -u named -c /etc/named.conf"
そして FreeBSD 4.3 では、rc.conf
ファイルを編集して、
次の行を追加します。
named_enable="YES"
named_program="chroot/named/bin/named"
named_flags="-u named -t /chroot/named -c /etc/namedb/named.conf"
named.conf
にもいくつか追加・修正を行い、
いろいろなディレクトリが正しく動作するようにする必要があります。
特に、以下を option
セクションに追加 (あるいはすでにあれば修正)
しなければなりません。
directory "/etc/namedb";
pid-file "/var/run/named.pid";
statistics-file "/var/run/named.stats";
これらのファイルは named
デーモンが読むことになるので、
もちろんパスはすべて chroot jail 内部での相対位置になります。
執筆の時点では、BIND 9 は前のバージョンでサポートされていた
統計情報やダンプファイルの多くを未だサポートしていません。
おそらく今後はサポートされていくと思います。
読者のお使いのものがこのようなバージョンである場合は、
BIND がそれらを /var/run
ディレクトリに書けるように、
いくつかエントリを同じように追加する必要があるでしょう。