BIND9 in jail

FreeBSD 5.3-RELEASE から base system の BIND のバージョンが 8 から 9 に変更されました。弊社では jail 環境で BIND8 を動かしていたマシンがあったのですが、HDD がそろそろ寿命なのか ports ツリーを cvsup で更新している最中にハングしたこともあり、新たな H/W で、かつ 5.3-RELEASE で... と思ったら、やはりハマリました --;)。

# 最近、ハマってばっかり...

問題1. BIND9 が分かってません

これは自分の不勉強が問題ですが、IP alias 上で named を稼動させたかったので、以下の directive を指定してしました。ところが余りにエラーがログに記録されるので良く見てみたら、違う IP(ベースの IP) から外部にゾーン転送を掛けに行ってます --;)。

  • query-source
  • transfer-source
  • notify-source

これでは客に怒られてしまうので、やはり jail で頑張るしかなさそうです。

問題2. jail を用い、named の -u オプションに 'bind' を指定すると、'user unknown' と言われる

${CHROOT}/etc/passwd ファイルがあるにも関わらず

# jail ${CHROOT} chrooted-dns.example.jp aaa.bbb.ccc.ddd /bin/named -u bind -c /conf/named.conf

を実行すると 'user unknown' と言われます。4.x 系列では問題なかったのに...

問題3. jail の -u オプションに 'bind' を指定すると、53/tcp, 53/udp で listen できない

じゃぁ、ということで jail コマンドの -u オプションに 'bind' を指定すると、確かに named は bind 権限で起動するのですが、今度は 53/tcp や 53/udp で listen できません。5.x 系列から入った MAC フレームワークの理解がもう少し進んでいれば、bind ユーザに 53/tcp や 53/udp に対する listen 権限を与えることで問題が解決しそうなんですが...

解決 - 問題2 への対処

何となく勘が働きました。

# cd ${CHROOT}/etc/
# grep bind /etc/master.passwd > master.passwd
# pwd_mkdb -d . master.passwd
# ls *.db
pwd.db spwd.db

この後、jail コマンドを実行すると named がキチンと起動しました :-)。いやはや、色々勉強しないとダメですね。