Windows 網卡出現 169.254.x.x,通常表示介面設定為 DHCP,但沒有取得有效租約,於是使用 APIPA/IPv4 Link-Local 位址。它是症狀,不是「169.254 壞掉」;同一個 L2 裡的 link-local 裝置可能彼此通訊,卻通常沒有可用的 default gateway,無法正常跨網段上網。
DHCP 正常取址會經過 DORA
- Discover:Client 還沒有 IP,以廣播尋找 DHCP Server。
- Offer:Server 提供可用位址與租約條件。
- Request:Client 表示要採用哪一份 Offer。
- Acknowledge:Server 確認租約,Client 套用 IP、mask、gateway、DNS 等選項。
DHCPv4 使用 UDP 67/68。Client 與 Server 不在同一個 broadcast domain 時,要靠 Router、Layer 3 Switch 或防火牆上的 DHCP Relay/IP Helper 轉送,不能期待廣播自己跨 VLAN。
先判斷是一台、單一 VLAN,還是全部故障
- 只有一台:查網路線、Wi-Fi profile、介面設定、驅動、Port Security、NAC 與該 Client 的 reservation/deny。
- 同一 VLAN 全部:查 access VLAN、Trunk allowed VLAN、SVI/gateway、DHCP relay 與該 scope。
- 全部 VLAN:查 DHCP 服務、HA、授權、位址池、伺服器網路、防火牆與上游變更。
Client 端五分鐘檢查
- 用
ipconfig /all確認真正有問題的介面,不要被 VPN、Hyper-V、WSL 虛擬網卡混淆。 - 確認介面是自動取得 IP,不是留著別處的固定 IP。
- 有線看 Link、換已知正常線與 Port;Wi-Fi 確認實際 SSID、BSSID 與訊號。
- 在非遠端關鍵連線上,可用
ipconfig /release、ipconfig /renew重新取址;遠端操作會斷線,不要直接做。 - 查看 Windows DHCP Client 事件,記下測試時間與錯誤。
交換器與 VLAN 常見問題
Client Port 的 access VLAN/PVID 要正確,AP 或 IP Phone 帶多個 VLAN 時要確認 tagged/untagged 規則。上行 Trunk 若漏掉該 VLAN,Discover 只會留在接入交換器;DHCP Server 再正常也收不到。STP blocking、Port Security、802.1X/NAC 未授權與 Broadcast Storm,也可能讓 DORA 走不完。
DHCP Server 與 Relay 檢查
- Scope 是否啟用、還有可租位址,exclusion 與 reservation 有沒有重疊。
- Subnet mask、gateway、DNS 等 option 是否正確。
- Relay 的 Server IP、來源 SVI、VRF 與 routing 是否正確,回程路由能不能到 Client 網段。
- HA/Failover partner 是否同步,Server 時間與服務狀態是否正常。
- 防火牆不要只看 UDP 67/68 是否「有開」,還要看方向、來源、目的與 relay 實際封包。
抓封包時要看到什麼
在 Client 旁、Relay/Gateway 與 Server 端分別抓 DHCP/BOOTP。只有 Discover、沒有 Offer,問題在 Server 路徑、scope 或 policy;有 Offer、Client 沒 Request,要查回程、Client/NAC;完成 ACK 後仍沒套用,則查 Client 事件與位址衝突。Port Mirroring 可參考「SPAN 抓封包設定」。
不要用固定 IP 把症狀蓋掉
臨時手填 IP 可能讓單機能通,卻沒有修到 VLAN、Relay 或 scope,也可能撞到別人的租約。除非已掌握可用網段、排除範圍與回復方式,否則不要把固定 IP 當成 DHCP 故障的正式解法。