概要
ISC DHCP Server を使用して、家庭内 LAN の DHCP サーバーを構築する。
ISC DHCP
Enterprise-grade solution for IP address-configuration needs
環境
Raspberry Pi 3 + Raspbian jessie
インストール
$ sudo apt-get install isc-dhcp-server
設定
ネットワークインターフェイスの設定
/etc/default/isc-dhcp-serverファイルの該当部分を修正。
INTERFACES="eth0"
基本設定
/etc/dhcp/dhcpd.confファイルの編集。
サブネット 192.168.1.0/24 リースする IP アドレスの範囲 192.168.1.100 ~ 199 リース期間 1日(最大7日) ps4 に静的アドレス 192.168.1.80 を割り当て
上記条件の設定例は以下の通り。
ddns-update-style none; option domain-name "local"; option domain-name-servers 192.168.1.1; default-lease-time 86400; max-lease-time 604800; log-facility local7; subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.100 192.168.1.199; option routers 192.168.1.1; option broadcast-address 192.168.1.255; option subnet-mask 255.255.255.0; } host ps4 { hardware ethernet b0:05:94:xx:xx:xx; fixed-address 192.168.1.80; }
自動起動
$ sudo systemctl enable isc-dhcp-server
通常は上記で OK のはずだが、リブート後は起動に失敗する。サーバーの eth0 への IP アドレス割り当てより先に DHCP サーバーが起動しているのが原因。
スマートな方法ではないが、DHCP サーバーの起動時に3秒間待つように、起動スクリプトを修正して解決。
/etc/init.d/isc-dhcp-serverファイルの該当部分に sleep 3を追加。
case "$1" in
start)
test_config
log_daemon_msg "Starting $DESC" "$NAME"
sleep 3
start-stop-daemon --start --quiet --pidfile "$DHCPD_PID" \
--exec /usr/sbin/dhcpd -- \
-q $OPTIONS -cf "$DHCPD_CONF" -pf "$DHCPD_PID" $INTERFACES
sleep 2
ログ
IP のリースログは /var/lib/dhcp/dhcpd.leases に以下のようなテキスト形式で記録される。
lease 192.168.1.172 { starts 4 2016/06/23 08:10:45; ends 5 2016/06/24 08:10:45; cltt 4 2016/06/23 08:10:45; binding state active; next binding state free; rewind binding state free; hardware ethernet 08:00:23:xx:xx:xx; client-hostname "premium-phone"; }
コメント