BIND 9.10.4のnamedがENGINE_by_id failed (crypto failure)と言って動かない
追記
BIND 9.10.4は"deprecated"になりました。
FreeBSD 10.3-RELEASEにBIND 9.10.4をインストールしました。
make installまで済ませて、それまで動いていたBIND 9.10.3-P4のnamedをrndc stopで停止してetc/rc.d/named経由でBIND 9.10.4のnamedを起動してみたところ
May 2 20:47:00 sh named[98672]: ENGINE_by_id failed (crypto failure)
May 2 20:47:00 sh named[98672]: error:25070067:DSO support routines:DSO_load:could not load the shared library:dso_lib.c:232:
May 2 20:47:00 sh named[98672]: error:260B6084:engine routines:DYNAMIC_LOAD:dso not found:eng_dyn.c:465:
May 2 20:47:00 sh named[98672]: error:2606A074:engine routines:ENGINE_by_id:no such engine:eng_list.c:390:id=gost
May 2 20:47:00 sh named[98672]: initializing DST: crypto failure
May 2 20:47:00 sh named[98672]: exiting (due to fatal error)
というエラーを出して止まってしまいました。
controls {};
options {
listen-on port 1053 {
any;
};
};
という内容で/tmp/named.confを作り
# ./sbin/named -g -c /tmp/named.conf
とやって起動すると、問題のエラーは出ず正常に起動しました。これはさては設定の問題か…? とトラップにかかりかけたんですが、could not load the shared library…? そう言えば、このホストのnamedはchrootしてたよなぁ、とピンときて
# ./sbin/named -g -c /tmp/named.root -t /sandbox/named
とやって起動してみたところ、見事に現象が再現しました。
ls /usr/libしてみるとenginesというサブディレクトリがあり、中を見ると
$ ls /usr/lib/engines
lib4758cca.so libatalla.so libcswift.so libnuron.so libubsec.so
libaep.so libchil.so libgost.so libsureware.so
と、いかにもそれっぽい物があるじゃありませんか。動いちゃったので経緯の調査はやめちゃいましたが、それまで動いていたBIND 9.10.3-P3はOSをアップグレードする前のFreeBSD 10.2-RELEASEでビルドしたバイナリを、そのまま使っていました。
そこで
# mkdir -p /sandbox/named/usr/lib/engines
# mount -t unionfs -r /usr/lib/engines /sandbox/named/usr/lib/engines
とやってchroot環境に/usr/lib/enginesが見えるようにして9.10.4のnamedを起動してみましたが、やっぱりダメです。/usr/lib/enginesでは深すぎるのか、と思い/usr/libを丸ごとmountしてみてもダメで、/lib…は関係ないよなぁ、と思いつつ試してもやっぱりダメで、それじゃぁ/usr/local/libか? と思って見てみると、/usr/local/libにもenginesがあるじゃありませんか。試してみるとエラーメッセージが
03-May-2016 12:16:55.381 loading configuration from '/tmp/named.conf'
03-May-2016 12:16:55.381 open: /tmp/named.conf: file not found
03-May-2016 12:16:55.381 loading configuration: file not found
03-May-2016 12:16:55.381 exiting (due to fatal error)
と変化しました。そこでchroot環境に/tmpを作り、先ほどの/tmp/named.confをコピーしたところ、ついに無事起動するようになりました。etc/rc.d/named経由で起動しても大丈夫になりました。chroot環境の/tmp/named.confといくつかのディレクトリを掃除して一件落着です。/usr/libではなく/usr/local/libのenginesが影響していたということは、OSをアップグレードしたことではなく、BIND 9.10.3-P4をインストールして以降にpkgでインストールしたパッケージが関係していそうな気がします。
Copyright(c) 2016 Koh-ichi Ito, All rights reserved
Last update: $Date: 2018-10-21 16:09:48 +0900 (Sun, 21 Oct 2018) $
[DNS関連情報へ]