Preboot eXecution Environment (PXE, manchmal als Pixie ausgesprochen)
PXE oder Network Booting ermöglicht dem BIOS das Herunterladen und Booten eines Betriebssystems über das Netzwerk. Bei Cisco NX-OS-Routern entspricht dies dem Boot-Loader [loader>] auch als Kickstart.
Beim PXE-Boot überprüft das BIOS des PXE-Clients die konfigurierte Bootreihenfolge und, wenn PXE-Boot konfiguriert ist, ob die Hardware PXE-Boot unterstützt. Wenn ja, versucht er, eine IP-Adresse von der Netzwerkkarte zu DHCP. In der DHCP-Anfrage fordert der PXE-Client bestimmte DHCP-Optionen an, z. B. 67 [Dateiname]. In der DHCP-Antwort antwortet der DHCP-Server mit den angeforderten Optionen. Der PXE-Client lädt dann die in der DHCP-Antwort angegebene Datei [Network Bootstrap Program (NBP)] herunter und führt sie aus, um das Betriebssystem auf den Server laden zu lassen.
PXE-Client an anderen TFTP-Server umleiten
Standardmäßig versucht der PXE-Client, den Dateinamen in der DHCP-Antwort vom DHCP-Server per TFTP herunterzuladen, es sei denn, er erhält die Option 66, Next-Server oder die Option 60/43 in der DHCP-Antwort, um ihn an eine andere IP-Adresse umzuleiten. Die Adresse des nächsten Servers wird in bootp und PXE verwendet, um anzugeben, dass verschiedene Server für DHCP und TFTP verwendet werden.
Die DHCP-Optionen Next-Server (Option 12) und Bootfile (Option 0) geben in der Regel den TFTP-Server und den Dateinamen des anfänglichen Boot-Loaders an. Bootfile wird optional von einem Client verwendet, um einen bestimmten Typ von Bootdatei in einer DHCPDISCOVER-Nachricht anzufordern. Er wird von einem DHCP-Server in einem DHCPOFFER verwendet, um einen Boot-Datei-Verzeichnispfad und einen Dateinamen vollständig anzugeben.
Option 67 muss auch für den Dateinamen angegeben werden. Der Unterschied zwischen bootfile und option 67 besteht darin, dass in der DHCP-Antwort der Dateiname gefunden wird. Bei den reservierten Feldern werden die Antworten nicht im Optionsteil des Antwortpakets nummeriert, sondern in einer bestimmten Reihenfolge angegeben.
Beispielsweise werden der Server-Hostname und die Bootdatei vor den nummerierten Optionen im Bild unten angezeigt.
![212041-Understanding-and-Troubleshooting-PXE-bo-00.png](/c/dam/en/us/support/docs/cloud-systems-management/application-policy-infrastructure-controller-apic/212041-Understanding-and-Troubleshooting-PXE-bo-00.png)
Wichtige Hinweise zur Fehlerbehebung
Wenn der PXE-Boot-Client keine spezifische DHCP-Option in der Parameteranforderungsliste der Option 55 im DHCP-Anforderungspaket anfordert, IST die DHCP-Option NICHT im DHCP-Serverantwortpaket enthalten, selbst wenn sie auf dem DHCP-Server konfiguriert ist. Es ist wichtig, einen Sniffer-Trace zu erhalten, um die angeforderten und gegebenen Optionen zu überprüfen.
HINWEIS: Wenn die ACI für die DHCP-IP-Helper-Adresse (DHCP Relay) für einen DHCP-Server konfiguriert ist, kann auf dem ersten Hop Leaf-Switch tcpdump verwendet werden. Da der Leaf-Switch als DHCP-Relay fungieren muss, muss die CPU die DHCP-Pakete verarbeiten, um sie an den DHCP-Server weiterzuleiten. Sie können sich mit dem Administratorkonto anmelden und den Befehl
tcpdump -i any -w /tmp/packet.pcap "port 67"
um die DHCP-Pakete zwischen dem Host und dem DHCP-Server zu erfassen. Wenn der Leaf-Switch über keine OOB-IP-Adresse verfügt, können Sie die erfasste Datei auf den APIC übertragen, indem Sie sich mit dem Admin-Benutzernamen beim APIC anmelden und
scp admin@<switch TEP>:/tmp/packet.pcap /home/admin
Sie können die Datei dann mithilfe der GUI-IP-Adresse vom APIC übertragen.
Je nachdem, welche PXE-Server unterstützen, können viele verschiedene Dateinamen angegeben werden. Der gängigste Bootloader-Dateiname für einen Linux-Server heißt "/pxelinux.0" und befindet sich normalerweise im Verzeichnis /tftpboot.
DHCP-Optionen, die beim PXE-Booten verwendet werden können
NAME |
OPTIONSNUMMER |
Konfiguration |
BOOTDATEI |
0 |
Bootfile <Datei> |
STANDARD-ROUTER |
1 |
Standard-Router 10.250.118.1 |
NETZWERK |
11 |
Netzwerk 10.250.118.0 255.255.255.0 |
NEXT_SERVER |
12 |
Next-Server 10.45.67.8 |
Mit übereinstimmender Option senden 60 |
43 |
Option 43 hex 06010708070000010afbd015 |
Übereinstimmende Zeichenfolge für Option 43 |
60 |
Option 60 "PXEClient" |
Einzelner TFTP-Server |
66 |
Option 66 IP 10.240.221.21 |
PXE-Dateiname |
67 |
Option 67 "/pxelinux.0" |
TFTP-Serverliste |
150 |
Option 150 10.240.208.21 |
Option 43 wird an den PXE-Client zurückgegeben, wenn der DHCP-Server die 60-Option mit der 60-Zeichenfolge vergleicht, die vom Client gesendet wurde. Option 43 weist in aufsteigender Reihenfolge mehrere Unteroptionen auf (Option 6, dann 8 usw.):
Unteroption 6 ist definiert als
06: Unteroption 6
01: 1 Byte lang
07: PXE_BOOT_SERVERS-Liste verwenden, Multicast- und Broadcast-Erkennung deaktivieren (nur Unicast)
Unteroption 8 ist definiert als
08: Unteroption 8
07: Größe von 08 Option in Byte
0000: PXE-Servertyp 0 (PXE-Bootserver)
01: Anzahl der PXE-Server
0afbd015: 10.251.208.21
Die Option sieht in der DHCP-Konfiguration folgendermaßen aus:
Option 43 hex 06010708070000010afbd015
Laut https://support.microsoft.com/en-us/kb/259670, wenn der DHCP-Server über folgende Optionen verfügt:
60 = Client Identifier (auf "PXEClient" festgelegt)
66 = Host-Name oder IP-Adresse des Bootservers
67 = BootFile Name
Wenn das anfängliche DHCP-Angebot des DHCP-Servers diese Boot-Optionen enthält, wird versucht, vom PXE-Client aus eine Verbindung mit Port 4011 auf dem DHCP-Server herzustellen, und es wird der Fehler "Proxy DHCP Service hat nicht auf Port 4011 geantwortet" angezeigt.
HINWEIS: Microsoft unterstützt die Verwendung dieser Optionen auf einem DHCP-Server zur Umleitung von PXE-Clients nicht.
Kundentopologie
In diesem Beispielfall hatte der Benutzer zwei verschiedene ACI-Fabrics. In der ACI-Fabric Nr. 1 führten die PXE-Clients DHCP aus und starteten einen Microsoft-Server in der Fabric. In der anderen ACI-Fabric wiesen die PXE-Clients einen externen IOS-XE 4507-Router über einen L3Out-Router aus, nutzten jedoch denselben Microsoft-Server, um die Datei herunterzuladen, sodass der DHCP-Server nicht als TFTP-Server fungierte.
Die endgültige Lösung bestand darin, auf einen Linux-DHCP-Server zu wechseln. Die Analyse der DHCP-Paketverfolgung sieht so aus, als ob der Kunde die Option 43 String falsch konfiguriert hat und der IOS-XE DHCP-Server nie funktionierte.
Hierfür kann die ACI verwendet werden:
- Ein DHCP-Relay muss konfiguriert werden, um die DHCP-Client-Pakete weiterzuleiten.
- Die Verträge müssen DHCP- und TFTP-Pakete zwischen dem L3Out und der EPG zulassen, in der sich der PXE-Client befindet.
Bei den Leaf-Switches für die TFTP-Pakete werden unter Verwendung des Befehls möglicherweise Verträge verworfen.
calo2-leaf2# show logging ip access-list internal paket log | grep <Client-IP-Adresse>
Dieser Befehl ändert sich in Version 2.0, um das deny-Schlüsselwort oder das permit-Schlüsselwort hinzuzufügen. Daraus wird
calo2-leaf2# show logging ip access-list internal paket log deny | grep <Client-IP-Adresse>
Im Beispielfall forderte der PXE-Client Option 66 nicht an, gab aber Option 60 an und forderte Option 43 in der Parameterliste für Option 55 an. Außerdem wurde Next-Server angefordert (Option 12). Beachten Sie, dass der PXE-Dateiname über Option 67 angefordert wurde.
![212041-Understanding-and-Troubleshooting-PXE-bo-01.png](/c/dam/en/us/support/docs/cloud-systems-management/application-policy-infrastructure-controller-apic/212041-Understanding-and-Troubleshooting-PXE-bo-01.png)
Die Antwort zeigt die Bootdatei und Option 67.
![212041-Understanding-and-Troubleshooting-PXE-bo-02.png](/c/dam/en/us/support/docs/cloud-systems-management/application-policy-infrastructure-controller-apic/212041-Understanding-and-Troubleshooting-PXE-bo-02.png)
TCPdump auf Leaf-Switch: