DHCPサーバーとは
DHCPサーバーとは、コンピューターがネットワークへ接続するための情報を配布し、自動的な設定を可能とするサーバーです。一般的なご家庭であれば、LANケーブルを繋ぐだけで、あるいはWi-Fiのアクセスポイントに繋ぐだけで、デバイスにIPアドレスが割り当てられ、インターネットへ接続できるようになるでしょう。これが可能なのは、LAN内にDHCPサーバーが存在するためです。
DHCPサーバーは、ネットワークにおいて必須というわけではありません。DHCPサーバーがなくとも、IPアドレスやDNSサーバー、デフォルトゲートウェイといった情報を手動で設定すれば、通信自体は可能だからです。ですが今どきのLANには、PCと比較してネットワークの設定が行いにくい、ゲーム機や液晶テレビのようなデバイスも繋がるのが一般的でしょう。こうした事情を考慮すると、DHCPサーバーは実質的に必須の存在だと言ってよいのではないでしょうか。
筆者にDHCPサーバーが必要になった理由
実は筆者は最近引越しをし、これを機に自宅の回線をフレッツ光クロス

DHCPではIPアドレスだけでなく、DHCPオプションとして、使用するDNSサーバーやルーターといった情報を設定できます。ですが見ての通り、このルーターのDHCPサーバー機能では、リースするIPアドレスしか設定できません。というのも一般の家庭においては、LAN内のデバイスがインターネットに接続できればそれでよいというケースがほとんどです。DNSサーバーやゲートウェイはルーター自身が兼ねているため、わざわざ個別に設定する必要がない
しかし筆者は第834回や第864回で紹介したように、DNSサーバーにUnboundを利用しています。これが非常に快適なため、自由にDNSを指定できないDHCPサーバーは困ります[1]。
やはり自分好みの環境を作るのであれば、自由にカスタムできるソフトウェアを使うのが一番です。それならDHCPサーバーもUbuntuで立ててしまおうではないか、というのが今回のお題となります。
Kea DHCPのインストール
それではUbuntu 24.
DHCPサーバーと言えば、従来はInternet Systems Consortium
Ubuntuのリポジトリには、keaというパッケージが存在します。これはKeaのサーバーコンポーネント一式をインストールするためのメタパッケージで、具体的には、IPv4のDHCPサーバー本体である
今回は、IPv4のDHCPサーバーだけがあればいいため、以下のコマンドでkea-dhcp4-serverパッケージのみをインストールしました。
$ sudo apt install -U -y kea-dhcp4-server
なおネットワーク内に複数のDHCPサーバーが存在するのはトラブルの元です。既にDHCPサーバーが動作しているのであれば、このタイミングで停止しておいてください。
Kea DHCPの設定
Kea DHCPサーバー
筆者の設定は以下の通りです。これがおおむね、Kea DHCPサーバーの最小構成となるでしょう。
{
"Dhcp4": {
"interfaces-config": {
"interfaces": [ "enp1s0" ]
},
"lease-database": {
"type": "memfile",
"persist": true,
"name": "/var/lib/kea/kea-leases4.csv",
"lfc-interval": 3600
},
"valid-lifetime": 3600,
"option-data": [
{
"name": "domain-name-servers",
"data": "192.168.1.4, 192.168.1.5"
},
],
"subnet4": [
{
"id": 1,
"subnet": "192.168.1.0/24",
"pools": [ { "pool": "192.168.1.50 - 192.168.1.99" } ],
"option-data": [
{
"name": "routers",
"data": "192.168.1.1"
}
]
}
],
"loggers": [
{
"name": "kea-dhcp4",
"output_options": [
{
"output": "syslog",
"pattern": "%-5p %m\n"
}
],
"severity": "INFO",
"debuglevel": 0
}
]
}
}
内容について詳しく説明します。
"interfaces-config": {
"interfaces": [ "enp1s0" ]
},
interfacesには、DHCPのリクエストを受け取るインターフェイスを指定します。サーバーによって異なりますので、使用しているNICのデバイス名を指定してください。なおこのNICには、固定IPアドレスが割り当てられている必要があります。Ubuntu Serverの固定IPアドレスの設定方法は、第822回などを参考にしてください。
"lease-database": {
"type": "memfile",
"persist": true,
"name": "/var/lib/kea/kea-leases4.csv",
"lfc-interval": 3600
},
DHCPサーバーがリースしたIPアドレス等の情報は、すべてリースデータベースに記録されます。lease-databaseは、このリースデータベースに関する設定です。typeには情報を保存するストレージを指定します。ここでは小規模な家庭での利用を想定しているため、memfileを指定しました。大規模なネットワークでは、mysqlやpostgresqlといったデータベースも使えます。
persistは、リースに関する情報をファイルに書き込むかどうかを制御します。デフォルトはtrueです。これをfalseに変更してしまうと、サーバーが再起動した際に、払い出したIPアドレスがわからなくなってしまう問題が発生します。そのためtrueのまま変更しないことを推奨します。
nameはリースファイルのパスを指定します。lfc-intervalは、リースファイルのクリーンアップが行われるインターバルを指定します。
"valid-lifetime": 3600,
valid-lifetimeは、リースされたIPアドレスが有効な期間です。ここでは1時間
"option-data": [
{
"name": "domain-name-servers",
"data": "192.168.1.4, 192.168.1.5"
},
],
option-dataでは、クライアントに提供する構成オプションを定義します。domain-name-serversは、使用するDNSサーバーの設定です。筆者の自宅には
"subnet4": [
{
"id": 1,
"subnet": "192.168.1.0/24",
"pools": [ { "pool": "192.168.1.50 - 192.168.1.99" } ],
"option-data": [
{
"name": "routers",
"data": "192.168.1.1"
}
]
}
],
subnet4は、IPv4サブネットに関する設定です。このDHCPサーバーに対し、DHCPリクエストを送信するサブネットを、すべて定義する必要があります
idは、そのサブネット定義の識別子です。今回はサブネット定義が1つしかないため、1を指定しました。
サブネット定義には、subnetとpoolsの2つのパラメータが必要です。subnetには、そのサブネットのIPv4アドレスの範囲をCIDR表記で記述します。筆者の自宅のネットワークは
"loggers": [
{
"name": "kea-dhcp4",
"output_options": [
{
"output": "syslog",
"pattern": "%-5p %m\n"
}
],
"severity": "INFO",
"debuglevel": 0
}
]
loggersには、ログに関する設定を記述します。nameには、Keaで定義されているログ対象を指定します。ここではIPv4のDHCPサーバー全般をロギングしたいため、
output_
severityにはログレベルを、debuglevelには、ログレベルをDEBUGにした際の詳細さを指定します。
設定が完了したら、Kea DHCPサーバーを再起動してください。
$ sudo systemctl restart kea-dhcp4-server.service
その状態で、PCやスマホをネットワークに接続してみましょう。/var/
2025-05-27T12:15:12.860665+00:00 dhcp kea-dhcp4[16772]: 2025-05-27 12:15:12.859 INFO [kea-dhcp4.leases/16772.131385194116800] DHCP4_LEASE_ADVERT [hwtype=1 e8:6e:3a:9d:da:00], cid=[01:e8:6e:3a:9d:da:00], tid=0xed24c97f: lease 192.168.1.51 will be advertised
またクライアント側でも、設定したレンジのIPアドレスや、DNSサーバー、デフォルトゲートウェイが自動的に設定されていることを確認しましょう。
このようにIPアドレスを配るだけであれば、DHCPサーバーの構築はとても簡単です。もちろん、単にIPアドレスを配るだけであれば、ルーターの機能で十分という人も多いでしょう。ですがKea DHCPサーバーは非常に高いパフォーマンスを誇り、大規模なネットワークにも対応できるDHCPサーバーです。またREST APIでの制御や、再起動なしでの設定の反映など、実運用面でのメリットも多く存在します。Storkというグラフィカルなダッシュボードを導入すれば、Webブラウザからの管理も可能です。ルーターのDHCP機能では物足りない人や、いい加減にISC DHCPdからの移行を考えなければならない人は、Keaを試してみてはいかがでしょうか。
なお筆者はKea DHCP + Unboundで家庭内ネットワークを構築していますが、小規模なDHCP兼DNSサーバーとして、Dnsmasq単体を使うという選択肢もあります。こちらもUbuntuであれば簡単に導入できますので、興味があったら調べてみてください。