Entorno de ejecución de arranque previo (PXE, a veces pronunciado como pixie)
PXE o Network Booting permite al BIOS descargar y arrancar un sistema operativo (OS) a través de la red. En los routers Cisco NX-OS, esto es equivalente al cargador de inicio [loader>] conocido como Kickstart.
En el arranque PXE, el BIOS del cliente PXE observa el orden de arranque configurado y, si se configura el arranque PXE, determina si el hardware soporta el arranque PXE. Si la respuesta es sí, intenta hacer DHCP una dirección IP fuera de la NIC. En la solicitud DHCP, el cliente PXE solicita ciertas opciones DHCP como 67 [Nombre de archivo]. En la respuesta DHCP, el servidor DHCP responde con las opciones solicitadas. A continuación, el cliente PXE descarga el nombre de archivo [Network Bootstrap Program (NBP)] especificado en la respuesta DHCP y lo ejecuta para que el sistema operativo se cargue en el servidor.
Redirigir el cliente PXE a un servidor TFTP diferente
De forma predeterminada, el cliente PXE intentará descargar TFTP el nombre de archivo en la respuesta DHCP del servidor DHCP a menos que reciba una opción 66, siguiente servidor, o la opción 60/43 en la respuesta DHCP para redirigirlo a una dirección ip diferente. La dirección del siguiente servidor se utiliza en bootp y PXE para especificar el uso de diferentes servidores para DHCP y TFTP.
Las opciones DHCP next-server (opción 12) y bootfile (opción 0) suelen especificar el servidor TFTP y el nombre de archivo del cargador de arranque inicial. Un cliente puede utilizar Bootfile de forma opcional para solicitar un tipo determinado de archivo de inicio en un mensaje DHCPDISCOVER. Es utilizado por un servidor DHCP en un DHCPOFFER para especificar completamente la trayectoria y el nombre de archivo del directorio del archivo de inicio.
También se debe especificar la opción 67 para el nombre de archivo. La diferencia entre bootfile y la opción 67 es donde en la respuesta DHCP se encuentra el nombre de archivo. Con los campos reservados, las respuestas no se numeran en la parte Opciones del paquete de respuesta, sino que se dan en un orden específico.
Por ejemplo, Server Host Name y Bootfile aparecen antes de las opciones numeradas de la siguiente imagen.
Notas importantes sobre la solución de problemas
Si el cliente de arranque PXE no solicita una opción DHCP específica en la Lista de Solicitud de Parámetro de Opción 55 en el paquete de solicitud DHCP, la opción DHCP NO ESTARÁ en el paquete de respuesta del servidor DHCP incluso si está configurada en el servidor DHCP. Es importante obtener un rastro del sabueso para verificar las opciones solicitadas y dadas.
NOTE: si ACI está configurado para DHCP ip helper address (DHCP Relay) a un servidor DHCP, tcpdump se puede utilizar en el primer switch de hoja de saltos. Debido a que el switch de hoja debe actuar como un relé DHCP, la CPU debe procesar los paquetes DHCP para reenviarlos al servidor DHCP. Puede iniciar sesión con la cuenta de administrador y utilizar el comando
tcpdump -i any -w /tmp/packet.pcap "port 67"
para capturar los paquetes DHCP entre el host y el servidor DHCP. Si el switch de hoja no tiene ninguna dirección IP OOB, puede transferir el archivo capturado al APIC iniciando sesión en la apic usando el nombre de usuario admin y usando
scp admin@<switch TEP>:/tmp/packet.pcap /home/admin
A continuación, puede transferir el archivo del APIC mediante la dirección IP de la GUI.
Puede haber muchos nombres de archivo diferentes dependiendo de lo que admita el servidor PXE. El nombre de archivo más común del cargador de inicialización para un servidor Linux se denomina "/pxelinux.0" y se encuentra normalmente en el directorio /tftpboot.
Opciones DHCP que se podrían utilizar en el arranque PXE
NOMBRE |
N.º DE OPCIÓN |
Configuración |
ARCHIVO DE ARRANQUE |
0 |
Bootfile <file> |
DEFAULT_ROUTER |
3 |
Default-router 10.250.118.1 |
RED |
11 |
Network 10.250.118.0 255.255.255.0 |
NEXT_SERVER |
12 |
Next-server 10.45.67.8 |
Enviar con la opción coincidente 60 |
43 |
option 43 hex 06010708070000010afbd015 |
Cadena coincidente para la opción 43 |
60 |
Opción 60 "PXEClient" |
Servidor TFTP único |
66 |
Opción 66 ip 10.240.221.21 |
Nombre de archivo PXE |
67 |
Opción 67 "/pxelinux.0" |
Lista de servidores TFTP |
150 |
Opción 150 10.240.208.21 |
La opción 43 se devuelve al cliente PXE si el servidor DHCP coincide con su cadena de opción 60 a la cadena de opción 60 enviada por el cliente. La opción 43 tiene varias subopciones en orden ascendente (opción 6, luego 8, etc.):
La subopción 6 se define como
06: subopción 6
01: 1 byte de longitud
07: utilice la lista PXE_BOOT_SERVERS, desactive la detección de multidifusión y difusión (sólo unidifusión)
La subopción 8 se define como
08: subopción 8
07: tamaño de la opción 08 en bytes
0000: Servidor PXE tipo 0 (servidor de arranque PXE)
01: número de servidores PXE
0afbd015 : 10.251.208.21
La opción se ve así en la configuración DHCP
Opción 43 hex 06010708070000010afbd015
Según https://support.microsoft.com/en-us/kb/259670, cuando el servidor DHCP tiene estas opciones configuradas:
60 = Identificador de cliente (establecido en "PXEClient")
66 = Nombre de host o dirección IP del servidor de inicio
67 = Nombre de archivo de arranque
y cuando la oferta DHCP inicial del servidor DHCP contiene estas opciones de inicio, se intenta conectar al puerto 4011 en el servidor DHCP desde el cliente PXE y se produce el error "Proxy DHCP service not reply on Port 4011" .
NOTE: Microsoft no admite el uso de estas opciones en un servidor DHCP para redirigir clientes PXE.
Topología del cliente
En este caso de ejemplo, el usuario tenía 2 fabrics ACI diferentes. En el fabric ACI nº 1, los clientes PXE estaban iniciando DHCP y arrancando un servidor Microsoft dentro del fabric. En el otro fabric de ACI, los clientes PXE estaban desconectando DHCP de un router IOS-XE 4507 externo a través de un L3Out pero usando el mismo servidor de Microsoft para descargar el archivo de modo que el servidor DHCP no actuara como el servidor TFTP.
La resolución que el cliente finalmente adoptó fue pasar a un servidor DHCP linux. Al analizar los rastros de paquetes DHCP, parece que el cliente no configuró correctamente la cadena de la opción 43 y que el servidor DHCP de IOS-XE nunca funcionó.
Para que esto funcione en ACI:
- se debe configurar un relé DHCP para transmitir los paquetes del cliente DHCP
- Los contratos deben permitir los paquetes DHCP y TFTP entre el L3Out y el EPG en el que se encuentra el cliente PXE
Puede ver caídas de contrato en los switches de hoja para los paquetes TFTP usando el comando
calo2-leaf2# show logging ip access-list internal packet-log | grep <client ip address>
Este comando cambiará en la versión 2.0 para agregar la palabra clave deny o permit y pasará a ser
calo2-leaf2# show logging ip access-list internal packet-log deny | grep <client ip address>
En el caso de ejemplo, el cliente PXE no estaba solicitando la opción 66, sino que estaba especificando la opción 60 y solicitando la opción 43 en la lista de parámetros de la opción 55. También solicitaba el siguiente servidor (opción 12). Observe que solicitó el nombre de archivo PXE mediante la opción 67.
La respuesta muestra el archivo de inicio y la opción 67
TCPdump en switch de hoja: