CentOS7 / 7.1のBINDをchrootにするときのエラー対処法

弊社サービスのために、弊社は仮想サーバにDNSサーバを構築しています。なんで制服屋がDNSまで自社管理せなあかんねん!っていうツッコミは置いといてですね・・・

それまでCentOS6.5でBINDを使っていました。6.5のBINDは、chroot環境ですと、named.confは、/var/named/chroot/etc/ ディレクトリにあり、zoneファイルは、/var/named/chroot/var/named/ に置きましたよね。

だけど、同じことをCentOS7 / 7.1のBINDですると、起動時

# systemctl start named-chroot

にエラーになります。

Job for named-chroot.service failed. See 'systemctl status named-chroot.service' and 'journalctl -xn' for details.

こんなエラーです。

# systemctl status named-chroot.service

してエラー内容を見ても意味が分からなくて一晩悩みました。

解決方法は実に簡単でした。悩んだのがアホみたいでした。

CentOS7以降のBINDは、chroot環境であってもなくても、confファイルは、”/etc/named.conf”であり、ゾーンファイルは、同じく、”/var/named/”に置く。そして、起動時に、named-chrootを起動する、それだけなんですね。。。chrootではないBINDを使う場合と全く同じ手順で構築でき、起動時に選ぶようになっている、こういうことでした。

後先になりましたが、構築手順としては、

# yum -y install bind bind-chroot bind-utils

し、次に、/etc/named.confを設定し、次に、zoneファイルを/var/named以下に置く。そして、

# /usr/sbin/named-checkconf /etc/named.conf

# /usr/sbin/named-checkzone example.com /var/named/example.com.zone

で構文チェック。

# systemctl start named

で起動し、他環境からdigやnslookupで動作チェック。OKなら、一旦停止し、chrootで再起動。

# systemctl stop

# systemctl start named-chroot

これで動作確認し、OKなら

# systemctl enable named-chroot

で自動起動を設定して終了。他のサイトにあるような、”# /usr/libexec/setup-named-chroot.sh /var/named/chroot on” は不要であったことも付け加えておきます。

追記:こちらに、このエラーの原因を書きました。よかったら見てね。