6.

DHCP プロトコル完全ガイド(DORA 4-way / リース / IPv6 SLAAC)

編集
この記事の要点
  • DHCP (Dynamic Host Configuration Protocol) は IP アドレスを自動割当するプロトコル
  • ポート 67 (Server) / 68 (Client)、UDP ベース、ブロードキャストで開始
  • DORA 4-way: DHCPDISCOVER → DHCPOFFER → DHCPREQUEST → DHCPACK
  • リース時間切れ前に更新(T1=50%、T2=87.5%)、家庭用ルータでは 24h、企業 LAN では 8h など
  • IPv6 では SLAAC (StateLess Address AutoConfiguration) が主流、DHCPv6 は補助的に併用

DHCP とは

DHCP (Dynamic Host Configuration Protocol) は、ネットワークに接続したクライアントに対し、IP アドレス / サブネットマスク / デフォルトゲートウェイ / DNS サーバなどのネットワーク設定を自動で配布するプロトコルです。RFC 2131 / 2132 で標準化されています。

静的 IP (Static IP) を 1 台ずつ手動設定するのは管理コストが高く、引っ越し / 出張先 / Wi-Fi 切替で値が変わる端末では現実的でないため、ほぼ全ての LAN / Wi-Fi で DHCP が使われています。

動作: DORA 4-way ハンドシェイク

クライアントが起動 / NIC リンクアップしたタイミングで、以下の 4 メッセージが交換されます:

段階メッセージ送信元 → 宛先内容
1. DDHCPDISCOVERClient (0.0.0.0:68) → Broadcast (255.255.255.255:67)「DHCP サーバいる?」
2. ODHCPOFFERServer:67 → Broadcast:68「この IP どう?」(候補提示)
3. RDHCPREQUESTClient → Broadcast「その IP もらいます」
4. ADHCPACKServer → Client「確定。リース X 秒」

ブロードキャストで開始する理由は、クライアントがまだ IP を持っておらず誰がサーバか分からないから。複数 DHCP サーバがある場合は最初に応答した OFFER を採用するのが一般的です。

パケットを Wireshark で観察

Frame 1: DHCP Discover - Transaction ID 0x12345678
  Src: 00:0c:29:ab:cd:ef (Client MAC), Dst: ff:ff:ff:ff:ff:ff (broadcast)
  IPv4: 0.0.0.0 -> 255.255.255.255
  UDP : 68 -> 67
  BOOTP: op=1 (BOOTREQUEST)
  Option 53: DHCP Message Type = Discover (1)
  Option 55: Parameter Request List (subnet, router, DNS, ...)

Frame 2: DHCP Offer
  Src: 192.168.1.1, Dst: 255.255.255.255
  Option 53: Offer (2)
  Option 1 : Subnet Mask 255.255.255.0
  Option 3 : Router 192.168.1.1
  Option 6 : DNS 8.8.8.8, 8.8.4.4
  Option 51: Lease Time 86400 (24h)
  yiaddr   : 192.168.1.123  ← 提示 IP

ポート 67 / 68

ポート用途
UDP 67DHCP Server が待ち受け
UDP 68DHCP Client が待ち受け
UDP 547 / 546DHCPv6 (Server / Client)

BOOTP (古い IP 自動配布プロトコル) と同じポートを使用しており、後方互換性があります。

リース時間 (Lease Time)

DHCP で配布された IP には有効期限があり、期限切れ前にクライアントが更新します:

  • T1 (50%): クライアントは元のサーバに更新リクエスト (Renewing)
  • T2 (87.5%): 別のサーバにブロードキャストでリクエスト (Rebinding)
  • 期限切れ: IP 解放、DISCOVER から再開

典型的なリース時間: 家庭 Wi-Fi 24h、企業 LAN 8h、ゲスト Wi-Fi 1h、ホットスポット 15分。

Windows / Linux からの操作

# Windows
ipconfig /all                       # 現在の DHCP リース確認
ipconfig /release                   # IP 解放
ipconfig /renew                     # 再取得 (REQUEST -> ACK)
ipconfig /flushdns                  # DNS Cache クリア(DHCP とは別)

# PowerShell
Get-NetIPConfiguration
Get-DhcpServerv4Lease -ScopeId 192.168.1.0   # サーバ側、要 RSAT
# Linux (NetworkManager)
nmcli con show
nmcli con up eth0

# 直接 dhclient
sudo dhclient -r eth0       # 解放
sudo dhclient eth0          # 取得
cat /var/lib/dhcp/dhclient.leases

# systemd-networkd 環境
networkctl status eth0

DHCP Server の構築 (Linux)

Linux で DHCP Server を立てる代表実装は ISC dhcpdKea (ISC が ISC dhcpd 後継として開発):

# /etc/dhcp/dhcpd.conf (ISC dhcpd)
default-lease-time 86400;
max-lease-time     604800;
authoritative;

subnet 192.168.1.0 netmask 255.255.255.0 {
    range 192.168.1.100 192.168.1.200;
    option routers              192.168.1.1;
    option domain-name-servers  8.8.8.8, 8.8.4.4;
    option broadcast-address    192.168.1.255;
    option ntp-servers          ntp.nict.jp;
}

# MAC アドレス固定割当
host printer {
    hardware ethernet 00:11:22:33:44:55;
    fixed-address     192.168.1.50;
}

Static IP との比較

項目DHCPStatic IP
設定の手間不要(自動)1 台ずつ手入力
IP の変更リース毎に変動可固定
サーバ / プリンタ用途★ DHCP 予約推奨★ 安定 (但し管理大変)
IP 競合サーバが回避手動で重複設定すると衝突
大規模 LAN★ 必須非現実的

複数 DHCP Server の競合

同一 LAN セグメントに DHCP サーバが 2 台以上あると、DISCOVER に対し両方が OFFER を返し、クライアントは早い方を採用します。結果として:

  • 意図しないサブネットの IP が配布される
  • 家庭ルータと社内 AP が衝突して接続不安定
  • 悪意ある不正 DHCP (Rogue DHCP) で MITM 攻撃

対策: DHCP Snooping をスイッチで有効化し、信頼ポート (Trusted) からの OFFER のみ通す。

DHCP Relay Agent

DHCP はブロードキャストで動くため、原則 L3 (ルータ) を越えられません。複数 VLAN / サブネットで 1 台の DHCP サーバを共有するときは DHCP Relay Agent (ip helper-address) をルータに設定します:

# Cisco IOS
interface Vlan10
 ip address 192.168.10.1 255.255.255.0
 ip helper-address 192.168.1.10   # DHCP Server の IP

# 動作:
# Client (VLAN10) -> Broadcast DISCOVER
# Router -> Unicast でリレー -> DHCP Server (VLAN1 の 192.168.1.10)
# Server -> Unicast OFFER -> Router -> Broadcast に戻す

IPv6: SLAAC と DHCPv6

IPv6 では IP 自動取得の主役が変わります:

方式仕組み用途
SLAACルータが送る RA (Router Advertisement) から自分で IP 生成家庭 / 多くの企業
DHCPv6 (Stateful)IPv4 DHCP と同じ。サーバが割当管理企業で IP 固定管理したい場合
DHCPv6 (Stateless)IP は SLAAC、DNS / NTP だけ DHCPv6 で配布SLAAC 補完

家庭で利用される IPv6 IPoE はほぼ SLAAC のみ。Android が長らく DHCPv6 を実装しなかったのは「SLAAC で十分」という思想の表れ。

主要な DHCP オプション

Option意味
1Subnet Mask
3Default Gateway
6DNS Server
15Domain Name
42NTP Server
43Vendor Specific (Wi-Fi コントローラ自動検出など)
51Lease Time
53DHCP Message Type
66 / 67TFTP Server / Boot File (PXE Boot)
119Domain Search List

トラブルシュート

症状原因対処
IP が 169.254.x.x になるDHCP 失敗 (APIPA)サーバ稼働確認、配線、VLAN
たまに IP 取れないリースプール枯渇レンジ拡張、リース時間短縮
固定したいのに変わる予約未設定MAC 予約 (host 句)
不審な DNS / ゲートウェイRogue DHCPDHCP Snooping
無線で取れず有線で取れるAP 側 DHCP リレー設定漏れVLAN / Relay 確認

FAQ

Q: なぜブロードキャストで開始するのか
A: クライアントは IP もサーバアドレスも持っていないので、ユニキャストできません。L2 ブロードキャスト (FF:FF:FF:FF:FF:FF) で「いる人手挙げて」と聞きます。

Q: スマホで「IP アドレスの取得に失敗」
A: 端末側の Wi-Fi プロファイル削除 → 再接続。AP 側 DHCP プール枯渇も多いので AP 再起動も有効。

Q: DHCP リースが期限切れの瞬間ネットが切れる?
A: 通常 T1 (50%) で更新済なので切れません。サーバ停止中に T2 を過ぎると IP 失効しブロードキャストに戻ります。

Q: 自宅で固定 IP にしたい
A: ルータの DHCP 予約機能 (MAC アドレス → 固定 IP) を使うのが楽。端末側で静的 IP を打つと、ルータの DHCP 範囲とぶつかると衝突します。

編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. HTTP
  2. HTTPS
  3. DNS
  4. FTP
  5. TFTP
  6. DHCP
  7. SMTP
  8. SNMP
  9. POP3
  10. Telnet
  11. NTP
  12. SSH

最近更新/作成されたページ