弊社サービスのために、弊社は仮想サーバに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” は不要であったことも付け加えておきます。
追記:こちらに、このエラーの原因を書きました。よかったら見てね。