[Raspberry Pi] DHCP サーバーの構築

概要

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

コメント

タイトルとURLをコピーしました