Take the 2-minute tour ×
Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

According to Wikipedia and a bazillion other pages, you can have:

Proxy DHCP

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)

share|improve this question

4 Answers 4

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

  1. proxyDHCP
  2. 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.

share|improve this answer

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 specificiation from Intel at http://download.intel.com/design/archives/wfm/downloads/pxespec.pdf is extremely detailed in this respect, and illuminates the sequences very clearly. Check out pages 15 through 19 for the details. The RFC's include this same information, but to me it wasn't nearly as clear.

I'm not currently aware of any open source DHCP Proxy service implementations, but honestly the code for that portion of the protocol is incredibly simple.

share|improve this answer

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).

share|improve this answer

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.

share|improve this answer
1  
Can you point to an example for dnsmasq that sends a response with multiple boot options? –  MikeyB Jan 11 '12 at 19:59
    
For isc-dhcpd it is documented here: linux.die.net/man/5/dhcp-options and for dnsmasq it is here: thekelleys.org.uk/dnsmasq/docs/dnsmasq-man.html –  mailq Jan 11 '12 at 20:17
    
That's useful for dnsmasq, although the manpage for isc-dhcp mentions nothing about PXE. –  MikeyB Jan 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 S Jan 11 '12 at 20:38

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.