BIND9によるDNSの構築

Last Update 2002/08/16
Create 2002/02/05
六ちゃん masaharu@mutsuyoshi.net
PXB11405@nifty.ne.jp


(2002/08/14) お盆前(08/14)に、bind-9.2.2rc1 がリリースされました。さっそくコンパイルインストール。
open-ssl のバージョンが、0.9.6e以上のものが必要になってます。

(2002/05/09) 連休中に、bind-9.2.1 がリリースされました。さっそくコンパイルインストール。

(2002/03/28) bind-9.2.0 になってから、rndc に関する記述を行わないと、notice や warning がsyslogに吐かれます。rndcの設定に関する記述を追加しました。


bind の入手とコンパイル

ISC-BIND ( http://www.isc.org/products/BIND/ ) か、そのミラーサイトからとってきます。

執筆時点(2002/05/09)の最新版は、bind-9.2.1.tar.gz です。

執筆時点(2001/10/18)の最新版は、bind-9.1.3.tar.gz です。

chroot した場合を考慮したディレクトリ構成をとるため、--prefix=/usr/local/bind --sysconfdir=/etc/named --localstatedir=/var/named を付加する。また、bind9 からSSLに対応したということなので、--with-openssl=/usr/local/ssl もつけてみた(家庭内DNSには不要だろうけど・・・)。

% tar xvzfp bind-9.2.1.tar.gz
% cd bind-9.2.1
% ./configure --prefix=/usr/local/bind \
--sysconfdir=/etc/named \
--localstatedir=/var/named \
--with-openssl=/usr/local/ssl
% make
% make test

testで問題が出なければ、make install する。

# make install

グループ/ユーザー bind の作成

いつものように根性なく、admintool を用いて作成。gid/uid は、ポート番号と同じ、53 を指定しておいた。(このへんの設定は好き好きですね。)

設定の工夫

chroot しなくても設定ファイルが見え起動するようリンクを張っておく。

# cd /etc
# ln -s /usr/local/bind/etc/named named

# cd /var
# ln -s /usr/local/bind/var/named named

nslookup などのツール類を PATH が通ったディレクトリにリンクを張っておく。
付属の nslookup コマンドは、今後は、dig か host コマンドを使えとメッセージがでてくる。

# cd /usr/local/bin
# ln -s /usr/local/bind/bin/dig dig
# ln -s /usr/local/bind/bin/host host
# ln -s /usr/local/bind/bin/nslookup nslookup
# ln -s /usr/local/bind/bin/nsupdate nsupdate

自動起動スクリプトの作成

ブート時に起動するよう、起動スクリプト( /etc/rc2.d/S72inetsvc )を変更します。ポリシーとして、なるべく元の状態が残る設定を心がけたため、このような形にしています。システムのデフォルトでリンクが張られているため、/etc/rc0.d/K42inetsvc もS72inetsvc と同期して変更されます。

起動時は、namedプロセスの所有者を bind とし、ルートディレクトリを、/usr/local/bind とするという意味です。 chroot は、namedプロセスが万一悪意のある第3者に奪取された場合、被害が chroot 設定したディレクトリ以下でで済むようにするためのものです。(家庭内LANのDNSとしては、心配しすぎだし、他にも多数の穴があるはずです。)

/etc/rc2.d/S72inetsvc

----

'stop')

/usr/bin/pkill -x -u 0 'in.named|inetd'
/usr/bin/pkill -x -U bind named   (追加)

(中略)

'start'

(中略)

#if [ -f /usr/sbin/in.named -a -f /etc/named.conf ]; then
# echo 'starting internet domain name server.'
# /usr/sbin/in.named &
#fi
if [ -f /usr/local/bind/sbin/named -a -f /usr/local/bind/etc/named/named.conf ]; then
echo 'starting internet domain name server BIND9.'
/usr/local/bind/sbin/named -u bind -t /usr/local/bind &
fi

named.conf と正引き逆引きファイルの設定

別項に記します。

既に動いている設定あるなら大切に保管しておきます。DNSが動かないと、いろいろ困ったことが発生します。

#rndc ユーティリティに関する設定( 2002.03.28 )

rndc.key

sbin ディレクトリにある、rndc-confgen で /usr/local/bind/c/named/rndc.conf

# rndc-confgen -a

ファイルのオーナーの変更も忘れずに行います。

# chown bind rndc.conf

共通鍵を作成します

# ./dnssec-keygen -a HMAC-MD5 -b 512 -n HOST hogehoge

 ※最後の hogehoge は鍵を示す適当な名前で構いません。

# ls -l K*

-rw------- 1 root other 114 Jan 28 19:08 Khogehoge.+157+41729.key
-rw------- 1 root other 145 Jan 28 19:08 Khogehoge.+157+41729.private

2つのファイルが作成されています。

この中に共通鍵の文字列が入っています。

rndc.conf を設定します

※テンプレートがソースディレクトリのbin/rndcの中に入っているのを使います。

# cp bind/bind-9.2.0/bin/rndc/rndc.conf /etc/rndc.conf

----

options {

default-server localhost;

default-key "hogehoge"; #dnssec-keygenの際に指定した名前

};

server 127.0.0.1{

key "hogehoge";      #dnssec-keygenの際に指定した名前

};

key "hogehoge" {      #dnssec-keygenの際に指定した名前

algorithm hmac-md5;

secret "5wr2sd8fCeSeBYldNYmeup9hNLn5wr2sd8fCeSeBYldNYmeup9hNLnqSRsGoFQ

1iau7wjLr6Z0LeK/DPCoGK/1GCEmKw==";  ※生成されたキーを改行はなしで

};

named.conf に、次の記述を追加しておきます。

key "hogehoge" {      #dnssec-keygenの際に指定した名前

algorithm hmac-md5;

secret "5wr2sd8fCeSeBYldNYmeup9hNLn5wr2sd8fCeSeBYldNYmeup9hNLnqSRsGoFQ

1iau7wjLr6Z0LeK/DPCoGK/1GCEmKw==";  ※生成されたキーを改行はなしで

};

controls {
inet 127.0.0.1 allow { localhost; } keys { rndc-key; };
};

named の起動

# /etc/rc2.d/S72inetsvc start

しても構わないのですが、S72inetsvc は、他にも様々なデーモンを起動しているため、warninng が多数でます。

また、/etc/rc0.d/K42inetsvc stop とすると、named だけでなく、inetd なども落ちてしまうため、リモートログインできないといった事態に陥ります。くれぐれも気をつけてください。

S72inetsvc から、カット&ペーストでし、

# /usr/local/bind/sbin/named -u bind -t /usr/local/bind

とするのがベターでしょう。

動作確認

nslookup,host,dig コマンドを駆使してください。


Last Update 2002/08/16

Create 2001/10/18

六ちゃん masaharu@mutsuyoshi.net