Wie testet man PXE von der Befehlszeile aus?

Wie testet man PXE von der Befehlszeile aus?

Ich arbeite daran, einen „PXE-Boot-Server“ einzurichten, falls das möglich ist. Dazu muss ich mit einem TPlink-Router (TL-ER7206 v1.0) arbeiten, der einen DHCP-Dienst mit „Option 66“ anbietet, der auf die IP-Adresse des TFTP-Servers eingestellt werden sollte (aber anscheinend gibt es nirgends eine Möglichkeit, den Dateinamen einzustellen). Möglicherweise muss ich DHCP auf einem Linux-Server einrichten und das auf dem Router deaktivieren, aber ich würde gerne sehen, wie weit ich mit dem Router komme. Letztendlich würde ich gerne ein Setup erreichen, bei dem der PXE-Boot-Client ein Menü mit verschiedenen zu installierenden Betriebssystemen sieht, aber das ist Zukunftsmusik.

Aber gibt es vorerst ein paar Befehle, die ich von der Befehlszeile in Linux aus verwenden könnte, um zu sehen, was ein PXE-bootender PC vom Server zurückbekommt, ohne einen tatsächlichen PXE-Boot versuchen zu müssen? Ich weiß, dass ich etwas in Virtualbox ausführen kann, aber ich möchte dies von der Befehlszeile aus testen/debuggen können.

Antwort1

Um meine eigene Frage zu beantworten: Ich habe einige Zeit damit verbracht, Dinge auszuprobieren und mir wurde klar, dass ich eine Möglichkeit brauchte, um zu sehen, was der Server beim Start DHCPantwortet .PXE

PXE basiert auf zwei Diensten:

  • DHCPum eine IP-Adresse zu erhalten, die Sie für den nächsten Schritt benötigen.
  • TFTP, zum Bereitstellen der Dateien, die Sie zum Booten benötigen.

DHCPgibt Ihnen nicht nur eine IP-Adresse, sondern verweist Sie auch auf den TFTPServer und den Namen der ersten Datei, die Sie zum Booten benötigen. Um zu sehen, was Sie zurückbekommen DHCP, verwende ich zwei Befehle aus zwei verschiedenen Sitzungen:

  • dhcpdump, das bequem in einem ausgeführt werden kann screen. Es schreibt den gesamten Datenverkehr zum und vom DHCPServer aus.
  • nmap --script broadcast-dhcp-discover, wodurch eine IP-Adresse vom DHCPServer angefordert wird.

Beispielausgabe von dhcpdump, die zeigt, dass der DHCPden Dateinamen bereitstellt, pxelinux.0den ich in die Konfigurationsdatei eingegeben habe /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
---------------------------------------------------------------------------

Der nächste Schritt ist natürlich die Einrichtung. TFTPEs gibt viele gute Anleitungen, aber ich muss zwischen mehreren Betriebssystemen wählen können, und dieser Artikel scheint genau das Richtige zu sein:Einrichten eines PXE-Installationsservers für mehrere Linux-Distributionen unter Debian Lenny

Antwort2

Zum Testen kann ein Webserver als „PXE-Boot-Server“ verwendet werden, der den PXE-Boot ohne TFTP durchführt und den bereits in libvirt integrierten DHCP-Server wiederverwendet. Libvirt verwendet iPXE als Firmware für den Netzwerk-Boot in den Netzwerkschnittstellen für VMs.

Der Test-Bootcomputer sollte eine virtuelle Maschine sein. Der Webserver sollte mit einer bestimmten Ordnerarchitektur und mit den ausgewählten Boot-Images erstellt werden.

Zum Artikel Einfacher PXE-Boot-Test mit nur HTTP unter Verwendung von iPXE und libvirt, das zeigt:

  • Webserver-Setup
  • DHCP-Setup für Libvirt-Netzwerk
  • PXE-Booten mit dem Befehl „virt-install“.

Das Ganze ist viel zu umfangreich, um es hier wiederzugeben.

verwandte Informationen