ISC DHCPD 可以作为 PXE 启动的代理 DHCP 服务器运行吗?

ISC DHCPD 可以作为 PXE 启动的代理 DHCP 服务器运行吗?

我有一个现有的 LAN,其中的 DHCP 服务器已经分配了 IP 地址。

由于各种原因,我无法替换该服务器,因此它仍然需要提供 IP 地址。

我一直在尝试使用代理模式下的 Dnsmasq 来提供 PXE 启动文件名。现在我已成功通过 Dnsmasq 链式加载 iPXE,但我发现 Dnsmasq 的问题在于,在代理模式下它不会向下发送 DHCP 选项。因此,我似乎无法发送选项 17 来启动 iSCSI SAN。

我在某处读到过,源代码中未启用此功能。好吧,所以我想我也许应该尝试 ISC DHCPD(Ubuntu 的默认版本 4),但我找不到任何可用作代理的配置示例。

  1. ISC DHCPD 在代理模式下也能工作吗?网络上的示例暗示修补源代码。
  2. 我还有什么其他选择?

答案1

您可能想构建一个带有嵌入式 ipxe 脚本的自定义 iPXE 映像,该脚本会链式加载您在网络启动后想要看到的任何内容(例如 menu.c32、vesamenu.c32、pxelinux 等)。好消息是 iPXE 根本不需要传递任何 DHCP 选项(例如选项 66 和 67)。将改为使用 ipxe 脚本中嵌入的内容。它只需要 DHCP 来分配 IP。

这种方法的潜在缺点是,您要么需要从 CD 启动(您可以创建 ipxe 映像 ISO),要么在 VM 内安装 ISO 以从其启动,或者,如果您确实有现有的 PXE 启动服务器并且正在使用 pxelinux 和 menu.c32/vesamenu.c32 之类的东西,您可以放置​​ ipxe 构建过程将生成的 UNDI 映像。 ipxe 的 UNDI 版本可以从 pxelinux 和其他引导加载程序进行链式启动。

我仍在尝试弄清楚如何使用 dnsmasq 作为代理 DHCP 服务器。我可以让它通过代理 DHCP 启动 ipxe 映像,但在加载后无法让 ipxe 获取 DHCP IP 地址。据我所知,这是因为 iPXE DHCP 客户端更喜欢使用代理 DHCP 作为其 DHCP 服务器(如果这有意义的话),考虑到代理 DHCP 服务器的用途(即不需要 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 选项,但是我假设(可能不正确?)如果客户端已配置为提供这些选项,客户端将从 DHCP 服务器中选择任何与 PXE 相关的启动选项(例如 66、67)。

请注意代理语句中所有 RFC1918 IP 空间的使用。这样做似乎没有任何问题 - 即,对现有 DHCP 服务器没有明显的干扰,因为这当然只是一个代理,而不是子网的权威 DHCP 服务器。此外,ipxe 选项不是专门需要支持 proxydhcp 的,而只是基于我选择如何使用它的示例;即,使用 proxydhcp 传递 ipxe 引导信息。

简而言之,proxyDHCP 是一种非常好的方法,可以在您无法在技术或管理上修改环境中运行的 DHCP 服务器的环境中非侵入式地实现 PXE 网络启动。

答案2

不,ISC DHCPD 服务器不支持 ProxyDHCP 模式。我们曾有一段时间想在 iPXE 社区中开展一个 GSoC 项目来实现该模式,但目前还没有学生愿意承担这项任务。另一方面,dnsmasq 可以配置为在 ProxyDHCP 模式下工作,但其配置是纯静态的。我们想在今年的 GSoC 中扩展 dnsmasq,以便它可以将 DHCP 请求发送到可以处理逻辑的 Web 服务器,并将响应发送回 dnsmasq,然后 dnsmasq 应将其转发给 ProxyDHCP 客户端。您可以在此页面上阅读更多相关信息:http://ipxe.org/gsoc

答案3

您可以dnsmasq为此目的使用(版本 >=2.48)。

更多详情请阅读: http://web.archive.org/web/20190802234832/https://help.ubuntu.com/community/UbuntuLTSP/ProxyDHCP

相关内容