概要
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";
}


コメント