手当たり次第に書くんだ

飽きっぽいのは本能

Ubuntu 26.04 DHCP サーバーの基本設定 – isc-dhcp-server で IPv4 を配布する

関連する記事

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 パケット確認
対象 OSUbuntu 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
参考書籍
参考書籍
Ubuntu Server Administration
Ubuntu Server のネットワークサービス、名前解決、インストール基盤を体系的に確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。
Amazon で見る
このリンクは Amazon アソシエイトリンクです。

DHCP サーバーの役割を確認する

DHCP サーバーは、クライアントへ IP アドレス、サブネット、デフォルトゲートウェイ、DNS サーバーなどを配布します。PXE boot では、これに加えて TFTP サーバーの IP アドレスと起動ファイル名を返すことで、ネットワーク起動の入口にもなります。

  • 通常の端末には IPv4 アドレス、ルーター、DNS を配布する
  • サーバーには MAC アドレスに基づく固定割り当てを使う
  • PXE クライアントには next-serverfilename を返す
  • 待ち受けるインターフェイスを明示して、意図しないセグメントへ配布しない
  • 設定反映前に 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 を配布するかを明確にします。

/etc/default/isc-dhcp-server
INTERFACESv4="enp3s0 enp4s0"
INTERFACESv6=""

基本的な dhcpd.conf を作成する

/etc/dhcp/dhcpd.conf には、配布するサブネット、ルーター、DNS サーバー、アドレスプール、固定割り当てを記述します。サーバー用途では、重要なホストは host ブロックで固定する方が運用しやすくなります。

/etc/dhcp/dhcpd.conf
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 を返す構成が扱いやすいです。

dhcpd.conf の一部
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/syslog

DHCP パケットを確認する

クライアントがアドレスを受け取れない場合は、サーバー側で 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-serverfilename が想定値になっている
  • tcpdump で DHCP パケットを確認できる

まとめ

Ubuntu 26.04 の DHCP サーバー基本設定では、isc-dhcp-server を導入し、/etc/default/isc-dhcp-server で待ち受けインターフェイスを限定し、/etc/dhcp/dhcpd.conf で配布内容を管理します。

PXE autoinstall と組み合わせる場合は、通常のアドレス配布に加えて next-serverfilename "grubnetx64.efi" を返せることが重要です。構文検証、サービス状態、UDP 67 番、DHCP パケットまで確認しておくと、ネットワーク起動の切り分けも進めやすくなります。

関連する記事
Ubuntu 26.04 DHCP サーバーの基本設定 – isc-dhcp-server で IPv4 を配布する

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る