Kea DHCP:ネットワーク管理者のためのモダンなISC DHCP代替ソリューション

Network tutorial - IT technology blog
Network tutorial - IT technology blog

今すぐ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へのアップグレードを検討してください。

Share: