Preboot eXecution Environment (PXE, a volte pronunciato come pixel)
PXE o avvio di rete consente al BIOS di scaricare e avviare un sistema operativo (OS) dalla rete. Nei router Cisco NX-OS, equivale al boot loader [loader>] alias Kickstart.
Nell'avvio PXE, il BIOS del client PXE controlla l'ordine di avvio configurato e, se è stato configurato l'avvio PXE, determina se l'hardware supporta l'avvio PXE. In caso affermativo, tenta di DHCP un indirizzo IP della scheda NIC. Nella richiesta DHCP, il client PXE richiede alcune opzioni DHCP, ad esempio 67 [Nomefile]. Nella risposta DHCP, il server DHCP risponde con le opzioni richieste. Il client PXE scarica quindi il nome file [Network Bootstrap Program (NBP)] specificato nella risposta DHCP e lo esegue per caricare il sistema operativo sul server.
Reindirizza il client PXE a un server TFTP diverso
Per impostazione predefinita, il client PXE tenterà di scaricare il nome file nella risposta DHCP del server DHCP a meno che non riceva un'opzione 66, next-server o un'opzione 60/43 nella risposta DHCP per reindirizzarla a un indirizzo IP diverso. L'indirizzo del server successivo viene utilizzato in bootp e PXE per specificare l'utilizzo di server diversi per DHCP e TFTP.
Le opzioni DHCP next-server (opzione 12) e bootfile (opzione 0) in genere specificano il server TFTP e il nome del file del bootloader iniziale. Il file di avvio viene utilizzato facoltativamente da un client per richiedere un particolare tipo di file di avvio in un messaggio DHCPDISCOVER. Viene utilizzato da un server DHCP in una DHCPOFFER per specificare completamente il percorso e il nome file della directory del file di avvio.
È necessario specificare anche l'opzione 67 per il nome del file. La differenza tra bootfile e l'opzione 67 è il punto della risposta DHCP in cui viene trovato il nome del file. Con i campi riservati, le risposte non vengono numerate nella parte Options del pacchetto di risposta, ma in un ordine specifico.
Ad esempio, Nome host server e Bootfile vengono visualizzati prima delle opzioni numerate nell'immagine seguente.
Note importanti sulla risoluzione dei problemi
Se il client di avvio PXE non richiede un'opzione DHCP specifica nell'elenco di richieste con parametri dell'opzione 5 nel pacchetto di richiesta DHCP, l'opzione DHCP NON SARÀ inclusa nel pacchetto di risposta del server DHCP anche se è configurata sul server DHCP. È importante ottenere una traccia dello sniffer per verificare le opzioni richieste e specificate.
NOTA: se ACI è configurato per l'indirizzo dell'helper IP DHCP (inoltro DHCP) a un server DHCP, è possibile usare tcpdump sul primo switch foglia hop. Poiché lo switch foglia deve funzionare come inoltro DHCP, la CPU deve elaborare i pacchetti DHCP per inoltrarli al server DHCP. È possibile accedere utilizzando l'account admin e il comando
tcpdump -i any -w /tmp/packet.pcap "porta 67"
per acquisire i pacchetti DHCP tra l'host e il server DHCP. Se lo switch foglia non ha un indirizzo IP OOB, è possibile trasferire il file catturato all'APIC accedendo all'apic con il nome utente admin e usando
scp admin@<opzione TEP>:/tmp/packet.pcap /home/admin
È quindi possibile trasferire il file dall'APIC utilizzando l'indirizzo IP della GUI.
Possono esistere molti nomi di file diversi a seconda di quello supportato dal server PXE. Il nome file del caricatore di avvio più comune per un server linux è "/pxelinux.0" e si trova in genere nella directory /tftpboot.
Opzioni DHCP da utilizzare nell'avvio PXE
NOME |
OPZIONE N. |
Configurazione |
BOOTFILE |
0 |
Bootfile <file> |
ROUTER_PREDEFINITO |
3 |
Router predefinito 10.250.118.1 |
RETE |
11 |
Rete 10.250.118.0 255.255.255.0 |
SERVER_SUCCESSIVO |
12 |
Next-server 10.45.67.8 |
Invia con opzione corrispondente 60 |
43 |
opzione 43 hex 06010708070000010afbd015 |
Stringa corrispondente all'opzione 43 |
60 |
Opzione 60 "PXEClient" |
Server TFTP singolo |
66 |
Opzione 66 ip 10.240.221.21 |
Nome file PXE |
67 |
Opzione 67 "/pxelinux.0" |
Elenco server TFTP |
150 |
Opzione 150 10.240.208.21 |
L'opzione 43 viene restituita al client PXE se il server DHCP corrisponde alla relativa stringa dell'opzione 60 alla stringa dell'opzione 60 inviata dal client. L'opzione 43 presenta diverse opzioni secondarie in ordine crescente (opzione 6, opzione 8, ecc.):
L'opzione secondaria 6 è definita come
06: opzione secondaria 6
01: Lunghezza 1 byte
07: utilizzare l'elenco PXE_BOOT_SERVERS, disabilitare il rilevamento multicast e broadcast (solo unicast)
L'opzione secondaria 8 è definita come
08: opzione secondaria 8
07: opzione size of 08 in byte
0000: Server PXE tipo 0 (server di avvio PXE)
01: numero di server PXE
0afbd015 : 10.251.208.21
L'opzione è simile a questa nella configurazione DHCP
Opzione 43 hex 06010708070000010afbd015
In base a https://support.microsoft.com/en-us/kb/259670, quando sul server DHCP sono impostate queste opzioni:
60 = Identificatore client (impostato su "PXEClient")
66 = Nome host o indirizzo IP del server di avvio
67 = Nome file di avvio
e quando l'offerta DHCP iniziale del server DHCP contiene queste opzioni di avvio, viene effettuato un tentativo di connessione alla porta 4011 del server DHCP dal client PXE e si verifica l'errore "Proxy DHCP service does not reply on Port 4011".
NOTA: Microsoft non supporta l'utilizzo di queste opzioni su un server DHCP per reindirizzare i client PXE.
Topologia del cliente
In questo caso di esempio, l'utente aveva 2 fabric ACI differenti. In ACI fabric n. 1, i client PXE erano DHCP e avviavano un server Microsoft all'interno del fabric. Nell'altra struttura ACI, i client PXE erano DHCP su un router IOS-XE 4507 esterno tramite un'uscita L3T, ma utilizzavano lo stesso server Microsoft per scaricare il file in modo che il server DHCP non agisse come server TFTP.
La risoluzione che il cliente ha infine adottato è stata quella di passare a un server DHCP Linux. Dall'analisi delle tracce del pacchetto DHCP, risulta che il cliente non ha configurato correttamente la stringa dell'opzione 43 e il server DHCP IOS-XE non ha mai funzionato.
Affinché questo funzioni in ACI:
- è necessario configurare un inoltro DHCP per inoltrare i pacchetti client DHCP
- I contratti devono consentire i pacchetti DHCP e TFTP tra l'uscita L3E e l'EPG in cui si trova il client PXE
Sugli switch foglia, è possibile che vengano visualizzate perdite di contratto per i pacchetti TFTP utilizzando il comando
calo2-leaf2# show logging ip access-list internal packet-log | grep <indirizzo ip client>
Questo comando verrà modificato nella versione 2.0 per aggiungere la parola chiave deny o allow e diventerà
calo2-leaf2# show logging ip access-list internal packet-log deny | grep <indirizzo ip client>
Nell'esempio, il client PXE non ha richiesto l'opzione 66, ma ha specificato l'opzione 60 e ha richiesto l'opzione 43 nell'elenco dei parametri dell'opzione 55. Richiedeva anche il server successivo (opzione 12). Si noti che è stato richiesto il nome file PXE tramite l'opzione 67.
La risposta mostra il file di avvio e l'opzione 67
TCPdump su switch foglia: