ISC-DHCPのインストール。ISCものはセキュリティ的に 全幅の信頼なぞ置けやしないのでchrootインストール。
Makefile.confのパス定義をこんな感じに。
USERBINDIR = /var/dhcp-3.0.3/bin BINDIR = /var/dhcp-3.0.3/sbin CLIENTBINDIR=/var/dhcp-3.0.3/sbin ADMMANDIR = /var/dhcp-3.0.3/share/man/cat8 FFMANDIR = /var/dhcp-3.0.3/share/man/cat5 LIBMANDIR = /var/dhcp-3.0.3/share/man/cat3 USRMANDIR = /var/dhcp-3.0.3/share/man/cat1
んで、
./configure make sudo make install
インストール先は /var/dhcp-3.0.3 だが、
バージョン名なしで行けるようにsymlinkを張っておく。
ln -s dhcp-3.0.3 /var/dhcp
dhcpdを /var/dhcp-3.0.3 に chroot して動かすために、
少し環境設定。まず、そのディレクトリにchrootしたあとからも、
/var/dhcp-3.0.3が存在するようにsymlinkを張り、
ついでに var/run var/db も作る。
cd /var/dhcp-3.0.3 mkdir -p var/{run,db} ln -s .. var/dhcp-3.0.3
dev/ に最低限のデバイスファイルを生成するシェルスクリプト
devfsrule.sh。
#!/bin/sh rule=67 devfs rule -s $rule delset devfs rule -s $rule add hide devfs rule -s $rule add path bpf* unhide devfs -m /var/dhcp/dev rule -s $rule applyset
必要なライブラリをコピー(make時に gcc -staticしても可)。
mkdir lib{,.exec} cp /lib/libc.so.? lib cp /libexec/ld-elf* libexec
あとは起動させるだけ。お約束のdaemontools runスクリプト。これは
mkdir /var/dhcp-3.0.3/dhcpdしてその中に置こう。
変数MYNETにはネットワークアドレスを書いておく。
#!/bin/sh
MYNET=192.168.1.0
IF=`route get ${MYNET}|awk '/interface:/{print $2}'`
mydir=`dirname $0`
topdir=`(cd $mydir; cd ..; pwd -P)`
rm -f $topdir/var/run/dhcpd.pid
df -tdevfs $topdir/dev || mount -t devfs devfs $topdir/dev
$topdir/devfsrule.sh
exec 2>&1
exec env - PATH=/sbin:/usr/sbin:/usr/bin:$topdir/sbin \
chroot $topdir dhcpd -d $IF
ついでにlog/run
#!/bin/sh exec setuidgid dnslog multilog !tai64nlocal t ./main
準備できたら
ln -s /var/dhcp /service
てな感じで動かしませう。
叱咤激励感想ツッコミはゲストブックへ
Generated with mkdiary.rb