O que eu preciso para enviar um DHCPOFFER estendido com várias opções de inicialização?

4

De acordo com a Wikipédia e um bazillion de outras páginas, você pode ter:

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.

Eu quero implementar esse servidor que envia essas respostas estendidas. Eu não me importo de configurar outro daemon apenas para este propósito, mas se eu puder apenas configurar o isc-dhcp-server para enviar a resposta que seria ideal.

(antes de sugerir, não, eu não posso usar o syslinux. Isso é trapaça e estou fazendo isso em uma plataforma EFI e, portanto, tenho suporte nativo a PXE)

    
por MikeyB 11.01.2012 / 20:46

4 respostas

0

dsnmasq pode fazer isso. É um liner 5. link

Então, para mim, não está claro por que você precisa do seu próprio servidor. DHCP e PXEBOOT são muito complicados. Com o DHCP Proxy, você adiciona vários problemas adicionais. Porque os documentos são vagos e as implementações no lado do cliente são terríveis, o que implica muito teste e inspeção de bytes no fio.

    
por 11.01.2012 / 20:54
0

Está falando sobre o Protocolo de Configuração de Inicialização Remota (que é baseado no DHCP, portanto, a nomanclatura DHCP estendida). Infelizmente, o projeto morreu em 1999 e a maioria dos clientes do PXE não o apoia muito bem. Eu nunca vi um servidor OSS para ele (embora alguns softwares de implantação proprietários o suportem em níveis variados). Para mais informações, você pode conferir o RFC preliminar (Seção 3.3 fala sobre o RBCP especificamente).

    
por 11.01.2012 / 21:30
0

O ISC DHCP pode ser configurado para responder a tudo que você precisa para a inicialização via PXE, sem recorrer a uma configuração do servidor DHCP Proxy. A única razão pela qual você realmente deseja um servidor Proxy DHCP é se você não quisesse ou não pudesse controlar a configuração do servidor DHCP que responde.

O DHCP Proxy foi configurado explicitamente para permitir que um outro serviço, mesmo em outra máquina, seja completamente divorciado de qualquer controle ou manipulação do servidor DHCP. A especificação PXE permite que o cliente basicamente escute duas respostas - uma do servidor DHCP e outra do Proxy, para montar tudo o que precisa para inicializar o NBP (programa de inicialização da rede).

A especificação da Intel no link é extremamente detalhada a esse respeito, e ilumina as seqüências de forma muito clara. Confira as páginas 15 a 19 para os detalhes. Os RFCs incluem essa mesma informação, mas para mim não foi tão claro.

Atualmente não estou ciente de nenhuma implementação de serviço de proxy DHCP de código aberto, mas honestamente o código para essa parte do protocolo é incrivelmente simples.

    
por 18.04.2015 / 18:55
0

O texto que você citou da Wikipedia é antigo e não é exato. Ele mistura dois conceitos diferentes:

  1. proxyDHCP
  2. Recursos do menu de inicialização do PXE

Eu acho que você está interessado em 2) então se você quer criar seu próprio menu baseado no padrão PXE (sem o pxelinux) é só pegar o padrão PXE link (pag 19) e veja como preencher a opção DHCP específica do fornecedor encapsulado (43) usando as seguintes "Opções PXE"

PXE_BOOT_SERVERS
PXE_BOOT_MENU
PXE_MENU_PROMPT
PXE_BOOT_ITEM

Não é fácil, de alguma forma limitado pelo tamanho do pacote DHCP, não é muito flexível.

    
por 18.04.2015 / 22:45