¿Cómo probar PXE desde la línea de comandos?

¿Cómo probar PXE desde la línea de comandos?

Estoy trabajando en la configuración de un 'servidor de arranque PXE', si es que existe; con lo que tengo que trabajar es un enrutador TPlink (TL-ER7206 v1.0), que ofrece un servicio DHCP con la 'opción 66' que debe configurarse en la dirección IP del servidor TFTP (pero no hay ningún lugar para configurar el nombre del archivo, parece). Puede que tenga que configurar DHCP en un servidor Linux y desactivar el del enrutador, pero me gustaría ver hasta dónde puedo llegar con el enrutador. En última instancia, me gustaría llegar a una configuración en la que el cliente de arranque PXE vea un menú de diferentes sistemas operativos para instalar, pero eso es para el futuro.

Pero por ahora, ¿hay algunos comandos que podría usar desde la línea de comandos en Linux para ver qué obtendría una PC con arranque PXE del servidor, sin tener que intentar un arranque PXE real? Sé que puedo ejecutar algo en Virtualbox, pero me gustaría poder probar/depurar esto desde la línea de comandos.

Respuesta1

Para responder a mi propia pregunta, pasé algún tiempo probando cosas y me di cuenta de que lo que necesitaba era una forma de ver qué DHCPresponde el servidor cuando PXEse inicia.

PXE se basa en dos servicios:

  • DHCPpara obtener una dirección IP, que necesitará para el siguiente paso.
  • TFTP, para entregar los archivos que necesita para iniciar.

DHCPno sólo le proporciona una dirección IP, sino que también le indica el TFTPservidor y el nombre del primer archivo que necesita para iniciar. Para ver de qué obtienes DHCP, uso dos comandos de dos sesiones diferentes:

  • dhcpdump, que se puede ejecutar cómodamente en un archivo screen. Escribirá cualquier tráfico hacia y desde el DHCPservidor.
  • nmap --script broadcast-dhcp-discover, que solicitará una dirección IP del DHCPservidor.

Salida de muestra de dhcpdump, que muestra que DHCPsirve el nombre de archivo pxelinux.0que puse en el archivo de configuración /etc/dhcp/dhcpd.conf:

root@vogon:~# dhcpdump -i enp8s0
  TIME: 2022-06-27 08:17:41.124
    IP: 192.168.50.177 (88:d8:2e:c3:83:77) > 192.168.50.9 (d8:5e:d3:5d:4:18)
    OP: 1 (BOOTPREQUEST)
 HTYPE: 1 (Ethernet)
  HLEN: 6
  HOPS: 0
   XID: b5cdb8de
  SECS: 0
 FLAGS: 0
CIADDR: 192.168.50.177
YIADDR: 0.0.0.0
SIADDR: 0.0.0.0
GIADDR: 0.0.0.0
CHADDR: 88:d8:2e:c3:83:77:00:00:00:00:00:00:00:00:00:00
 SNAME: .
 FNAME: .
OPTION:  53 (  1) DHCP message type         3 (DHCPREQUEST)
OPTION:  61 (  7) Client-identifier         01:88:d8:2e:c3:83:77
OPTION:  12 ( 15) Host name                 LAPTOP-PNGS5J2E
OPTION:  81 ( 18) Client FQDN               0-0-0 LAPTOP-PNGS5J2E
OPTION:  60 (  8) Vendor class identifier   MSFT 5.0
OPTION:  55 ( 14) Parameter Request List      1 (Subnet mask)
                          3 (Routers)
                          6 (DNS server)
                         15 (Domainname)
                         31 (Perform router discovery)
                         33 (Static route)
                         43 (Vendor specific info)
                         44 (NetBIOS name server)
                         46 (NetBIOS node type)
                         47 (NetBIOS scope)
                        119 (Domain Search)
                        121 (Classless Static Route)
                        249 (MSFT - Classless route)
                        252 (MSFT - WinSock Proxy Auto Detect)
                        
---------------------------------------------------------------------------

  TIME: 2022-06-27 08:17:41.124
    IP: 192.168.50.9 (d8:5e:d3:5d:4:18) > 192.168.50.177 (88:d8:2e:c3:83:77)
    OP: 2 (BOOTPREPLY)
 HTYPE: 1 (Ethernet)
  HLEN: 6
  HOPS: 0
   XID: b5cdb8de
  SECS: 0
 FLAGS: 0
CIADDR: 192.168.50.177
YIADDR: 192.168.50.177
SIADDR: 192.168.50.9
GIADDR: 0.0.0.0
CHADDR: 88:d8:2e:c3:83:77:00:00:00:00:00:00:00:00:00:00
 SNAME: .
 FNAME: pxelinux.0.
OPTION:  53 (  1) DHCP message type         5 (DHCPACK)
OPTION:  54 (  4) Server identifier         192.168.50.9
OPTION:  51 (  4) IP address leasetime      600 (10m)
OPTION:   1 (  4) Subnet mask               255.255.255.0
OPTION:   3 (  4) Routers                   192.168.50.1
OPTION:   6 (  8) DNS server                192.168.50.9,8.8.8.8
OPTION:  15 (  9) Domainname                somewhere.com
---------------------------------------------------------------------------

El siguiente paso, obviamente, es la configuración TFTP; hay muchas guías buenas, pero necesito poder elegir entre varios sistemas operativos, y este artículo parece ser ideal:Configuración de un servidor de instalación PXE para múltiples distribuciones de Linux en Debian Lenny

Respuesta2

Para realizar pruebas, se puede utilizar un servidor web como "servidor de arranque PXE", realizando el arranque PXE sin TFTP y reutilizando el servidor DHCP que ya está integrado en libvirt. Libvirt usa iPXE como firmware para el arranque en red en las interfaces de red para VM

La computadora de arranque de prueba debe ser una máquina virtual. El servidor web debe crearse con una arquitectura de carpetas particular y con las imágenes de inicio elegidas.

ver el articulo Prueba de arranque PXE sencilla con solo HTTP utilizando iPXE y libvirt, eso demuestra:

  • Configuración del servidor web
  • Configuración DHCP de la red Libvirt
  • Arranque PXE usando el comando virt-install.

El conjunto es demasiado voluminoso para incluirlo aquí.

información relacionada