UEFI PXE 跨子网引导

UEFI PXE 跨子网引导

我正在尝试以 UEFI 模式从 Windows 2012R2 WDS 服务器启动 PC。如果仅有的如果客户端与 DHCP/PXE 服务器位于不同的子网中,则其中一些服务器会失败。(它始终在 BIOS 模式下工作,但我需要 UEFI。)

症状是,在初始 DHCP 请求/提供/请求/确认序列之后,正常工作的客户端会联系 PXE 服务器以获取其启动信息,而出现故障的客户端则不会。

除了 PXE 之外,还有两台 DHCP 服务器(也是 2012R2)。它们上没有配置与启动相关的 DHCP 选项;网络上启用了 DHCP 中继,并将信息中继到所有三台服务器。

这是启动工作客户端的数据包列表:

1  DHCP Discover - Transaction ID 0xe828c4bc
2  DHCP Offer    - Transaction ID 0xe828c4bc (from first DHCP)
3  DHCP Offer    - Transaction ID 0xe828c4bc (from PXE)
4  DHCP Offer    - Transaction ID 0xe828c4bc (from second DHCP)
5  DHCP Request  - Transaction ID 0xe828c4bc (to first DHCP)
6  DHCP ACK      - Transaction ID 0xe828c4bc (from first DHCP)

7  4011 → 4011 Len=347                       (to PXE)
8  4011 → 4011 Len=349                       (from PXE)
9  TFTP Read Request, File: boot\x64\wdsmgfw.efi, (to PXE)
...

对于出现故障的客户端,情况直到第 6 行都完全相同,然后什么也没有发生;它只是没有联系 PXE 服务器。

我已经比较了 Wireshark 中的数据包内容,除了依赖于客户端所在网络(giaddr、路由器等)的值之外,所有提供的内容在工作和失败情况下都是相同的。

这似乎会影响特定的 BIOS/固件:正常工作的客户端包括 VMware Workstation 和 ESXi,以及 Intel NUC,而 Asus B150M-C 主板和至少一个 Dell Optiplex 则无法正常工作。所有相关设备上的 BIOS 都是最新的,最多是几个月前的。

我觉得 UEFI 固件不知道如何使用路由器。有办法让它工作吗?

答案1

问题出在客户端;我应该更仔细地查看我的数据包跟踪。我刚刚发现,在从常规 DHCP 服务器获得 DHCP ACK 后,发生故障的客户端立即开始为 PXE 服务器进行 ARPing,当然,没有任何进展。

所以问题实际上是固件不理解路由器。

答案2

您的 DHCP 策略一团糟。每个网络不应有超过一个 DHCP 服务器,并且 PXE 服务器应充当代理 DHCP。

多个 DHCP 服务器会导致竞争条件;您无法预测哪个 DHCP 最终会真正向客户端提供 IP。

您可能在第二个网络中有一些其他 DHCP,并且代理 DHCP 提供(PXE 服务器)可能永远不会到达另一端。

您应该仔细阅读 Wireshark 捕获的内容;将其上传到某处,我们就可以提供帮助。

相关内容