2011/02/24(Thu)Fedora10->14でbind-chrootの起動に失敗するfix
2011/02/25 1:22
起動失敗ログ
# service named restart named を停止中: [ OK ] named を起動中: Error in named configuration: zone localhost.localdomain/IN: loaded serial 0 zone localhost/IN: loaded serial 0 zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa/IN: NS '1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa' has no address records (A or AAAA) zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa/IN: not loaded due to errors. internal/1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa/IN: bad zone zone 1.0.0.127.in-addr.arpa/IN: NS '1.0.0.127.in-addr.arpa' has no address records (A or AAAA) zone 1.0.0.127.in-addr.arpa/IN: not loaded due to errors. internal/1.0.0.127.in-addr.arpa/IN: bad zone zone 0.in-addr.arpa/IN: NS '0.in-addr.arpa' has no address records (A or AAAA) zone 0.in-addr.arpa/IN: not loaded due to errors. internal/0.in-addr.arpa/IN: bad zone (略) [失敗]
バージョンなど
古い方(Fedora10最新): bind-9.5.1-0.8.b2.fc10.i386新しい方(Fedora14最新): bind-9.7.2-5.P3.fc14.i686
直し方
/var/named/chroot/var/named/以下のnamed.loopbackとnamed.emptyにA, AAAAレコードを足せばよい。▼修正後のnamed.loopback
$TTL 1D @ IN SOA @ rname.invalid. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS @ A 127.0.0.1 AAAA ::1 PTR localhost.▼修正後のnamed.empty
$TTL 3H @ IN SOA @ rname.invalid. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS @ A 127.0.0.1 AAAA ::1これで# service named restartすれば正常に起動する。
原因の考察
どうやら、初期設定で用意されているループバックのエントリと、第1オクテットが0の逆引き設定それぞれに書かれているNSのアドレスが解決できないらしい。今となってはアップデートしてしまったので前の挙動は分からないが、前は不要だったっぽい?
ちなみにyumやrpmが仕事をサボっているわけではなく、ちゃんと/var/named/の下は強制的に更新がかかっていた。
# ls /var/named/ -rw-r-----. 1 root named 1892 2008-02-18 21:29 named.ca lrwxrwxrwx. 1 root named 36 2009-07-13 09:58 named.ca.rpmsave -> /var/named/chroot/var/named/named.ca -rw-r-----. 1 root named 152 2009-12-15 21:27 named.empty lrwxrwxrwx. 1 root named 39 2009-07-13 09:58 named.empty.rpmsave -> /var/named/chroot/var/named/named.empty -rw-r-----. 1 root named 152 2007-06-21 19:09 named.localhost lrwxrwxrwx. 1 root named 43 2009-07-13 09:58 named.localhost.rpmsave -> /var/named/chroot/var/named/named.localhost -rw-r-----. 1 root named 168 2009-12-15 21:27 named.loopback lrwxrwxrwx. 1 root named 42 2009-07-13 09:58 named.loopback.rpmsave -> /var/named/chroot/var/named/named.loopbackという具合。
ただ、bind-chrootという本来の"/etc/named.conf"や"/var/named"を、/var/named/chroot/以下に押し込めるパッケージを入れてchroot運用している時のことは考えられてなかったようだ。
まあ、bindのchroot化は実質的には/etc/sysconfig/namedにROOTDIR=/var/named/chrootと書くだけなので、このあたりのファイルが更新された時のことまで関知してくれないのかな。