ISC BIND 9.9.3-P2をCentOS6.4にソースからインストール


最新バージョンで対策されてるっていうのに、CentOSのパッケージが無いなんて・・・orz
ってなわけで、急遽最新版(9.9.3-P2)のソースを調達してインストールしました。

今回インストールする環境は、BIND 9.8.2のパッケージをインストールしている環境です。
自分の備忘録として、移行方法もあわせて記載しておきます。
ハマるかもしれないポイントは、make test時点のソースファイル群のパーミッションと、Chroot環境です。

ソースのダウンロード

ISCのウェブサイトからBIND 9.9.3-P2のtarballをダウンロードします。
久々にアクセスしたらデザインが一新されていて驚きましたが、メールマガジン?に登録しなくてもダウンロードできるようです。

ISCのレスポンシブWebデザインを採用した新しいWebサイト

ISCのレスポンシブWebデザインを採用した新しいWebサイト

メールアドレス、組織種別を入力しなくてもダウンロードリンクを取得できる

メールアドレス、組織種別を入力しなくてもダウンロードリンクを取得できる

展開、コンパイル (configure, make)

configureのオプションについては、./configure --helpで確認できる親切設計です。某HTTPDとは違いますね。
今回は、パッケージとしてインストールされているBINDを置き換えるので、prefixを設定しています。

./configure --prefix=/usr --exec_prefix=/usr --localstatedir=/var --sysconfdir=/etc --enable-ipv6 --enable-threads --enable-chroot --enable-largefile --with-make-clean

--with-make-cleanオプションをつけると、configure実行後にmake cleanが走ります。
Chrootを有効にして運用していた環境なので、--enable-crootオプションも指定します。

make test

makeが終わった直後にmake testを実行すると、エラーメッセージが表示されテストが走りません。

$ make test
I: NOTE: The tests were not run because they require that
I: the IP addresses 10.53.0.1 through 10.53.0.8 are configured
I: as alias addresses on the loopback interface. Please run
I: 'bin/tests/system/ifconfig.sh up' as root to configure
I: them, then rerun the tests. Run make force-test to run the
I: tests anyway.
make: *** [test] エラー 1

メッセージに書いてあるとおり、rootで# BINDのソースディレクトリ/bin/tests/system/ifconfig.sh upを実行すると、10.53.0.1~8のループバックインタフェースが生成されます。

今回一番ハマった点は、make testで大量のFAILが出たことです。make testのログを眺めてみると、

A:System test acl
I:Couldn’t start server ns2 (pid=436)
R:FAIL
S:additional:2013年  7月 27日 土曜日 14:51:59 JST

このように、Couldn't start server ns* (pid=***)というエラーでFAILとなる項目が多数ありました。
どうやらファイル/ディレクトリの所有者と異なるユーザーでmake testを実行していると発生するようです。(このあたり日本語の情報はかなり少ないです)
chownで直してあげると通るようになります。

make installの前に

パッケージとしてインストールしたBINDを置き換えるために、既存の設定ファイル等で動作するかどうか確認します。

まず、稼働中のBINDのコマンドライン引数を確認します。

$ ps -ef | grep named
named    12712     1  1 15:02 ?        00:00:00 /usr/sbin/named -u named -t /var/named/chroot
hogehoge     12864 31215  0 15:02 pts/41   00:00:00 grep named

この場合は -u named -t /var/named/chrootが引数ですね。

続いて、稼働中のBINDを一旦停止させ、先ほど確認した引数を用いて新しいバージョンのBINDを起動します。
ここからはrootで、ソースのトップディレクトリから作業してください。

# service named stop
Stopping named: .                                          [  OK  ]
# ./bin/named/named -u named -t /var/named/chroot ### 先ほど確認した引数で新しいBINDを起動します
 
# tail /var/log/messages  ### エラーが発生していないかどうか確認します
 
# ./bin/dig/dig @localhost www.google.com a +rec   ### 新しいBIND付属のdigコマンドで、正常に名前解決できるか確認します
# ./bin/dig/dig @localhost gmo.bis5.net a +norec   ### 権威サーバーであれば、このような確認も必要でしょう
 
# ./bin/rndc/rndc          ### 新しいBIND付属のrndcが動作するか確認します
# ./bin/rndc/rndc status   ### rndcでBINDのステータスが取得できるか確認します
# ./bin/rndc/rndc reload   ### rndc reloadが出来ることも確認しておきます
 
# service named stop   ### 確認が終わったら、一旦停止させます

動作に問題がありましたか?Chroot環境下にファイルが存在しないなどの問題があると正常に起動しません。

make installと動作確認

ここまで確認できたら、make installでインストールし、動作を確認できればOKです。
パッケージ版のBINDをアンインストールする場合は、/etc/named*, /etc/rndc.key, /etc/init.d/named, /var/namedを念のためバックアップしておきましょう。

# make install
# service named start
Starting named:                                            [  OK  ]
# named -v
BIND 9.9.3-P2 (Extended Support Version)
# dig -v
DiG 9.9.3-P2
# rndc status
version: 9.9.3-P2
CPUs found: 3
worker threads: 3
UDP listeners per interface: 3
number of zones: 8
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is OFF
recursive clients: 0/0/1000
tcp clients: 0/100
server is up and running

ISC BIND 9.9.3-P2をCentOS6.4にソースからインストール」への4件のフィードバック

  1. 河野 義広

    なるほど。DNSは重要ですからね。最後の部分は、ソースで直接インストールするより、checkinstallでRPMを作成するとよいでしょう。

    返信
    1. maru.TA

      32/64bitの両方の環境があるので、パッケージを作成せずpacoを使って管理しています。checkinstallも便利そうですね!

      返信
  2. ピンバック: BIND9は動いているけどtestでエラーがでる | ワインと電子な日々

コメントを残す