CentOS7 / 7.1のBINDをchrootで起動できない

CentOS7では、BINDは、namedもnamed-chrootも同じディレクトリに設定ファイルを置くことは、すでに書きました

さて、

# systemctl start named

でいけるのに、

# 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

で調べてみると

named-checkconf[1228]: zone example.com/IN: loading from master file example.com.zone failed: file not found
named-checkconf[1228]: zone example.com/IN: not loaded due to errors.
named-checkconf[1228]: _default/example.com/IN: file not found
systemd[1]: named-chroot.service: control process exited, code=exited status=1
systemd[1]: Failed to start Berkeley Internet Name Domain (DNS).
systemd[1]: Unit named-chroot.service entered failed state.

というエラーでした。

種明かしをする前に、先にchrootの仕組みを解説しますね。

CentOS7のBIND-chrootは、さきに/etc/named.* とか、/var/named/*.*を、/var/named/chroot以下にマウントするんです。自動で。(これが、明示的に「/usr/libexec/setup-named-chroot.sh /var/named/chroot on」を実行しなくていい理由なのです。)

上記のエラーを見てみると、ファイルがNotFoundとなっていることから、このマウント処理がうまくいってないようです。

手動で/usr/libexec/setup-named-chroot.sh /var/named/chroot onを実行してみてもマウントされない。

そんな時にチェックして欲しいのが、

/var/named/chroot/var/named

に何かファイルが残ってませんか?

# ls

で空でなければマウントできないんです。

同じく、/var/named/chroot/etc/named.* が残っていてもダメです。

前回の記事でエラーが出たのは、このマウント処理に原因があったようです。

まとめると、

・chrootディレクトリにはファイルを残さない
・named-chrootがファイルをchrootディレクトリに自動マウントしてくれるので、chrootでないときと同じ場所にファイルを置く
・/usr/libexec/setup-named-chroot.sh /var/named/chroot onはnamed-chrootが起動時に自動実行し、終了時に自動解除してくれるので、手動操作をしない

ここらへんがポイントではないでしょうか。

以上、制服屋の店長でした。

3 thoughts on “CentOS7 / 7.1のBINDをchrootで起動できない

  1. Pingback: 朝からサーバー構築に没頭 | HIROCHANDA'S ROOM

  2. Pingback: CentOS7 bind bind-chroot できないっ!! についてのまとめ | HIROCHANDA'S ROOM

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です