我有一个现有的局域网与DHCP服务器已经dishing出IP地址。
由于各种原因,我不能replace该服务器,所以它仍然需要出去IP地址。
我一直在代理模式下尝试使用Dnsmasq来提供PXE启动文件名。 现在我有Dnsmasq链接加载iPXE好,但我发现Dnsmasq的问题是,在代理模式下,它不会发送DHCP选项。 所以我似乎无法发送选项17来启动iSCSI SAN。
我在某个地方读过它没有在源代码中启用。 哦,所以我想也许我应该试试ISC DHCPD(默认版本4与Ubuntu),但我找不到任何作为代理工作的configuration示例。
您可能会考虑使用embedded式ipxe脚本构build自定义iPXE映像,该脚本会链接networking引导之后所要查看的任何内容(例如,menu.c32,vesamenu.c32,pxelinux等)。 好的是,iPXE根本不需要任何传递的DHCP选项(例如选项66和67)。 将使用ipxe脚本中embedded的内容。 它只需要DHCP来分配一个IP。
这种方法的潜在缺点是你需要从CD引导(你可以创build一个ipxe映像ISO),在虚拟机内挂载ISO引导它,或者如果你有一个现有的PXE引导服务器,使用pxelinux和menu.c32 / vesamenu.c32之类的东西,你可以放入一个ipxe构build过程将生成的UNDI映像。 UNDI版本的ipxe可以从pxelinux链接启动,也可以从其他启动加载器启动。
我仍然想弄清楚如何使用dnsmasq作为proxyDHCP服务器。 我可以通过proxyDHCP来启动ipxe映像,但在加载后无法获得IP地址来获取DHCP IP地址。 从我可以告诉它是因为iPXE DHCP客户端更喜欢proxyDHCP作为它的DHCP服务器(如果这是有道理的),这看起来很奇怪,因为proxyDHCP服务器的目的是什么 – 即不需要DHCP服务器。
编辑:这是dnsmasqfunctionproxydhcp设置(最后算出来):
在/etc/dnsmasq.confconfiguration文件(例如,config line conf-dir = / etc / dnsmasq.d)中包含的/etc/dnsmasq.d/proxydhcp.conf文件中:
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
与networking中的另一个DHCP服务器很好地协同工作。 我的虚拟机启动拿起传递给DHCP客户端的proxyDHCP选项,但是我认为(也许不正确?)客户端将从DHCP服务器select任何与PXE相关的启动选项(例如,66,67),如果它已经configuration提供这些选项。
注意代理语句中所有RFC1918 IP空间的使用。 这样做似乎没有任何问题 – 即对现有的DHCP服务器没有明显的干扰,因为这当然只是代理而不是子网的授权DHCP服务器。 另外ipxe选项不是特别需要支持proxydhcp,但只是一个基于我如何select使用它的例子; 即使用proxydhcp传递ipxe引导信息。
简而言之,在技术上或pipe理上无法修改环境中运行的DHCP服务器的环境中,proxyDHCP是非侵入式地实施PXEnetworking引导的一种非常好的方式。
isc dhcpd甚至可以在代理模式下工作吗?
不,不是的。 使用dhcrelay代替 – 它是由ISC的dhcpd的一部分分发,但大多数发行版(包括Ubuntu)作为一个单独的软件包。 然而,这不会允许你添加,修改或过滤任何选项 – DHCP的主意是你只在服务器上集中定义这种types的东西,而继电器只是“愚蠢”的转发器。 很可能是因为你试图解决一个概念,而不是一个实现,你遇到了各种各样的麻烦。
不,ISC DHCPD服务器不支持ProxyDHCP模式。 我们已经在iPXE社区有一个GSoC项目的想法来实现,但是没有一个学生愿意承担这个任务。 另一方面,dnsmasq可以configuration为在ProxyDHCP模式下工作,但是它的configuration纯粹是静态的。 我们有一个想法,今年的GSoC扩展dnsmasq,以便它可以发送DHCP请求到一个Web服务器,可以照顾的逻辑,并发回一个响应dnsmasq,然后应该中继这个ProxyDHCP客户端。 您可以在此页面阅读更多关于此的信息: http : //ipxe.org/gsoc