If a PXE redirection service (Proxy DHCP) receives an extended DHCPDISCOVER, it replies with an extended DHCPOFFER to the client's port 68/UDP (DHCP client port).

An extended DHCPOFFER contains mainly:

a PXE Discovery Control field to recommend multicasting, broadcasting, or unicasting to contact PXE boot servers

a list of IP addresses of each available PXE Boot Server Type

a PXE Boot Menu with each entry representing a PXE Boot Server Type

a PXE Boot Prompt telling the user to press a certain key to see the boot menu

a timeout to launch the first boot menu entry if it expires

The Proxy DHCP service may also run on the same host as the standard DHCP service. Since two services cannot share port 67/UDP, the Proxy DHCP runs on port 4011/UDP and expects the extended DHCPDISCOVER packets from PXE Clients to be DHCPREQUESTs. The standard DHCP service has to send a special combination of PXE options in its DHCPOFFER, so the PXE client knows to look for a Proxy DHCP on the same host, port 4011/UDP.

I want to implement such a server that sends out these extended responses. I don't mind setting up another daemon just for this purpose, but if I can just configure isc-dhcp-server to send the response that would be ideal.

(before you suggest it, no I can't use syslinux. This is cheating and I'm doing this on an EFI platform and thus have native PXE support)

4 Answers
4

dsnmasq can do it. It is a 5 liner. http://etherboot.org/wiki/proxydhcp?s[]=dhcp&s[]=proxy

So for me it is not clear why you need your own server. DHCP and PXEBOOT is a very tricky thing. With DHCP Proxy you add a bunch of additional problems. Because the documents are vague and the implementations on the client side terrible, which implies much testing and byte inspecting on the wire.

That's useful for dnsmasq, although the manpage for isc-dhcp mentions nothing about PXE.
–
MikeyBJan 11 '12 at 20:26

I don't know that DHCP and PXE are a "tricky thing" (Sun machines have been doing it for...like forever!), though getting into using a DHCP Proxy certainly adds an interesting layer of complexity that I'd prefer to avoid myself...
–
voretaq7♦Jan 11 '12 at 20:28

1

@voretaq7 It's not actually a DHCP Proxy, it's a Remote Boot Configuration Server, the Wikipedia entry is rife with misnomers. The RBCP Server is completely separate from DHCP (though they can be integrated into the same software, just to keep things interesting)
–
Chris SJan 11 '12 at 20:38

It's talking about the Remote Boot Configuration Protocol (which is based on DHCP, hence the extended DHCP nomanclature). Unfortunately the draft died in 1999 and most PXE clients don't support it very well. I've never seen an OSS Server for it (though some proprietary deployment software does support it to varying levels). For more info you can check out the Draft RFC (Section 3.3 talks about the RBCP specifically).

ISC DHCP can be configured to answer everything you need for PXE booting, without resorting to a DHCP Proxy server setup. The only reason you'd really want a DHCP Proxy server is if you didn't want, or couldn't have, control over the configuration of the DHCP server that responds.

DHCP Proxy was set up explicitly to enable a means of having another service, even on another machine, completely divorced from any control or manipulation of the DHCP server. The PXE specification enables the client to basically listen for two responses - one from the DHCP server, and one from the Proxy, to assemble everything it needs to bootstrap down the NBP (network boot program).

The text you quoted from Wikipedia is old an not accurate. It mixes two different concepts:

proxyDHCP

PXE boot menu capabilities

I think you are interested in 2) then if you want to create your own menu based on the PXE standard (without pxelinux) just get the PXE standard
http://www.pix.net/software/pxeboot/archive/pxespec.pdf (pag 19)
and see how to populate the encapsulated vendor-specific DHCP option (43) using the following "PXE Options"

PXE_BOOT_SERVERS
PXE_BOOT_MENU
PXE_MENU_PROMPT
PXE_BOOT_ITEM

Not easy, somehow limited by the size of the DHCP packet, not very flexible.