こんにちは、インフラエンジニアのryuです。
今回の記事では、LinuxでDHCPサーバーを構築するためのisc-dhcp-serverの設定方法を、初心者向けに解説します。
DHCPサーバーを使うと、パソコンやスマートフォンへIPアドレス、サブネットマスク、デフォルトゲートウェイ、DNSサーバーなどを自動的に配布できます。
ただし、最初に重要な注意点があります。
ISC DHCPは開発元のサポートが終了しています。Ubuntu 24.04 LTSでも、isc-dhcp-serverは非推奨・サポート対象外です。新しくDHCPサーバーを構築する場合は、後継のKeaやdnsmasqを検討してください。
この記事では、既存環境の保守やDHCPの学習を目的として、isc-dhcp-serverの基本設定を説明します。検証する場合は、外部から分離したネットワークを利用しましょう。
isc-dhcp-serverの設定方法¶
isc-dhcp-serverは、Linux上でDHCPサーバーを動かすためのパッケージです。
基本的な手順は、次のとおりです。
- DHCPサーバーへ固定IPアドレスを設定する
- isc-dhcp-serverをインストールする
- DHCPを提供するインターフェースを指定する
/etc/dhcp/dhcpd.confを編集する- 構文を確認してサービスを再起動する
- クライアントがIPアドレスを取得できるか確認する
今回の例では、次のネットワークを使用します。
| 項目 | 設定値 |
|---|---|
| ネットワーク | 192.168.1.0/24 |
| DHCPサーバー | 192.168.1.10 |
| デフォルトゲートウェイ | 192.168.1.1 |
| 配布するIPアドレス | 192.168.1.100〜192.168.1.200 |
| DNSサーバー | 1.1.1.1、8.8.8.8 |
DHCPサーバー自身のIPアドレスやデフォルトゲートウェイは、配布範囲に含めないようにします。
DHCPとは?¶
DHCPは、Dynamic Host Configuration Protocolの略です。
DHCPを利用しない場合、管理者は端末ごとにIPアドレス、サブネットマスク、デフォルトゲートウェイ、DNSサーバーを設定しなければなりません。
DHCPサーバーを用意すると、ネットワークへ接続した端末へ必要な情報を自動配布できます。
一般的なIPv4のDHCPでは、次の流れで設定情報を受け取ります。
- DHCP Discover:クライアントがDHCPサーバーを探す
- DHCP Offer:サーバーが利用可能なIPアドレスを提案する
- DHCP Request:クライアントがそのアドレスを要求する
- DHCP ACK:サーバーが利用を許可する
頭文字を取って、DORAと呼ばれることもあります。
DHCPサーバーへ固定IPアドレスを設定する¶
DHCPサーバー自身のIPアドレスは固定しておきます。アドレスが変わると、管理者が接続できなくなったり、設定したネットワークと一致しなくなったりするためです。
現在のIPアドレスとインターフェース名は、次のコマンドで確認できます。
ip address
インターフェース名は、環境によってeth0、ens33、enp0s8などと異なります。
今回の例では、DHCPを提供するインターフェースをenp0s8、固定IPアドレスを192.168.1.10/24とします。
固定IPアドレスの設定方法は、UbuntuのバージョンやNetplanなどの管理方式によって異なります。設定後は、次のコマンドで確認してください。
ip address show enp0s8
isc-dhcp-serverをインストールする¶
パッケージ一覧を更新します。
sudo apt update
続いて、isc-dhcp-serverをインストールします。
sudo apt install isc-dhcp-server

インストール直後は、設定が完成していないためサービスの起動に失敗することがあります。必要な設定を行ってから起動状態を確認します。
DHCPを提供するインターフェースを指定する¶
DHCPの要求を受け付けるインターフェースを指定します。
sudo vi /etc/default/isc-dhcp-server
IPv4の設定項目へ、インターフェース名を記述します。
INTERFACESv4="enp0s8"
INTERFACESv6=""
インターフェース名を間違えると、DHCPサーバーが要求を受信できません。ip linkやip addressで確認しましょう。
dhcpd.confを設定する¶
isc-dhcp-serverの主な設定ファイルは、次の場所にあります。
/etc/dhcp/dhcpd.conf
dhcpd.configではなく、正しいファイル名はdhcpd.confです。
編集する前に、バックアップを作成します。
sudo cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.bak
sudo vi /etc/dhcp/dhcpd.conf

今回の構成では、次のように設定します。
authoritative;
default-lease-time 600;
max-lease-time 7200;
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.200;
option subnet-mask 255.255.255.0;
option routers 192.168.1.1;
option domain-name-servers 1.1.1.1, 8.8.8.8;
}
authoritative¶
authoritative;
このサーバーが、対象ネットワークを管理するDHCPサーバーであることを示します。
同じネットワーク内に別のDHCPサーバーが存在すると、意図しない設定が配布される可能性があります。家庭用ルーターのDHCP機能が有効なままになっていないか確認してください。
リース時間¶
default-lease-time 600;
max-lease-time 7200;
クライアントへIPアドレスを貸し出す時間を秒単位で指定します。
subnetとrange¶
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.200;
}
subnetにはネットワークアドレスとサブネットマスクを指定し、rangeにはクライアントへ配布するIPアドレスの範囲を指定します。
ネットワークアドレス、ブロードキャストアドレス、ルーター、サーバーなどの固定IPアドレスは含めないようにしましょう。
デフォルトゲートウェイとDNSサーバー¶
option routers 192.168.1.1;
option domain-name-servers 1.1.1.1, 8.8.8.8;
option routersにはデフォルトゲートウェイ、option domain-name-serversにはDNSサーバーを指定します。
DHCPサーバーとルーターが別の機器である場合、option routersへDHCPサーバー自身のIPアドレスを設定しないように注意してください。
設定ファイルの構文を確認する¶
設定を保存したら、サービスを再起動する前に構文を確認します。
sudo dhcpd -t -cf /etc/dhcp/dhcpd.conf
エラーがなければ、通常は何も表示されません。
エラーが表示された場合は、行番号、セミコロン、波括弧、IPアドレスの範囲などを確認します。
isc-dhcp-serverを再起動する¶
設定に問題がなければ、サービスを再起動します。
sudo systemctl restart isc-dhcp-server
起動状態を確認します。
sudo systemctl status isc-dhcp-server
active (running)と表示されていれば、サービスは起動しています。
ログを確認する場合は、次のコマンドを使用します。
sudo journalctl -u isc-dhcp-server
リアルタイムで確認する場合は、-fを付けます。
sudo journalctl -fu isc-dhcp-server
DHCPでIPアドレスを取得できない場合¶
クライアントがIPアドレスを取得できない場合は、次の項目を確認します。
- サーバーとクライアントが同じブロードキャストドメインにいるか
/etc/default/isc-dhcp-serverのインターフェース名が正しいか- サーバーの固定IPアドレスと
subnetの範囲が一致しているか - 同じネットワーク内に別のDHCPサーバーが動いていないか
- UDPの67番・68番ポートが遮断されていないか
- 仮想マシンのネットワーク設定が正しいか
Windowsクライアントでは、次のコマンドで設定を再取得できます。
ipconfig /release
ipconfig /renew
ipconfig /all
Linuxでは、ネットワーク接続を再起動した後、次のコマンドで確認します。
ip address
ip route
resolvectl status
サーバー側のログを表示した状態でクライアントを接続すると、DiscoverやOfferが届いているか確認しやすくなります。
新規構築ではKeaを検討する¶
ISC DHCPはサポートが終了しているため、新しいUbuntu環境ではKeaが推奨されています。
Keaは、ISC DHCPの後継として開発されたDHCPサーバーです。設定形式や管理方法はisc-dhcp-serverと異なりますが、新しい環境を構築する場合はKeaから学ぶのがおすすめです。
一方、既存環境ではisc-dhcp-serverが残っていることがあります。そのため、dhcpd.confの読み方やDHCPの基本動作を理解しておくことには意味があります。
DHCPは、実際に端末へIPアドレスを配布して確認すると理解しやすくなります。
InfraAcademyのネットワーク入門講座では、IPアドレス、サブネットマスク、DHCP、ルーティング、VLAN、NATなどを基礎から学習できます。
Linuxサーバーのコマンド、設定ファイル、サービス、ログの確認方法を学びたい方は、Linux入門講座もおすすめです。
また、AWS上のVPC、サブネット、ルートテーブルなどへ知識をつなげたい方は、AWS講座へ進むと理解を深められます。
isc-dhcp-serverの設定方法まとめ¶
今回は、isc-dhcp-serverの設定方法を解説しました。
- DHCPは、IPアドレスやネットワーク設定を自動配布する
- ISC DHCPはサポートが終了しており、新規構築ではKeaなどを検討する
- DHCPサーバー自身には、配布範囲外の固定IPアドレスを設定する
- 主な設定ファイルは
/etc/dhcp/dhcpd.conf - インターフェースは
/etc/default/isc-dhcp-serverで指定する dhcpd -tで構文を確認してからサービスを再起動する- 取得できない場合は、インターフェース、サブネット、ファイアウォール、ログを確認する
まずは外部ネットワークから分離した検証環境を用意し、クライアントへIPアドレスが配布される流れを確認してみましょう。



