最近、Bind周りでの脆弱性が発見されることが多くなり、厄介な事になってしまいました。
久々にソースビルドにチャレンジしたので、備忘録としてインストールの記録を残しておきます。
まずは、ダウンロードの場所ですが、
http://www.isc.org/downloads/
からダウンロードします。
対象のバージョンのファイルを探します。
STATUSがCurrent-Stableとなっているものが、安定版です。
今回は、9.10.2-P4を使います。
すでに、Bindがインストールされている場合は、先にアンインストールしておきます。
rpm -e bind
手前の環境では、namedが作られている環境だったので、そのまま権限を書き換えていますが、
そうでない人は、bindを動かすためのグループとユーザーを作成しましょう。
groupadd named
useradd -g named
ファイルの取得はwgetで行っています。
cd /usr/local/src wget ftp://ftp.isc.org/isc/bind9/9.10.2-P4/bind-9.10.2-P4.tar.gz
tar xvzf bind-9.10.2-P4.tar.gz
chown -R named:named ./bind-9.10.2-P4cd bind-9.10.2-P4/
この時に、フォルダの権限を変更しておかないと、あとで意味不明なエラーでハマります。
続いてインストールですが、定例のコマンドを実行していきますが、いくつか注意するポイントがあります。
./configure --prefix=/usr --exec_prefix=/usr --localstatedir=/var --sysconfdir=/etc --disable-openssl-version-check --disable-ipv6 --disable-threads --enable-chroot --with-openssl=no
make
bin/tests/system/ifconfig.sh up
make test
bin/tests/system/ifconfig.sh down
make install
まず、configureの実行ですが、オプションを指定しなくてもうまくいくかもしれません。
ただ、指定したほうが良いと思います。
特に、IPv6の設定やopensslの設定あたりは、今回は飛ばしています。
opensslを使う場合は、opensslを別途インストールして、実行すると良いでしょう。
また、ifconfig.shを実行しておかないと、テストが実行させてもらえません。
テスト時にエラーが1件出ます(reclimitのエラー)が、動いてしまったのでとりあえず無視しました。
手前の環境では、/usr/sbin/namedが新しく生成されています。
試しにバージョンを確認してみると。
named -v
無事にバージョンが上がっていることが確認できます。
これでやっとインストールは終わりですが、
設定ファイルを作っていきます。
設定ファイルは、/etc/named.confというファイルがあります。
手前の環境では、自動で作ってくれなかったので、自力で作ります。
named.confの作り方は以下のサイトを参照ください。
http://www.eis.co.jp/bind9_src_build_2/
起動しようとしても実行できなかったので、/var/log/messagesを確認すると、ルートヒントがないと言われます。
could not configure root hints from 'named.root' : file not found
named.confで設定したルートヒントファイルを作っていませんでした。
ルートヒントファイルは、またしてもwgetで拾ってきます。
wget http://www.internic.net/domain/named.root
digコマンドで作る方法もあるようです。
(参考)http://www.omakase.org/misc/dns_hint.html
dig @A.ROOT-SERVERS.NET. > /etc/namedb/named.root
作成したルートヒントファイルは、絶対パスで指定するか、/var/lib/named/配下に配置します。
この状態で、一旦動くかどうか試してみてくださいね。
/usr/sbin/named -u named -c /etc/named.conf
うまく動いているかどうかは、psコマンド等で調べてみてください。
http://ryouto.jp/linux/linux_14.html
今回作成したバッチはこんな感じ。
#!/bin/sh
ARGS="-c /etc/named.conf -u named"
SBINDIR=/usr/sbin
[ -f ${SBINDIR}/named ] || exit 0
case "$1" in
start)
echo -n "Starting Bind ..."
start-stop-daemon --start --quiet --exec ${SBINDIR}/named -- $ARGS
touch /var/lock/subsys/named
echo done.
;;
stop)
echo -n "Shutdown Bind ..."
start-stop-daemon --stop --quiet --exec ${SBINDIR}/named -- $ARGS
rm -f /var/lock/subsys/named
echo done.
;;
status)
status named
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage: $0 { start | stop | restart }"
exit 1
;;
esac
exit 0
RPMファイルを自力で作ることを思いつきましたが、力尽きたので、諦めています。