InfraAcademy

InfraAcademy Blog

isc-dhcp-serverの設定方法とは?LinuxでIPアドレスを自動配布する手順を解説

| #Linux #Linux初心者 #Linux入門
Linuxをブラウザで試してみる

Linux・ネットワーク・AWSを、環境構築なしで実践学習できます

こんにちは、インフラエンジニアの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サーバーを動かすためのパッケージです。

基本的な手順は、次のとおりです。

  1. DHCPサーバーへ固定IPアドレスを設定する
  2. isc-dhcp-serverをインストールする
  3. DHCPを提供するインターフェースを指定する
  4. /etc/dhcp/dhcpd.confを編集する
  5. 構文を確認してサービスを再起動する
  6. クライアントが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.18.8.8.8

DHCPサーバー自身のIPアドレスやデフォルトゲートウェイは、配布範囲に含めないようにします。

DHCPとは?

DHCPは、Dynamic Host Configuration Protocolの略です。

DHCPを利用しない場合、管理者は端末ごとにIPアドレス、サブネットマスク、デフォルトゲートウェイ、DNSサーバーを設定しなければなりません。

DHCPサーバーを用意すると、ネットワークへ接続した端末へ必要な情報を自動配布できます。

一般的なIPv4のDHCPでは、次の流れで設定情報を受け取ります。

  1. DHCP Discover:クライアントがDHCPサーバーを探す
  2. DHCP Offer:サーバーが利用可能なIPアドレスを提案する
  3. DHCP Request:クライアントがそのアドレスを要求する
  4. DHCP ACK:サーバーが利用を許可する

頭文字を取って、DORAと呼ばれることもあります。

DHCPサーバーへ固定IPアドレスを設定する

DHCPサーバー自身のIPアドレスは固定しておきます。アドレスが変わると、管理者が接続できなくなったり、設定したネットワークと一致しなくなったりするためです。

現在のIPアドレスとインターフェース名は、次のコマンドで確認できます。

ip address

インターフェース名は、環境によってeth0ens33enp0s8などと異なります。

今回の例では、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

isc-dhcp-serverインストール

インストール直後は、設定が完成していないためサービスの起動に失敗することがあります。必要な設定を行ってから起動状態を確認します。

DHCPを提供するインターフェースを指定する

DHCPの要求を受け付けるインターフェースを指定します。

sudo vi /etc/default/isc-dhcp-server

IPv4の設定項目へ、インターフェース名を記述します。

INTERFACESv4="enp0s8"
INTERFACESv6=""

インターフェース名を間違えると、DHCPサーバーが要求を受信できません。ip linkip 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アドレスが配布される流れを確認してみましょう。

Next Action

記事で読んだ内容を、講座で実装してみましょう

InfraAcademyでは、ブラウザ上でLinuxやネットワークの実践環境を使いながら学習できます。無料で始められる講座から、学習の流れを試せます。

この記事を書いた人

ryu

InfraAcademy運営 / エンジニア

エンジニア歴10年。Linux、ネットワーク、クラウドを中心に、実務で役立つインフラ技術を初心者にもわかりやすく解説しています。

X: @ryu63614894

Related

関連記事

ブログ一覧へ

Roadmap

まずはこの4講座から

ログインすれば無料で始められる講座です。気になったテーマから手を動かして学べます。

講座一覧を見る