DHCP 負責自動分配 IP 位址,日誌主要用於追蹤 IP 分配、租約衝突和伺服器狀態。
要檢查的內容 | 關鍵日誌訊息 (關鍵字) | 意義與故障排除方向 |
---|---|---|
IP 地址衝突 | IP_ADDR_CONFLICT 或 DHCPD_IPADDR_CONFLICT |
問題: DHCP 伺服器偵測到它嘗試分配的 IP 地址已經被網路上另一臺設備使用。解決: 檢查是否有人使用靜態 IP 且該 IP 位於 DHCP Scope 內但未被排除。 |
租約失敗 | DHCPD_LEASE_FAILURE 或 no addresses available |
問題: DHCP 伺服器無法向客戶端提供 IP 地址。解決: 檢查 DHCP Scope (地址池) 是否已滿、IP 是否都被租用或排除列表過長。 |
Relay 錯誤 | DHCP_RELAY_MSG_TOO_BIG 或 dhcp relay invalid server |
問題: DHCP Relay 代理 (通常是路由器或 L3 交換器) 傳輸 DHCP 訊務時出錯。解決: 檢查 Relay 介面配置的伺服器 IP 是否正確,或訊息是否超過 MTU 限制。 |
伺服器狀態 | DHCPD_START 或 DHCPD_STOP |
問題: 記錄 DHCP 服務的啟動和停止。解決: 確認服務是否意外關閉,或在啟動時是否有配置錯誤導致服務啟動失敗。 |
DHCP 負責自動分配 IP 位址,日誌主要用於追蹤 IP 分配、租約衝突和伺服器狀態。
要檢查的內容 | 關鍵日誌訊息 (關鍵字) | 意義與故障排除方向 |
---|---|---|
IP 地址衝突 | IP_ADDR_CONFLICT 或 DHCPD_IPADDR_CONFLICT |
問題: DHCP 伺服器偵測到它嘗試分配的 IP 地址已經被網路上另一臺設備使用。解決: 檢查是否有人使用靜態 IP 且該 IP 位於 DHCP Scope 內但未被排除。 |
租約失敗 | DHCPD_LEASE_FAILURE 或 no addresses available |
問題: DHCP 伺服器無法向客戶端提供 IP 地址。解決: 檢查 DHCP Scope (地址池) 是否已滿、IP 是否都被租用或排除列表過長。 |
Relay 錯誤 | DHCP_RELAY_MSG_TOO_BIG 或 dhcp relay invalid server |
問題: DHCP Relay 代理 (通常是路由器或 L3 交換器) 傳輸 DHCP 訊務時出錯。解決: 檢查 Relay 介面配置的伺服器 IP 是否正確,或訊息是否超過 MTU 限制。 |
伺服器狀態 | DHCPD_START 或 DHCPD_STOP |
問題: 記錄 DHCP 服務的啟動和停止。解決: 確認服務是否意外關閉,或在啟動時是否有配置錯誤導致服務啟動失敗。 |
範例:DHCP 租約失敗
故障情境 (Symptom)
網路結構: 網路中的用戶端設備 (PC/手機) 通過交換器連線到網路,由一台中央伺服器 (Router 或專門的 DHCP Server) 提供 DHCP 服務。
問題描述: 新接入網路的 PC-C 無法獲得 IP 地址,顯示為 APIPA (169.254.x.x),舊設備也可能在租約到期後無法續約。
使用者回饋: 「我連不上網!」或「我沒有拿到 IP!」
2. 故障假設 (Hypothesis)
當客戶端無法取得 IP 時,故障可能發生在 DHCP 協定的四個步驟 (DORA) 中的任一環節。最常見的故障點是:
DHCP Scope (地址池) 已滿。 (伺服器端)
DHCP 訊息被阻擋 (Relay Agent 或防火牆)。 (中間層)
客戶端無法發出 Discover 廣播。 (客戶端/L2)
3. 系統化排查步驟 (The 6-Step Drill)
我們將從客戶端開始,逐步追蹤到伺服器端。
步驟 1:客戶端 (Client) 檢查
目標:確認問題是否真的在於 DHCP 服務。
指令 (在無法獲得 IP 的 PC-C 上執行) | 預期結果 | 故障判斷 |
---|---|---|
ipconfig /all (Windows) 或 ip a (Linux/Mac) |
IP 地址顯示為 169.254.x.x | 確認客戶端正在使用 APIPA (Automatic Private IP Addressing) 地址,這明確表示 DHCP 請求未成功。 |
ipconfig /release 然後 ipconfig /renew |
應能獲得正確 IP | 如果仍是 APIPA, 則確認問題持續存在,無法獲得任何 IP,需進一步排查網路和伺服器端。 |
步驟 2:檢查 DHCP Scope 狀態 (Server)
目標:確認伺服器是否有足夠的 IP 地址可以分配。這是最快速的故障點之一。
指令/操作 (在 DHCP 伺服器上執行) | 預期結果 | 故障判斷 |
---|---|---|
檢查 Scope 狀態 (GUI 或 CLI) | 顯示 Available IP 數量充足 (例如 > 10%) | 如果顯示 Used IP 達到 100% 或 95% 以上,則 Scope 已滿,需要擴大地址池或縮短租約時間。 |
檢查伺服器日誌 (show logging 或事件檢視器) |
檢查日誌: 尋找 DHCPD_LEASE_FAILURE 或 no addresses available |
如果找到此訊息, 則直接確定是地址池耗盡或配置錯誤,導致租約失敗。 |
檢查 排除列表 (Exclusion List) | 排除列表不應過長或包含整個子網路 | 如果誤將整個 Scope 排除,則無 IP 可用。 |
步驟 3:檢查 DHCP Relay Agent (Router/L3 Switch)
目標:如果客戶端與 DHCP 伺服器不在同一網段,需要 Relay Agent (IP Helper) 來轉發 DHCP 請求。
指令 (在 L3 Switch/Router 的客戶端網段介面上執行) | 預期結果 | 故障判斷 |
---|---|---|
show ip interface <VLAN/介面ID> |
應配置 ip helper-address <DHCP Server IP> |
如果沒有配置或配置錯誤,DHCP 請求(Discover 廣播)將無法到達伺服器。 |
檢查 Relay Agent 的系統日誌 (show logging ) |
檢查日誌: 尋找 DHCP_RELAY_MSG_TOO_BIG 或 dhcp relay invalid server |
Relay Agent 本身在轉發過程中可能出錯,導致訊務丟失。 |
步驟 4:檢查伺服器狀態與衝突 (Server & Logs)
目標:確認 DHCP 服務本身是否正在運行,以及是否有 IP 衝突。
指令/操作 (在 DHCP 伺服器上執行) | 預期結果 | 故障判斷 |
---|---|---|
檢查伺服器狀態 | 服務狀態應為 Running/Active | 如果服務沒有啟動,需手動啟動。檢查日誌: 尋找 DHCPD_START 或 DHCPD_STOP 訊息來確認服務是否有意外停止。 |
檢查伺服器日誌 | 檢查日誌: 尋找 IP_ADDR_CONFLICT 或 DHCPD_IPADDR_CONFLICT |
如果找到此訊息, 表示有設備使用靜態 IP,且該 IP 與動態 IP 發生衝突,伺服器會停止分配該 IP。解決: 將該靜態 IP 加入到 DHCP 的排除列表。 |