Pxe-Boot

DHCP 伺服器在發送 DHCPOFFER 之前說“主機未知”

  • July 6, 2017

我正在嘗試 PXE 引導機器。在系統日誌中,我可以看到:

dhcpd[28030]: DHCPDISCOVER from 98:90:96:bc:fc:e3 via 10.65.240.2
dhcpd[28030]: none: host unknown.
dhcpd[28030]: DHCPOFFER on 10.65.240.111 to 98:90:96:bc:fc:e3 via 10.65.240.2

我這輩子都解決不了這個問題。子網有效且存在,機器有租約,而且這台機器以前建構得很好!

一些Google搜尋表明“主機未知”暗示與 DNS 有關:伺服器具有此框所在的正向和反向區域的區域文件。

DHCP 伺服器必須能夠向沒有 IP 的客戶端發送 DHCPOFFER 數據包,然後它們使用廣播目標 MAC 地址 (FF:FF:FF:FF:FF:FF) 以及廣播目標 IP 地址 ( 255.255.255.255)。不幸的是,Linux 堅持將 255.255.255.255 目標 IP 更改為本地子網廣播地址;這會導致 DHCP 協議違規。

雖然許多 DHCP 客戶端不會注意到問題,但有些(例如,所有 Microsoft DHCP 客戶端)會。有此問題的客戶端似乎看不到來自伺服器的 DHCPOFFER 消息。

前面引用的頁面所做的是“欺騙”Linux 網路引擎,使其能夠通過涉及創建路由的幾種方法使用 255.255.255.255 IP 作為 DHCPOFFER 的目標 IP,或者使用 255.255.255.255 IP 添加主機名,等等

編輯:DHCP 客戶端的網路位置無關緊要;問題是,如果目標 IP 不是 255.255.255.255,一些挑剔的 DHCP 客戶端將忽略 DHCP 提供。請考慮,如果您使用 PXE 啟動 PC,則 PXE 韌體是“第一個”DHCP 客戶端,接下來,如果您載入 Linux 核心/initrd,則啟動 Linux 核心現在將發出“第二個”DHCP 請求。在這種情況下,在單個 PXE 引導會話中,您會獲得 2 個連續的完全不同的 DHCP 客戶端,並且可能會發生,雖然第一個可以容忍所描述的 DHCP 協議違規,但第二個可能不能。如果您只啟動“寬容”的 DHCP 客戶端,那麼同樣的 PXE 啟動 PC 以前可以很好地工作。

為了“查看”發生了什麼,我建議獲取一些 Wireshark 流量擷取並查看數據包級別的問題。

引用自:https://serverfault.com/questions/859263