我可以将 dnsmasq 设置为 UEFI HTTP(S) 启动的 DHCP 代理吗?
这似乎很难甚至不可能,因为 dnsmasq 似乎仅支持作为较旧的基于 TFTP 的 PXE Boot 的代理,而我不想发送这些选项。
如果 dnsmasq 是我网络的 DHCP 服务器,那么使用手动配置发送我想要的选项似乎相对简单,因为在这种情况下,您可以或多或少地根据任何条件指定要发送的任何选项以及地址租约。但这不是我想要的。我想要一个 DHCP 代理(根据 UEFI 规范,它仅发送定位网络启动文件所需的其他选项,依靠网络上的其他 DHCP 服务器提供 IP 地址租约)。但是,如上所述,当 dnsmasq 处于代理模式时,它似乎只会发送 PXE 启动选项,并且不支持较新的 HTTP(S) 启动选项。
答案1
如果没有下面参考资料中其他网站的两个答案,我肯定不会到达那里,但这是一个有效的配置,它让 OVMF HTTP Boot 发现一个 URL 并从中成功启动:
# Disable DNS server
port=0
# Run as PXE Boot proxy
dhcp-range=192.168.1.0,proxy
# Trigger PXE Boot support on HTTP Boot client request
dhcp-pxe-vendor=HTTPClient
# Set triggering tag if correct arch is present in option 60
dhcp-match=set:arch_x64,option:client-arch,16
# Make PXE Boot support believe it has something to send...
pxe-service=tag:arch_x64,x86-64_EFI,"Network Boot"
# Specify bootfile-name option via PXE Boot setting
dhcp-boot=tag:arch_x64,http://192.168.1.234:8080/slitaz-rolling-core64.iso
# Force required vendor class in the response, even if not requested
dhcp-option-force=tag:arch_x64,option:vendor-class,HTTPClient
顺便说一下,在测试这个时,以下命令行可能有助于直接启动 dnsmasq 并查看日志输出:
sudo dnsmasq --no-daemon -C dnsmasq.conf --log-dhcp --log-debug
参考文献:
[1]https://www.mail-archive.com/[电子邮件保护]/msg16278.html
[2]https://github.com/ipxe/ipxe/discussions/569#discussioncomment-1994062