トップ «前の日記(2002年11月29日 (金)) 最新 次の日記(2002年12月01日 (日))» 編集

*Messages*

Search

書いてる人: しまだみつのぶ (aka. simm, saica)

最新情報URL: http://gouketsu.net/simm/d/

"8024402C"でたどり着かれた方はこちら: 「壁の内側からWindowsUpdateに失敗する


2002年11月30日 (土) 8658人 (2400調査) [長年日記]

2 [FreeBSD] bindをjailに閉じ込める

FreeBSDで, なるべく小さい jail 環境で bind を動かすことを試みる. なお, 以下の記述においては, jail 環境の root を /jail/ns とし, BIND の各設定ファイルは /jail/ns/etc/namedb に置くものとする.

2 jail内部環境構築:

まずは, 必要最低限のファイルおよびディレクトリを作成. bind9のnamedを実行するには

が必要なので, これらを jail 環境の root に作成する.

# mkdir -p /jail/ns
# cd /jail/ns
# mkdir -p dev etc/namedb usr/lib usr/libexec usr/sbin var/run
# mknod dev/random c 2 3
# chmod 644 dev/random
# cp -p /usr/libexec/ld-elf.so.1 usr/libexec
# cp -p /usr/lib/libc.so.4 usr/lib
# ln -sf libc.so.4 usr/lib/libc.so

次に, namedのバイナリを作成し, jail内に作成.

% ./configure --prefix=/usr --sysconfdir=/etc/namedb --localstatedir=/var
% make
# install -cs bin/named/named /jail/ns/usr/sbin

この状態で

# ifconfig fxp0 inet 192.168.0.2/32 alias
# jail /jail/ns ns.example.org 192.168.0.2 /usr/sbin/named -d 3

と実行 *1 し, host や nslookup で名前解決できているかどうかを確認できる. もしできていない場合, 上記のように -d オプションをつけて実行すると /jail/ns/named.run というファイルができるので, これを見て問題解決していただきたい.

2 起動時に有効にしておくために:

DNS のようなサービスは, ただ「動かせる」だけではあまりうれしくない. 「『起動と同時に』動かせる」ことが是非とも必要となる. 以下では, 自動起動のための設定を行う. 基本的には

  • ネットワークインタフェースのalias設定
  • syslogdの設定
  • rcスクリプトの設定

が必要だが, rcスクリプトそのものを除き, これらは /etc/rc.conf に記述する. 具体的には, 以下の3行を /etc/rc.conf に追加する. *2

ifconfig_fxp0_alias0="inet 192.168.0.2 netmask 255.255.255.255"
syslogd_flags="-l /jail/ns/dev/log"
local_startup="/usr/local/etc/rc.d /usr/X11R6/etc/rc.d /jail/rc.d"

ここでは, それぞれ上記に列挙した順番に設定を記述したが, とくに順番に意味はない. local_startup には, rcスクリプトを置くディレクトリを列挙するが, 仮に jail 環境のスクリプトは /jail/rc.d に置くものとする. ここに, named 起動用に, /jail/rc.d/named.sh を作成する.

#!/bin/sh
JAILBIN=/usr/sbin/jail
JAILROOT=/jail/ns
NAMEDBIN=/usr/sbin/named
case $1 in
start)
	if [ -x $JAILBIN -a -x ${JAILROOT}${NAMEDBIN}    ]; then
		echo -n ' jailed-named'
		$JAILBIN $JAILROOT ns.angel.fan.gr.jp 192.168.0.2 $NAMEDBIN
	fi
	;;
stop)
	killall named
	;;
*)
	echo "usage: $0 {start|stop}" 1>&2
	;;
esac

あまり凝ったことをする必要もないので, 最低限 start および stop を受け付けられるようになっておれば問題ない.

2 使用感:

ダイアルアップの頃から, Linuxでbindを動かしていたのだが, 従来環境に比べると, なぜかうまくひけないことが多く, しばしば host コマンドが失敗する. しばらく様子を見, どちらで正式運用するかを決めたいところ.

*1 もちろん, fxp0, ns.example.org および 192.168.0.2 は各自よみかえること

*2 何度も言うようだが, IPアドレス等の設定は各自環境にあわせて行っていただきたい

[]

Information

最近のツッコミ(敬称略)

更新情報取得方法

*Messages* の更新情報取得には、antenna.lirs もしくは index.rdfをご利用ください。 豪傑アンテナLIRSからも取得可能です。