ISC DHCPD 能否作為 PXE 引導的代理 DHCP 伺服器執行?
我有一個現有的 LAN,其 DHCP 伺服器已經提供 IP 地址。
由於各種原因,我無法更換該伺服器,因此它仍然需要提供 IP 地址。
我一直在嘗試在代理模式下使用 Dnsmasq 來提供 PXE 引導文件名。現在我有 Dnsmasq 鍊式載入 iPXE ok,但我發現 Dnsmasq 的問題是在代理模式下它不會發送 DHCP 選項。所以我似乎無法發送選項 17 來引導 iSCSI SAN。
我在某處讀到它未在原始碼中啟用。哦,好吧,所以我想也許我應該嘗試 ISC DHCPD(Ubuntu 的預設版本 4),但我找不到任何可用作代理的配置範例。
- ISC DHCPD 甚至可以在代理模式下工作嗎?網路上的範例意味著修補源。
- 我還有什麼其他選擇?
您可能會考慮使用嵌入式 ipxe 腳本建構自定義 iPXE 映像,該腳本會鍊式載入您在網路啟動後想要看到的任何內容(例如,menu.c32、vesamenu.c32、pxelinux 等)。好消息是 iPXE 根本不需要任何傳遞的 DHCP 選項(例如,選項 66 和 67)。將使用 ipxe 腳本中嵌入的內容。它只需要 DHCP 來分配 IP。
這種方法的潛在缺點是您需要從 CD 啟動(您可以創建一個 ipxe 映像 ISO),將 ISO 掛載到 VM 中以從它啟動,或者,如果您確實有一個現有的 PXE 啟動伺服器並且是使用 pxelinux 和 menu.c32/vesamenu.c32 之類的東西,您可以放置 ipxe 建構過程將生成的 UNDI 映像。UNDI 版本的 ipxe 可以從 pxelinux 或者其他引導載入程序進行鍊式引導。
我仍在試圖弄清楚如何自己使用 dnsmasq 作為 proxyDHCP 伺服器。我可以讓它通過 proxyDHCP 啟動 ipxe 映像,但在載入後無法讓 ipxe 獲得 DHCP IP 地址。據我所知,這是因為 iPXE DHCP 客戶端更喜歡 proxyDHCP 作為其 DHCP 伺服器(如果這有意義的話),考慮到 proxyDHCP 伺服器的目的是什麼,這似乎很奇怪 - 即不需要 DHCP 伺服器。
編輯:這是 dnsmasq 的功能性 proxydhcp 設置(終於弄清楚了):
在 /etc/dnsmasq.conf 主配置中包含的 /etc/dnsmasq.d/proxydhcp.conf 文件中(例如,配置行 conf-dir=/etc/dnsmasq.d):
port=0 log-dhcp dhcp-match=ipxe,175 dhcp-option=175,8:1:1 dhcp-boot=net:ipxe,http://mynetbootserver.domain.com/boot/ipxeboot/${net0/mac} dhcp-boot=tag:!Iipxe,ipxe.0 enable-tftp tftp-root=/tftpboot dhcp-range=192.168.0.0,proxy,255.255.0.0 dhcp-range=10.0.0.0,proxy,255.0.0.0 dhcp-range=172.16.0.0,proxy,255.255.0.0 pxe-service=net:#ipxe,x86PC,"My Cool Netboot Processes",ipxe-native
與網路中的另一個 DHCP 伺服器很好地配合使用。我的虛擬機啟動時會選擇傳遞給 DHCP 客戶端的 proxyDHCP 選項,但是我假設(可能是錯誤的?)如果客戶端已經配置為提供這些選項。
請注意在代理語句中使用所有 RFC1918 IP 空間。這樣做似乎沒有任何問題 - 即,對現有 DHCP 伺服器沒有明顯的干擾,因為這當然只是一個代理,而不是子網的權威 DHCP 伺服器。此外,ipxe 選項並不是特別需要支持 proxydhcp,而只是基於我選擇使用它的方式的一個範例;即,使用proxydhcp 傳遞ipxe 引導資訊。
簡而言之,proxyDHCP 是一種非常好的方法,可以在您在技術或管理上無法修改環境中執行的 DHCP 伺服器的環境中以非侵入方式實現 PXE 網路引導。