DHCPサーバの冗長化設定 (Failover設定)
クライアントPCが多くある環境では各PCに固定IPを割り当てるのは現実的ではないのでDHCPでIPアドレスを割り当てるのが一般的ではないだろうか。大昔から使われていて当たり前になっているDHCPだがこれがトラブルになると被害は大きい。過去オフィスのネットワーク管理をやっていたことがあるがDHCPの障害はじわじわと影響が出てくくる場合が多く結構悩まされた記憶がある。そこで2台体制の冗長化構成にしたDHCPサーバを構築する。構築環境はCentOS8を使用した。
ISC DHCP インストール
DHCPサーバはパッケージからインストールする。
yum install dhcp-server
DHCP 設定
DHCPの設定ファイル dhcpd.conf に冗長化(failover)設定を行う。なお、 dhcpd.conf には冗長化設定のみを記載して IP割当て等のDHCP機能の定義は別ファイルに記載して include で読み込む様にすることにした。冗長構成のため2台のサーバに設定が必要でそれぞれ内容は少し異なるので以下に各サーバ毎に設定内容を記載する。
DHCPサーバ 1号機
設定ファイル:/etc/dhcp/dhcpd.conf
設定のポイントは以下の通り。
- failover peer はフェイルオーバー設定を識別するための名前を記載する。特に決まりはないのでここでは failover-partner を指定した。
- 1号機をプライマリDHCPサーバとして動作させるため primary を指定。
- address は1号機のIPアドレスを記載する。ここでは例として 192.168.100.1 を指定した。
- port は2号機と情報交換するための通信で使用する1号機のポート番号を指定する。ここでは 519 を指定した。
- peer address は2号機のIPアドレスを記載する。ここでは例として 192.168.100.2 を指定した。
- peer port は2号機と情報交換する際の2号機側ポート番号。ここでは 520 を指定した。
- IP割当てを定義したDHCP設定は別ファイル /etc/dhcp/dhcpd.conf.master に記載するため include を追加した。
failover peer "failover-partner" { # 1
primary; # 2
address 192.168.100.1; # 3
port 519; # 4
peer address 192.168.100.2; # 5
peer port 520; # 6
max-response-delay 60;
max-unacked-updates 10;
mclt 3600;
split 128;
load balance max seconds 3;
}
log-facility local6;
include "/etc/dhcp/dhcpd.conf.master"; # 7
DHCPサーバ 2号機
設定ファイル:/etc/dhcp/dhcpd.conf
設定のポイントは以下の通り。
- failover peer は1号機と同じにする。
- 2号機をセカンダリDHCPサーバとして動作させるため secondary を指定。
- address は2号機のIPアドレスを記載する。ここでは例として 192.168.100.2 を指定した。
- port は1号機と情報交換するための通信で使用する2号機のポート番号を指定する。ここでは 520 を指定した。
- peer address は1号機のIPアドレスを記載する。ここでは例として 192.168.100.1 を指定した。
- peer port は1号機と情報交換する際の1号機側ポート番号。ここでは 519 を指定した。
- IP割当てを定義したDHCP設定は別ファイル /etc/dhcp/dhcpd.conf.master に記載するため include を追加した。
failover peer "failover-partner" { # 1
secondary; # 2
address 192.168.100.2; # 3
port 520; # 4
peer address 192.168.100.1; # 5
peer port 519; # 6
max-response-delay 60;
max-unacked-updates 10;
mclt 3600;
split 128;
load balance max seconds 3;
}
log-facility local6;
include "/etc/dhcp/dhcpd.conf.master"; # 7
DHCPサーバ 1号機 2号機共通
設定ファイル:/etc/dhcp/dhcpd.conf.master
DHCPクライアントに割当てるIPアドレスやDNSの定義をします。この辺の設定は通常のDHCPDの設定と変わらないので option や subnet の箇所は他サイトを参照。冗長化に関する箇所を説明すると、subnet -> pool にある failover peer の箇所が冗長化で必要な設定となる。ここには /etc/dhcp/dhcpd.conf で定義した failover peer と同じ文字列を入力する。ここでは failover-partner を入力した。
default-lease-time 21600;
max-lease-time 42300;
option domain-name "example.co.jp";
option domain-name-servers 10.2.3.200, 10.2.3.201;
ddns-update-style none;
authoritative;
# Server
subnet 10.2.3.0 netmask 255.255.255.0 {
option routers 10.2.3.254;
option broadcast-address 10.2.3.255;
option subnet-mask 255.255.255.0;
pool {
failover peer "failover-partner"; # failover setting
range 10.2.3.1 10.2.3.127;
deny dynamic bootp clients;
}
}
Firewall 設定
クライアントが接続するポート 67/udp とDHCPサーバ同士が情報交換するためのポート 519/tcp と 520/tcp に接続できるように firewall-cmd コマンドでfirewalldの設定をする。
firewall-cmd --add-service=dhcp --zone=public --permanent
519/tcp と 520/tcp は下記の通りとなるが1号機と2号機で使用しているポート番号は異なるので注意する。
firewall-cmd --add-port=519/tcp --zone=public --permanent # 1号機の場合
firewall-cmd --add-port=520/tcp --zone=public --permanent # 2号機の場合
下記コマンドで設定反映と設定確認を行う。
firewall-cmd --reload
firewall-cmd --list-services
firewall-cmd --list-ports
DHCP サーバ実行
dhcpd を実行する。
systemctl start dhcpd
正常に実行されていることを status で確認して enable で自動起動するように設定する。
systemctl status dhcpd
systemctl enable dhcpd