BIND-9.8.1 + OpenSSL-1.0.0 + chrootの問題

  • OpenSSL-1.0.0を使用し, かつchroot環境下で使用する場合には, chrootディレクトリ以下にOpenSSLのengines/libgost.so が必要になった.
    • initializing DST: openssl failure というエラーがsyslogに記録される.
    • chroot後にライブラリがリンクされる.
    • libgost.soはOpenSSL-0.9.8のlib/enginesには存在しない.
    • libgost.soを適切なディレクトリにコピーするか,enginesディレクトリをまるごとbind mount (Solarisの場合 zone fs か lofs)でも動作する.
    • bind mountの場合は/etc/fstabに以下のようなエントリを追加
      • /usr/local/ssl/lib/engines (BINDのchroot)/usr/local/ssl/lib/engines none bind 1 2
    • Solarisではlibgost.so の他に /lib/md5.so /lib/libmp.so もchroot下に必要.
      • trussをとると, 既にリンクしたライブラリをもう一度探しに行って失敗しているため見づらいが, chroot後リンク失敗したライブラリの中に今までリンクしていないものがある.
    • コンパイル時 configure の後にconfig.hの HAVE_OPENSSL_GOST=1 を書き換えてなかったことにする方法.
  • named.confの directory で指定されているディレクトリは, 相対ファイル名の起点となるだけでなく, 起動時やkill -HUP時に tmp-ランダム文字列 という一時ファイルが作成される場所になっているらしい.
    • 作成に失敗しても動作しないわけではないが, syslogにunable to convert errno to isc_result: 30: Read-only file system のようなエラーメッセージが出力される. 30はファイルシステムが書込み不可のファイルシステムを表すエラー.