DHCPサーバー(dhcpd)
20160112

動作環境
 CentOS7.x
 CentOS6.x
概要
 1.二つのネットワークセグメントに対して動作するDHCPサーバーを構築する。
 →NICを二つ用意するか、仮想NICでそれぞれのセグメントに属するインターフェースを用意します。
 2.冗長構成としてルーターのDHCP機能を残したままの状態とする。
 →これに伴い、同一セグメントで複数のDHCPサーバーが動作する事への対処として管理アドレスを厳格化します。
ネットワーク環境
 LinuxによるDHCPサーバー
  ネットワーク1(192.168.0.0/24)
   配布アドレス : 192.168.0.8 〜 192.168.0.31
   配布先IPアドレスを一部固定 : 192.168.0.8
   DHCPサーバーアドレス : 192.168.0.3
   NTPサーバーアドレス : 192.168.0.3
   WINSサーバーアドレス : 192.168.0.3
   デフォルトゲートウェイ : 192.168.0.1
   ブロードキャストアドレス : 192.168.0.255

  ネットワーク2(192.168.10.0/24)
   配布アドレス : 192.168.10.8 〜 192.168.10.31
   配布先IPアドレスを一部固定 : 192.168.10.8
   DHCPサーバーアドレス : 192.168.10.3
   NTPサーバーアドレス : 192.168.10.3
   WINSサーバーアドレス : 192.168.10.3
   デフォルトゲートウェイ : 192.168.10.1
   ブロードキャストアドレス : 192.168.10.255
----------------------------------------------------------------------------------------------------
 ルーターによるDHCPサーバー
  ネットワーク1(192.168.0.0/24)
   配布アドレス : 192.168.0.32 〜 192.168.0.63
   以下同一につき省略

  ネットワーク2(192.168.10.0/24)
   配布アドレス : 192.168.10.32 〜 192.168.10.63
   以下同一につき省略

→ルーター設定については各自適した方法で設定。
→ルーターによる冗長構成を用いない場合は設定不要。
◆まずはインストール
 [root@Server ~]# yum -y install dhcp
◆設定ファイル編集
 [root@Server ~]# vi /etc/dhcp/dhcpd.conf (CentOS5.xの場合は「/etc/dhcpd.conf」)

# 20120125

# ログ出力facility。デフォルト「7」はciscoのログ出力と被るので変更
# 各自環境に合わせて変更して下さい。
log-facility local3;

# ネットワーク設定その1
# DHCPサーバーとして稼動させるネットワークの設定
subnet 192.168.0.0 netmask 255.255.255.0 {

# 配布アドレスの設定。この場合192.168.0.8〜192.168.0.31
range 192.168.0.8 192.168.0.31;

# 動作が不安定な場合や、別のDHCPサーバーを優先して使用したい場合はコメントアウト(#)を外して下さい。
# not authoritative;

# DNSサーバーのアドレスを設定。複数設定やドメイン名での指定も可能。省略可能
option domain-name-servers 192.168.0.3, 192.168.0.1;

# NTPサーバーの設定。複数設定やドメイン名での指定も可能。省略可能
option ntp-servers 192.168.0.3;

# WINSサーバーの設定。複数設定やドメイン名での指定も可能。省略可能
option netbios-name-servers 192.168.0.3;

# デフォルトゲートウェイの設定。通常はルーターのIPアドレス。
option routers 192.168.0.1;

# ブロードキャストアドレスの設定。
option broadcast-address 192.168.0.255;

# 配布したIPアドレスのリリース期限設定。秒数で設定。
default-lease-time 43200;
max-lease-time 86400;
}

# ネットワーク設定その2
# 二つ以上のセグメントに対してDHCPサーバーとして稼動させない場合は必要ありません。
subnet 192.168.10.0 netmask 255.255.255.0 {
range 192.168.10.8 192.168.10.31;
option domain-name-servers 192.168.10.3, 192.168.10.1;
option ntp-servers 192.168.10.3;
option netbios-name-servers 192.168.10.3;
option routers 192.168.10.1;
option broadcast-address 192.168.10.255;
default-lease-time 43200;
max-lease-time 86400;
}

# 固定IP割り当て
# ホスト名等、適当にわかりやすい名前を設定。
host PC-1 {

# 対象ホスト(NIC)のMACアドレスを設定
hardware ethernet 08:00:07:26:c0:a5;

# 配布するIPアドレスを設定
# 「subnet」で指定した配布アドレス領域以外のIPアドレスを指定する事も可能です。
# この場合「not authoritative」とログ出力し、クライアントに「DHCP NAK」を通知するが動作に支障はない模様。
fixed-address 192.168.0.8;
}

host PC-10 {
hardware ethernet 08:00:07:26:c0:a6;
fixed-address 192.168.10.8;
}

→環境に合わせて設定する事。

◆DHCPサーバーとしてIP配布を行うインターフェースを指定する。(任意)
 [root@Server ~]# vi /etc/sysconfig/dhcpd
# Command line options here
DHCPDARGS="eth0 eth1"

→環境によって変更する事。
→複数のNICが存在する場合は設定必須。
◆rsyslog(syslog)の設定を変更する。
 [root@Server ~]# vi /etc/rsyslog.conf
# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none;local1.none;local3.none;local7.none /var/log/messages
→赤文字部分を追加。
→log-facilityで指定した値を設定

# DHCP
local3.* /var/log/dhcpd.log
→末尾でもどこでもいいのでこの2行を追記

→rsyslog(syslog)の設定方法についてはrsyslog&syslog を参考して下さい。
◆logrotateの設定
 [root@Server ~]# vi /etc/logrotate.d/dhcp

# 20120124

/var/log/dhcpd.log {
notifempty
olddir /var/log/old
missingok
sharedscripts
copytruncate
}

→olddir設定は環境によって設定する事。
→logrotateについてはログローテーション設定(logrotate)を参考にして下さい。
◆起動してみる。
 [root@Server ~]# systemctl start dhcpd
dhcpd を起動中: [ OK ]

 [root@Server ~]# /etc/rc.d/init.d/dhcpd start ←CentOS7未満の場合
dhcpd を起動中: [ OK ]

→「NG」となり、ログに下記エラーが出ている場合はインターフェース指定やsbunet設定を間違えている可能性があります。
→「Jan 23 17:55:52 Server dhcpd: No subnet declaration for eth1 (192.168.0.3).」
◆最後に自動起動の設定
[root@Server ~]# systemctl enable dhcpd

[root@Server ~]# chkconfig dhcpd on ←CentOS7未満の場合

以上