Raspbian: DHCP サーバーの構築 ISC DHCP

インストール

$ 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 サーバーが起動しているのが原因。起動前に3秒待つように、起動スクリプトを修正すれば OK。

/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

 

 ログ

リースログは /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";
}