![¿Cómo probar PXE desde la línea de comandos?](https://rvso.com/image/1672305/%C2%BFC%C3%B3mo%20probar%20PXE%20desde%20la%20l%C3%ADnea%20de%20comandos%3F.png)
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é DHCP
responde el servidor cuando PXE
se inicia.
PXE se basa en dos servicios:
DHCP
para obtener una dirección IP, que necesitará para el siguiente paso.TFTP
, para entregar los archivos que necesita para iniciar.
DHCP
no sólo le proporciona una dirección IP, sino que también le indica el TFTP
servidor 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 archivoscreen
. Escribirá cualquier tráfico hacia y desde elDHCP
servidor.nmap --script broadcast-dhcp-discover
, que solicitará una dirección IP delDHCP
servidor.
Salida de muestra de dhcpdump
, que muestra que DHCP
sirve el nombre de archivo pxelinux.0
que 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í.