hoo*_*enz 6 dhcp isc-dhcp pxe-boot
我有一个现有的 LAN,其中的 DHCP 服务器已经分配了 IP 地址。
由于各种原因,我无法更换该服务器,因此它仍然需要提供 IP 地址。
我一直在代理模式下尝试使用 Dnsmasq 来提供 PXE 启动文件名。现在我可以使用 Dnsmasq 链式加载 iPXE,但我发现 Dnsmasq 的问题是在代理模式下它不会向下发送 DHCP 选项。所以我似乎无法发送选项 17 来启动 iSCSI SAN。
我在某处读到它在源代码中未启用。哦,好吧,所以我想也许我应该尝试 ISC DHCPD(Ubuntu 的默认版本 4),但我找不到任何用作代理的配置示例。
您可能会考虑使用嵌入式 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
Run Code Online (Sandbox Code Playgroud)
与网络中的另一个 DHCP 服务器配合良好。我的虚拟机启动时会选择传递给 DHCP 客户端的 proxyDHCP 选项,但我假设(可能是错误的?)客户端将从 DHCP 服务器中选择任何与 PXE 相关的启动选项(例如 66、67)(如果它已配置为)提供这些选项。
请注意代理声明中所有 RFC1918 IP 空间的使用。这样做似乎没有任何问题 - 即,对现有 DHCP 服务器没有明显的干扰,因为当然这只是一个代理,而不是子网的权威 DHCP 服务器。此外,ipxe 选项并不是专门支持 proxydhcp 所必需的,而只是一个基于我选择如何使用它的示例;即,使用 proxydhcp 传递 ipxe 引导信息。
简而言之,proxyDHCP 是一种非常好的方法,可以在您无法在技术或管理上修改环境中运行的 DHCP 服务器的环境中以非侵入方式实现 PXE 网络引导。
| 归档时间: |
|
| 查看次数: |
13344 次 |
| 最近记录: |