mk-mode BLOG

このブログは自作の自宅サーバに構築した Debian GNU/Linux で運用しています。
PC・サーバ構築等の話題を中心に公開しております。(クローンサイト: GitHub Pages

ブログ開設日2009-01-05
サーバ連続稼働時間
Reading...
Page View 合計
Reading...
今日
Reading...
昨日
Reading...

Debian 8 (Jessie) - BIND の chroot 化!

[ サーバ構築 ] [ DNS, Debian, Linux ]

こんばんは。

Debian GNU/Linux 8 (Jessie) に構築した DNS サーバを chroot 化する方法についての記録です。

以前古いバージョンでの作業時に残していた記録を参考に作業を行い、今回更新した作業記録を貼付する形式の内容となっています。
(当然ながら、興味がなければスルーしてください)

0. 前提条件

  • Debian GNU/Linux 8 (Jessie) での作業を想定。
  • DNS サーバ BIND が構築済みであることを想定。
  • chroot ディレクトリは /var/bind9/chroot/ とする。

1. BIND の停止

BIND が起動していると設定に失敗するので、BIND が起動している場合は停止する。

1
# systemctl stop bind9

2. 起動オプションの編集

起動時のオプションを変更するよう “/lib/systemd/system/bind9.service” を編集する。

/lib/systemd/system/bind9.service
1
2
3
4
[Service]
ExecStart=/usr/sbin/named -f -u bind -4 -t /var/bind9/chroot  # <= 変更
ExecReload=/usr/sbin/rndc reload
ExecStop=/usr/sbin/rndc stop

ちなみに、 systemd でなく init だった頃は “/etc/default/bind9” を編集していた。

/etc/default/bind9
1
2
#OPTIONS="-u bind -4"
OPTIONS="-u bind -4 -t /var/bind9/chroot"

3. ディレクトリの作成

chroot 用ディレクトリを作成する。

1
# mkdir -p /var/bind9/chroot/{etc,dev,var/cache/bind,var/run/named}

4. スペシャルファイルの作成

chroot 化に必要なスペシャルファイルを作成し、パーミッションを変更する。

1
2
3
# mknod /var/bind9/chroot/dev/null c 1 3
# mknod /var/bind9/chroot/dev/random c 1 8
# chmod 660 /var/bind9/chroot/dev/{null,random}

5. ディレクトリの移動

元々の BIND ディレクトリを chroot 用ディレクトリへ移動する。

1
# mv /etc/bind /var/bind9/chroot/etc

6. シンボリックリンクの作成

BIND を chroot 用ディレクトリにリンクするようシンボリックリンクを設定する。

1
# ln -s /var/bind9/chroot/etc/bind /etc/bind

7. 所有者・グループ・パーミッションの変更

1
2
3
# chown -R bind:bind /etc/bind/*
# chmod 775 /var/bind9/chroot/var/{cache/bind,run/named}
# chgrp bind /var/bind9/chroot/var/{cache/bind,run/named}

8. 起動スクリプトの編集

起動スクリプト “/etc/init.d/bind9” 内の PID ファイルのパスを変更する。

/etc/init.d/bind9
1
PIDFILE=/var/bind9/chroot/var/run/named/named.pid

9. システムログの設定

rsyslog にログを出力するよう設定を編集する。

1
# echo "\$AddUnixListenSocket /var/bind9/chroot/dev/log" > /etc/rsyslog.d/bind-chroot.conf

10. syslogd の再起動

システムログ設定を編集したので、syslogd を再起動する。

1
# systemctl restart rsyslog

11. BIND の起動

停止させていた BIND を起動する。

1
# systemctl start bind9

参考サイト


以上。

Comments