| 階段 | 訊息 | 方向 | 說明 |
|---|---|---|---|
| 1. 發現 | DHCP DISCOVER | Client → Server (廣播) | Client 尋找可用 DHCP 伺服器 |
| 2. 提供 | DHCP OFFER | Server → Client | Server 提供 IP、租期、閘道、DNS 等參數 |
| 3. 請求 | DHCP REQUEST | Client → Server (廣播) | Client 正式請求租用提供的 IP |
| 4. 確認 | DHCP ACK | Server → Client | Server 確認租約生效,Client 完成配置 |
設計目的:支援多 DHCP 伺服器共存環境,Client 可選擇最佳提供者。
| 項目 | 數值 | |
|---|---|---|
| 後台進程 | dhcpd | |
| 啟動腳本 | /etc/rc.d/init.d/dhcpd | |
| 監聽埠 | UDP 67 (Server)、UDP 68 (Client) | |
| 核心套件 | dhcp | |
| 相關套件 | dhcp-devel、dhcpv6、dhcpv6_client | |
| 配置檔 | /etc/dhcpd.conf | |
| 租約資料庫 | /var/lib/dhcpd/dhcpd.leases | |
| 日誌檔 | /var/log/messages (非 xferlog,原文誤標) |
| 參數 | 用途 | 範例 |
|---|---|---|
option routers | 預設閘道 | 192.168.2.1 |
option subnet-mask | 子網遮罩 | 255.255.255.0 |
option domain-name-servers | DNS 伺服器 (可多個) | 192.168.2.1, 8.8.8.8 |
range | 動態 IP 池範圍 | 192.168.2.100 192.168.2.200 |
default-lease-time | 預設租期 (秒) | 21600 (6h) |
max-lease-time | 最大租期 (秒) | 43200 (12h) |
filename | PXE 開機檔名 | /pxelinux.0 |
next-server | TFTP 伺服器 IP | 192.168.2.11 |
host 區塊 | MAC 綁定固定 IP | 印表機、伺服器、靜態設備 |
# 啟動服務
service dhcpd start
# 或 systemctl start dhcpd (CentOS 7+)
# 檢查監聽埠
netstat -nulp | grep :67
# 輸出應含 udp 0 0 0.0.0.0:67 dhcpd
# 查看租約資料庫
cat /var/lib/dhcpd/dhcpd.leases
# 僅監聽 eth0
DHCPDARGS=eth0
# 多介面
DHCPDARGS="eth0 eth1"
# 不設定則監聽所有介面
# 將來自 eth0 的 DHCP 請求轉發至 192.168.1.10、192.168.1.11
INTERFACES="eth0"
DHCPSERVERS="192.168.1.10 192.168.1.11"
# 啟動
service dhcrelay start
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes
# 可選:PEERDNS=yes (自動更新 /etc/resolv.conf)
# /etc/sysconfig/network
NETWORKING=yes
# 重啟網路
service network restart
# 或
systemctl restart network
| 現象 | 排查方向 |
|---|---|
| Client 獲取不到 IP | 1. 防火牆 UDP 67/68 2. 網段與介面 IP 不符 3. range 範圍耗盡 4. dhcpd 進程未啟動 |
| Client 獲取 IP 但無法上網 | 1. option routers (閘道) 錯誤 2. option domain-name-servers (DNS) 錯誤 3. 伺服器端 IP 轉發未開啟 (/proc/sys/net/ipv4/ip_forward=1) |
| 固定 IP 綁定不生效 | 1. MAC 地址大小寫/格式 (aa:bb:cc vs AA-BB-CC) 2. host 區塊在 subnet 區塊外 3. 衝突於動態 range 範圍內 |
| PXE 無盤開機失敗 | 1. filename/next-server 錯誤 2. TFTP 服務未啟動/防火牆阻擋 UDP 69 3. pxelinux.0 檔案缺失或權限錯誤 |
生產環境建議:
1. 部署雙 DHCP 伺服器熱備 (failover protocol 或分割範圍)
2. 啟用動態 DNS 更新 (ddns-update-style interim + key)
3. 租期設定:有線網路 8-24h、無線/訪客網路 1-2h
4. 定期備份/var/lib/dhcpd/dhcpd.leases並監控剩餘 IP 數量