Ambiente de execução de pré-inicialização (PXE, às vezes pronunciado como pixie)
O PXE ou Network Booting permitem que o BIOS baixe e inicialize um sistema operacional (SO) pela rede. Nos roteadores Cisco NX-OS, isso é equivalente ao carregador de inicialização [loader>] também conhecido como Kickstart.
Na inicialização PXE, o BIOS do PXE Client examina a ordem de inicialização configurada e, se a inicialização PXE estiver configurada, determina se o hardware suporta a inicialização PXE. Se sim, ele tenta DHCP e um endereço IP da placa de rede. Na solicitação DHCP, o cliente PXE solicita determinadas opções DHCP, como 67 [Nome do arquivo]. Na resposta DHCP, o servidor DHCP responde com as opções solicitadas. O cliente PXE, em seguida, baixa o nome do arquivo [Network Bootstrap Program (NBP)] especificado na resposta DHCP e o executa para que o SO seja carregado no servidor.
Redirecionar cliente PXE para servidor TFTP diferente
Por padrão, o cliente PXE tentará fazer o download do nome do arquivo na resposta DHCP do servidor DHCP, a menos que receba uma opção 66, próximo servidor ou a opção 60/43 na resposta DHCP para redirecioná-lo para um endereço ip diferente. O endereço do próximo servidor é usado em inicialização e PXE para especificar o uso de servidores diferentes para DHCP e TFTP.
As opções de DHCP do próximo servidor (opção 12) e do arquivo de inicialização (opção 0) normalmente especificam o servidor TFTP e o nome do arquivo do carregador de inicialização inicial. O arquivo de inicialização é opcionalmente usado por um cliente para solicitar um tipo específico de arquivo de inicialização em uma mensagem DHCPDISCOVER. Ele é usado por um servidor DHCP em um DHCPOFFER para especificar totalmente um caminho e um nome de arquivo do diretório do arquivo de inicialização.
A opção 67 também deve ser especificada para o nome do arquivo. A diferença entre o arquivo de inicialização e a opção 67 é onde na resposta DHCP o nome do arquivo é encontrado. Com os campos reservados, as respostas não são numeradas na parte Opções do pacote de resposta, mas fornecidas em uma ordem específica.
Por exemplo, Server Host Name (Nome do host do servidor) e Bootfile (Arquivo de inicialização) são exibidos antes das opções numeradas na imagem abaixo.
Notas importantes sobre solução de problemas
Se o cliente de inicialização PXE não solicitar uma opção de DHCP específica na Lista de Solicitações de Parâmetro da Opção 55 no pacote de solicitação de DHCP, a opção de DHCP NÃO ESTARÁ no pacote de resposta do servidor DHCP mesmo que esteja configurada no servidor DHCP. É importante obter um rastreamento de farejador para verificar as opções solicitadas e fornecidas.
NOTE: se a ACI estiver configurada para o endereço auxiliar de DHCP (DHCP Relay) para um servidor DHCP, o tcpdump poderá ser usado no switch leaf do primeiro salto. Como o switch leaf deve agir como um relay DHCP, a CPU deve processar os pacotes DHCP para encaminhá-los ao servidor DHCP. Você pode fazer login usando a conta admin e usar o comando
tcpdump -i any -w /tmp/packet.pcap "porta 67"
para capturar os pacotes DHCP entre o host e o servidor DHCP. Se o switch leaf não tiver nenhum endereço IP OOB, você poderá transferir o arquivo capturado para o APIC fazendo login no apic usando o nome de usuário admin e usando
scp admin@<switch TEP>:/tmp/packet.pcap /home/admin
Você pode transferir o arquivo do APIC usando o endereço ip da GUI.
Pode haver muitos nomes de arquivos diferentes dependendo do que o servidor PXE suporta. O nome de arquivo do carregador de inicialização mais comum para um servidor linux é chamado "/pxelinux.0" e normalmente está localizado no diretório /tftpboot.
Opções de DHCP que podem ser usadas na inicialização de PXE
NOME |
Nº DA OPÇÃO |
Configuração |
BOOTFILE |
0 |
Bootfile <file> |
DEFAULT_ROUTER |
3 |
Default-router 10.250.118.1 |
REDE |
11 |
Rede 10.250.118.0 255.255.255.0 |
NEXT_SERVER |
12 |
Próximo servidor 10.45.67.8 |
Enviar com opção correspondente 60 |
43 |
opção 43 hex 06010708070000010afbd015 |
String correspondente à opção 43 |
60 |
Opção 60 "PXEClient" |
Servidor TFTP único |
66 |
Opção 66 ip 10.240.221.21 |
Nome do arquivo PXE |
67 |
Opção 67 "/pxelinux.0" |
Lista de servidores TFTP |
150 |
Opção 150 10.240.208.21 |
A opção 43 é retornada ao cliente PXE se o servidor DHCP corresponder a sua string de opção 60 à string de opção 60 enviada pelo cliente. A opção 43 tem várias subopções em ordem crescente (opção 6 e 8, etc.):
A subopção 6 é definida como
06 : subopção 6
01 : 1 byte de comprimento
07 : use a lista PXE_BOOT_SERVERS, desative o multicast e a descoberta de broadcast (somente unicast)
A subopção 8 é definida como
08 : subopção 8
07 : tamanho da opção 08 em bytes
0000 : Servidor PXE tipo 0 (servidor de inicialização PXE)
01 : número de servidores PXE
0afbd015 : 10.251.208.21
A opção é semelhante a esta na configuração do DHCP
Opção 43 hex 0601070807000010afbd015
De acordo com https://support.microsoft.com/en-us/kb/259670, quando o servidor DHCP tiver estas opções definidas:
60 = Identificador do cliente (definido para "PXEClient")
66 = Nome do host ou endereço IP do servidor de inicialização
67 = Nome do arquivo de inicialização
e quando a oferta DHCP inicial do servidor DHCP contém essas opções de inicialização, é feita uma tentativa de conexão com a porta 4011 no servidor DHCP do cliente PXE e ocorre o erro "Proxy DHCP service did not reply on Port 4011".
NOTE: A Microsoft não suporta o uso dessas opções em um servidor DHCP para redirecionar clientes PXE.
Topologia do cliente
Neste caso de exemplo, o usuário tinha duas estruturas ACI diferentes. Na estrutura nº 1 da ACI, os clientes PXE estavam fazendo DHCPing e inicializando um servidor Microsoft dentro da estrutura. Na outra estrutura da ACI, os clientes PXE usavam DHCPing em um roteador IOS-XE 4507 externo por meio de um L3Out, mas usando o mesmo servidor da Microsoft para fazer download do arquivo de modo que o servidor DHCP não estivesse atuando como o servidor TFTP.
A solução que o cliente finalmente adotou foi mudar para um servidor DHCP linux. Analisando os rastreamentos do pacote DHCP, parece que o cliente configurou incorretamente a string opcional 43 e o servidor DHCP IOS-XE nunca funcionou.
Para que isso funcione na ACI:
- um relé DHCP deve ser configurado para retransmitir os pacotes do cliente DHCP
- Os contratos devem permitir pacotes DHCP e TFTP entre o L3Out e o EPG em que o cliente PXE está
Você pode ver quedas de contrato nos switches leaf para os pacotes TFTP usando o comando
calo2-leaf2# show logging ip access-list internal packet-log | grep <endereço ip do cliente>
Esse comando será alterado na versão 2.0 para adicionar a palavra-chave deny ou permit e se tornará
calo2-leaf2# show logging ip access-list internal packet-log deny | grep <endereço ip do cliente>
No caso do exemplo, o cliente PXE não estava solicitando a opção 66, mas estava especificando a opção 60 e solicitando a opção 43 na lista de parâmetros da opção 55. Também estava solicitando o próximo servidor (opção 12). Observe que ele solicitou o nome de arquivo PXE através da opção 67.
A resposta mostra o arquivo de inicialização e a opção 67
TCPdump no switch leaf: