我需要发送具有多个启动选项的扩展 DHCPOFFER 吗?

我需要发送具有多个启动选项的扩展 DHCPOFFER 吗?

根据维基百科以及无数其他页面,您可以拥有:

代理 DHCP

如果 PXE 重定向服务(代理 DHCP)收到扩展的 DHCPDISCOVER,它会使用扩展的 DHCPOFFER 回复客户端的端口 68/UDP(DHCP 客户端端口)。

扩展的DHCPOFFER主要包含:

  • PXE 发现控制字段,建议使用多播、广播或单播来联系 PXE 启动服务器
  • 每个可用 PXE 启动服务器类型的 IP 地址列表
  • PXE 启动菜单,其中每个条目代表一个 PXE 启动服务器类型
  • PXE 启动提示,告诉用户按下某个键来查看启动菜单
  • 如果超时,则启动第一个启动菜单项

代理 DHCP 服务也可以与标准 DHCP 服务在同一台主机上运行。由于两个服务不能共享端口 67/UDP,代理 DHCP 在端口 4011/UDP 上运行,并期望来自 PXE 客户端的扩展 DHCPDISCOVER 数据包为 DHCPREQUEST。标准 DHCP 服务必须在其 DHCPOFFER 中发送特殊的 PXE 选项组合,这样 PXE 客户端就知道在同一台主机(端口 4011/UDP)上查找代理 DHCP。

我想实现这样一个服务器来发送这些扩展响应。我不介意为此目的设置另一个守护进程,但如果我可以配置 isc-dhcp-server 来发送响应,那就太理想了。

(在您提出建议之前,我不能使用 syslinux。这是作弊,我在 EFI 平台上执行此操作,因此具有本机 PXE 支持)

答案1

dsnmasq 可以做到这一点。它只有 5 行。http://etherboot.org/wiki/proxydhcp?s[]=dhcp&s[]=proxy

所以对我来说,你为什么需要自己的服务器并不清楚。DHCP 和 PXEBOOT 是一件非常棘手的事情。使用 DHCP 代理会增加很多额外的问题。因为文档很模糊,客户端的实现很糟糕,这意味着需要进行大量的测试和字节检查。

答案2

它谈论的是远程启动配置协议(基于 DHCP,因此有扩展的 DHCP 命名法)。不幸的是,该草案于 1999 年夭折,大多数 PXE 客户端都不太支持它。我从未见过它的 OSS 服务器(尽管一些专有部署软件确实在不同程度上支持它)。有关更多信息,您可以查看RFC 草案(第 3.3 节专门讨论了 RBCP)。

答案3

ISC DHCP 可以配置为回答 PXE 启动所需的一切问题,而无需借助 DHCP 代理服务器设置。您真正需要 DHCP 代理服务器的唯一原因是您不想或无法控制响应的 DHCP 服务器的配置。

DHCP 代理的设置明确地是为了实现一种让其他服务(即使在另一台机器上)完全脱离 DHCP 服务器的控制或操作的方法。PXE 规范使客户端能够基本上监听两个响应 - 一个来自 DHCP 服务器,一个来自代理,以组装启动 NBP(网络启动程序)所需的一切。

英特尔的规范http://download.intel.com/design/archives/wfm/downloads/pxespec.pdf在这方面非常详细,并且非常清楚地说明了这些序列。请查看第 15 至 19 页了解详细信息。RFC 包含相同的信息,但对我来说,它并不那么清晰。

我目前不知道任何开源 DHCP 代理服务实现,但老实说,该部分协议的代码非常简单。

答案4

您从维基百科引用的文字很旧,而且不准确。它混淆了两个不同的概念:

  1. 代理DHCP
  2. PXE 启动菜单功能

我认为你对 2) 感兴趣,那么如果你想基于 PXE 标准创建自己的菜单(没有 pxelinux),只需获取 PXE 标准 http://www.pix.net/software/pxeboot/archive/pxespec.pdf(第 19 页)并了解如何使用以下“PXE 选项”填充封装的特定于供应商的 DHCP 选项 (43)

PXE_BOOT_SERVERS
PXE_BOOT_MENU
PXE_MENU_PROMPT
PXE_BOOT_ITEM

不容易,不知何故受到 DHCP 数据包大小的限制,不太灵活。

相关内容