Ubuntu 26.04 で検証用ネットワークやサーバー管理用ネットワークを作る場合、DHCP サーバーで IPv4 アドレス、デフォルトゲートウェイ、DNS、固定割り当てを配布できるようにしておくと、初期構築と再構築が安定します。
この記事では、isc-dhcp-server を使って IPv4 DHCP を配布する基本設定と、PXE autoinstall と連携するための next-server / filename の考え方をまとめます。
isc-dhcp-serverの導入/etc/default/isc-dhcp-serverで待ち受けインターフェイスを限定する方法/etc/dhcp/dhcpd.confの基本構成- 固定割り当てと PXE boot 用の
next-server/filename - 構文検証、サービス確認、DHCP パケット確認
| 対象 OS | Ubuntu 26.04 Server |
|---|---|
| パッケージ | isc-dhcp-server |
| IPv4 サービス | isc-dhcp-server.service |
| IPv6 サービス | isc-dhcp-server6.service |
| 主な設定 | /etc/default/isc-dhcp-server、/etc/dhcp/dhcpd.conf |
DHCP サーバーの役割を確認する
DHCP サーバーは、クライアントへ IP アドレス、サブネット、デフォルトゲートウェイ、DNS サーバーなどを配布します。PXE boot では、これに加えて TFTP サーバーの IP アドレスと起動ファイル名を返すことで、ネットワーク起動の入口にもなります。
- 通常の端末には IPv4 アドレス、ルーター、DNS を配布する
- サーバーには MAC アドレスに基づく固定割り当てを使う
- PXE クライアントには
next-serverとfilenameを返す - 待ち受けるインターフェイスを明示して、意図しないセグメントへ配布しない
- 設定反映前に
dhcpd -tで構文を検証する
isc-dhcp-server をインストールする
Ubuntu 26.04 では isc-dhcp-server パッケージを導入します。IPv4 だけを扱う場合は、IPv6 側のサービスを止めておくと役割が明確になります。
sudo apt update
sudo apt install -y isc-dhcp-server
sudo systemctl disable --now isc-dhcp-server6.service
systemctl status isc-dhcp-server.service --no-pager待ち受けインターフェイスを指定する
/etc/default/isc-dhcp-server では、DHCP を待ち受けるインターフェイスを指定します。複数 NIC のサーバーでは、管理用、内部用、外部用のどこで DHCP を配布するかを明確にします。
INTERFACESv4="enp3s0 enp4s0"
INTERFACESv6=""基本的な dhcpd.conf を作成する
/etc/dhcp/dhcpd.conf には、配布するサブネット、ルーター、DNS サーバー、アドレスプール、固定割り当てを記述します。サーバー用途では、重要なホストは host ブロックで固定する方が運用しやすくなります。
authoritative;
default-lease-time 600;
max-lease-time 7200;
subnet 172.17.16.0 netmask 255.255.255.0 {
range 172.17.16.100 172.17.16.199;
option routers 172.17.16.1;
option domain-name-servers 172.17.16.10, 172.17.16.11;
option domain-name "example.com";
}
host server01.example.com {
hardware ethernet 52:54:00:12:34:56;
fixed-address 172.17.16.21;
}PXE boot 用の設定を追加する
PXE autoinstall と連携する場合は、PXE クライアントに TFTP サーバーと起動ファイル名を返します。UEFI x64 の構成では、起動ファイルとして grubnetx64.efi を返す構成が扱いやすいです。
option arch code 93 = unsigned integer 16;
class "pxeclients" {
match if substring (option vendor-class-identifier,0,9) = "PXEClient";
next-server 172.17.16.10;
filename "grubnetx64.efi";
}設定ファイルの構文を確認する
サービスを再起動する前に dhcpd -t で構文を検証します。Ubuntu のパッケージでは、設定ファイルを指定して検証できます。
sudo /usr/sbin/dhcpd -t -cf /etc/dhcp/dhcpd.conf
sudo systemctl restart isc-dhcp-server.service
sudo systemctl enable isc-dhcp-server.service
systemctl status isc-dhcp-server.service --no-pager待ち受けとログを確認する
DHCP は UDP 67 番で待ち受けます。サービス状態だけでなく、ソケット、journal、syslog を確認すると、設定エラーやインターフェイス指定ミスを見つけやすくなります。
ss -lunp | grep ':67'
journalctl -u isc-dhcp-server.service --no-pager -n 100
grep dhcpd /var/log/syslogDHCP パケットを確認する
クライアントがアドレスを受け取れない場合は、サーバー側で DHCP Discover / Offer / Request / Ack が見えているか確認します。複数 NIC 構成では、対象インターフェイスを指定して確認します。
sudo tcpdump -ni enp3s0 'port 67 or port 68'
sudo tcpdump -ni enp4s0 'port 67 or port 68'固定割り当てを運用する
サーバー、PXE 対象機、ネットワーク機器は、MAC アドレスと IP アドレスを対応付けて固定割り当てにすると、DNS、監視、証明書、構成管理と合わせやすくなります。ホスト名、MAC アドレス、IP アドレスの台帳と dhcpd.conf の内容を一致させることが大切です。
host k8s-worker01.example.com {
hardware ethernet 52:54:00:aa:bb:cc;
fixed-address 172.17.16.31;
}
host k8s-worker02.example.com {
hardware ethernet 52:54:00:aa:bb:dd;
fixed-address 172.17.16.32;
}公開前の確認ポイント
INTERFACESv4が DHCP を配布したいインターフェイスだけになっている/etc/dhcp/dhcpd.confの構文検証が通っているisc-dhcp-server6.serviceを使わない場合は停止しているisc-dhcp-server.serviceが active になっている- UDP 67 番で待ち受けている
- PXE 用の
next-serverとfilenameが想定値になっている tcpdumpで DHCP パケットを確認できる
まとめ
Ubuntu 26.04 の DHCP サーバー基本設定では、isc-dhcp-server を導入し、/etc/default/isc-dhcp-server で待ち受けインターフェイスを限定し、/etc/dhcp/dhcpd.conf で配布内容を管理します。
PXE autoinstall と組み合わせる場合は、通常のアドレス配布に加えて next-server と filename "grubnetx64.efi" を返せることが重要です。構文検証、サービス状態、UDP 67 番、DHCP パケットまで確認しておくと、ネットワーク起動の切り分けも進めやすくなります。

