今すぐKea DHCPに移行すべき理由とは?
午前2時に「DHCP pool exhausted(DHCPプール枯渇)」のアラートを受け取るのは、まさに悪夢です。旧来のISC DHCPでは、リースファイルが肥大化してサービスが頻繁にハングアップすることがありました。わずかな設定変更のためにサービス全体を再起動しなければならず、その一瞬で数千台のデバイスの接続が遮断されてしまいます。
ISC DHCPは2022年に公式サポート(End of Life)を終了しました。現代のクラウドシステムの要求に対して、あまりにも低速です。その課題を解決するために誕生したのが**Kea DHCP**です。Keaは1秒間に数千のリクエストを処理でき、JSON形式の設定やREST APIによる完全な自動化をサポートしています。特に、Keaの高可用性(HA)機能は非常に安定しており、前身のような煩わしい同期エラーもありません。
UbuntuへのKea DHCPのインストール
この記事ではUbuntu 22.04を使用します。Keaはモジュール構造を採用しているため、リソースを節約するために必要なコンポーネントだけをインストールできます。
# アップデートとDHCPv4サーバーのインストール
sudo apt update
sudo apt install kea-dhcp4-server -y
編集を始める前に、オリジナルの設定ファイルをバックアップしておきましょう。JSONのフォーマットを誤って壊してしまった場合の備えになります:
sudo cp /etc/kea/kea-dhcp4.conf /etc/kea/kea-dhcp4.conf.bak
サーバーをすぐに動作させるための基本設定を以下に示します。eth0の部分は、実際のインターフェース名(ip aコマンドで確認)に置き換えてください:
{
"Dhcp4": {
"interfaces-config": {
"interfaces": [ "eth0" ]
},
"control-socket": {
"socket-type": "unix",
"socket-name": "/tmp/kea4-ctrl-socket"
},
"lease-database": {
"type": "memfile",
"persist": true,
"name": "/var/lib/kea/kea-leases4.csv",
"lfc-interval": 3600
},
"subnet4": [
{
"subnet": "192.168.1.0/24",
"pools": [ { "pool": "192.168.1.100 - 192.168.1.200" } ],
"option-data": [
{ "name": "routers", "data": "192.168.1.1" },
{ "name": "domain-name-servers", "data": "8.8.8.8, 8.8.4.4" }
]
}
]
}
}
ファイルを保存したら、サービスを再起動してステータスを確認します:
sudo systemctl restart kea-dhcp4-server
sudo systemctl status kea-dhcp4-server
JSON設定の威力
カンマ(,)が一つ足りないだけでサーバーがエラーを吐くため、JSONを敬遠する人も多いでしょう。しかし、JSONはAnsibleやTerraformといったツールにおける標準言語です。ミスを防ぐために、再起動前にkea-dhcp4 -t /etc/kea/kea-dhcp4.confコマンドで構文チェックを行うことをお勧めします。
柔軟なデータベース対応
デフォルトでは、Keaはリース情報を保存するためにmemfile(CSVファイル)を使用します。10,000台を超えるような大規模システムでは、**PostgreSQL**や**MySQL**への移行を検討すべきです。リース情報をデータベースに保存することで、クエリが高速化され、データ競合を心配することなく複数のDHCPサーバーを並列稼働させることが可能になります。
Hooksによる機能拡張
Keaは、ライブラリ(Hooks)をロードすることで機能を拡張できます。例えば、高可用性(HA)モジュールを追加して、2台のサーバーを並列(Active-PassiveまたはActive-Active)で運用できます。これにより、一方のサーバーでハードウェア障害が発生しても、ネットワークを止めることなく運用を継続できます。
"hooks-libraries": [
{
"library": "/usr/lib/x86_64-linux-gnu/kea/hooks/libdhcp_ha.so",
"parameters": {
"high-availability": [{
"name": "primary-server",
"role": "primary",
"url": "http://192.168.1.10:8000/",
"peers": [{
"name": "secondary-server",
"role": "standby",
"url": "http://192.168.1.11:8000/"
}]
}]
}
}
]
REST APIによるリアルタイム管理
これはISC DHCPと比較して最も価値のある進化です。kea-ctrl-agentを有効にすると、サーバーを再起動することなく、設定の変更や配布中のIPリストの確認が可能です。すべての操作はHTTPリクエスト経由で行われます。
例えば、curlコマンドで全リースリストを取得する場合は以下のようになります:
curl -X POST -H "Content-Type: application/json" \
-d '{"command": "lease4-get-all", "service": ["dhcp4"]}' \
http://localhost:8000/
返却されるデータはJSON形式なので、独自の監視ダッシュボードを構築したり、資産管理システム(IPAM)に統合したりするのも容易です。
導入現場からの教訓
以前、旧式のISC DHCPサーバーがI/O過負荷に陥り、深刻なネットワーク遅延が発生したケースを対応したことがあります。当時のdhcpd.leasesファイルは600MBを超えて肥大化しており、データ書き込みのたびに数秒かかっていました。Keaに移行し、バックエンドにPostgreSQLを採用した結果、DHCPのレスポンス遅延は2秒から50ms以下にまで劇的に改善しました。ピーク時でもシステムは極めてスムーズに動作しています。
管理者へのアドバイス:
- ログの活用: Keaのログは非常に詳細です。
journalctl -u kea-dhcp4-server -fを使用して、IPを要求しているデバイスをリアルタイムで監視しましょう。 - LFCの設定: 常に
lfc-intervalを3600(1時間)程度に設定してください。古いレコードをクリーンアップし、データベースを軽量に保つのに役立ちます。 - 固定IPの設定: サブネット内の
reservations項目を使用して、MACアドレスに基づいてサーバーやプリンターに固定IPを割り当てます。
おわりに
ISC DHCPからKeaへの移行は、新しい構文に慣れるまで少し時間がかかるかもしれません。しかし、圧倒的なパフォーマンスとAPIによる管理能力は、それに見合う十分な価値があります。ネットワーク規模が拡大しているのであれば、安定した管理しやすいインフラを確保するために、今すぐKeaへのアップグレードを検討してください。

