dhcpサーバ
概要
FreeBSD 上で DHCP サーバを動作させ,内部ネットワークのクライアントに IP アドレス,デフォルトゲートウェイ,DNS サーバのアドレスを自動配布する手順である.
DHCP サーバのソフトウェアには Kea DHCP(ISC 製)を用いる.従来広く使われていた ISC DHCP(dhcpd)は開発元による保守が 2022 年で終了しており,後継である Kea DHCP の使用が推奨されている.設定ファイルの書式は JSON であり,ISC DHCP の dhcpd.conf とは互換性がない.
インストール
FreeBSD のパッケージシステムでインストールする.root 権限で実行する.
pkg install kea
インストールされる主なファイルとディレクトリは次の通りである.設定ファイルは /usr/local/etc/kea/kea-dhcp4.conf,リース情報は /var/db/kea に置かれる.
設定ファイルの編集
インストール直後の設定ファイルを退避し,新しく作成する.
cp /usr/local/etc/kea/kea-dhcp4.conf /usr/local/etc/kea/kea-dhcp4.conf.org
vi /usr/local/etc/kea/kea-dhcp4.conf
/usr/local/etc/kea/kea-dhcp4.conf の記述例である.192.168.40.0/24 のネットワークに対して,192.168.40.5 から 192.168.40.10 の範囲の IP アドレスを配布する設定である.
{
"Dhcp4": {
"interfaces-config": {
"interfaces": [ "vr0" ]
},
"lease-database": {
"type": "memfile",
"persist": true,
"name": "/var/db/kea/kea-leases4.csv"
},
"renew-timer": 900,
"rebind-timer": 1800,
"valid-lifetime": 3600,
"option-data": [
{
"name": "domain-name",
"data": "example.local"
},
{
"name": "domain-name-servers",
"data": "192.168.33.1"
}
],
"subnet4": [
{
"id": 1,
"subnet": "192.168.40.0/24",
"pools": [ { "pool": "192.168.40.5 - 192.168.40.10" } ],
"option-data": [
{
"name": "routers",
"data": "192.168.40.1"
}
]
}
],
"loggers": [
{
"name": "kea-dhcp4",
"output_options": [
{
"output": "/var/log/kea/kea-dhcp4.log"
}
],
"severity": "INFO",
"debuglevel": 0
}
]
}
}
設定項目の詳細
interfaces:DHCP の要求を受け付けるネットワークインタフェース名を指定する.内部ネットワークに接続されているインタフェース名(例:vr0)を指定する.外部ネットワーク側のインタフェースを指定すると,外部に対して IP アドレスを配布してしまうので指定しない.
lease-database:配布済み IP アドレス(リース)の記録先である.type を memfile とした場合,name で指定したファイルに記録される.
renew-timer:クライアントがリースの更新を開始するまでの時間を秒で指定する(T1 タイマ).
rebind-timer:クライアントが他の DHCP サーバも含めて再結合を開始するまでの時間を秒で指定する(T2 タイマ).
valid-lifetime:配布した IP アドレスの有効期間を秒で指定する.この時間を過ぎてもクライアントから更新要求がない場合,そのアドレスは解放される.
domain-name:クライアントに通知するドメイン名である.
domain-name-servers:クライアントに通知する DNS サーバの IP アドレスである.複数指定する場合は,"192.168.33.1, 192.168.33.2" のようにカンマで区切る.
subnet:アドレスを配布する対象のサブネットを CIDR 表記で指定する.id はサブネットごとに異なる正の整数を指定する.
pools:実際に配布する IP アドレスの範囲である.サーバ自身のアドレスや固定割り当てのアドレスは範囲に含めない.
routers:クライアントに通知するデフォルトゲートウェイの IP アドレスである.
ログディレクトリの作成と設定の検査
ログの出力先ディレクトリを作成する.
mkdir -p /var/log/kea
設定ファイルの文法を検査する.JSON の記述誤りがある場合はここでエラーが表示される.
kea-dhcp4 -t /usr/local/etc/kea/kea-dhcp4.conf
サービスの起動
システム起動時に自動的に起動するよう設定し,サービスを開始する.
sysrc kea_enable="YES"
service kea start
service kea status
動作確認
クライアントにアドレスが配布されると,リースファイルに記録される.
cat /var/db/kea/kea-leases4.csv
表示例である.
address,hwaddr,client_id,valid_lifetime,expire,subnet_id,fqdn_fwd,fqdn_rev,hostname,state,user_context,pool_id
192.168.40.5,00:0c:29:e5:f5:43,01:00:0c:29:e5:f5:43,3600,1741827897,1,0,0,client1,0,,0
ログファイル /var/log/kea/kea-dhcp4.log には,DHCPDISCOVER,DHCPOFFER,DHCPREQUEST,DHCPACK のやり取りが記録される.
クライアントの設定
Windows のクライアントで,IP アドレスを DHCP サーバから取得する設定にする.
設定アプリを開き,ネットワークとインターネットを選ぶ.使用しているネットワークアダプタ(イーサネットまたは Wi-Fi)を選び,IP 割り当ての編集をクリックし,自動 (DHCP) を選んで保存する.
設定後,コマンドプロンプトを開き,次のコマンドを実行する.
ipconfig /all
コマンドプロンプトに表示された IPv4 アドレスが,配布範囲(この例では 192.168.40.5 から 192.168.40.10)内の値になっていれば,DHCP サーバは正しく動作している.アドレスが取得できていない場合は,コマンドプロンプトで次のコマンドを実行し,アドレスを再取得する.
ipconfig /release
ipconfig /renew