Translations: "English" |
DHCP Relay on Cisco Nexus and PXE
Recentemente un cliente mi ha chiesto di abilitare la funzione di dhcp relay sugli switch Nexus 9300, in modo da migrare l'utilizzo del dhcp server dalla rete locale ad una sede remota.
A distanza di qualche giorno, è emerso che non si riusciva più ad utilizzare il server PXE per l'avvio del sistema operativo sui PC, a causa del comportamento dei Cisco Nexus con i pacchetti DHCP broadcast quando è configurato il DHCP relay.
DHCP Relay
Un client, configurato in modo da prendere un indirizzo tramite DHCP, invia un pacchetto broadcast chiamato DHCP Discover, in cui chiede di avere un indirizzo IP (e altri parametri di rete). Un server DHCP, che si trova sulla stessa VLAN del client, vede questo pacchetto e risponde con una sua offerta. Se il client è contento, accetta l'offerta e il dispositivo a quel punto ha un indirizzo IP.
Il più delle volte, però, il server DHCP non è sulla stessa VLAN del client. In questi casi è necessario un device che cattura il pacchetto di broadcast di DHCP discover e lo inoltra al server DHCP. Questo dispositivo prende il nome di DHCP relay agent. Per comodità, solitamente, il default gateway della VLAN viene configurato come DHCP relay agent. Per gli switch Cisco Nexus, la configurazione è
in cui 172.16.1.1 è l'indirizzo del DHCP Server.
Preboot Execution Environment (PXE)
Il Preboot Execution Environment (PXE) è un metodo per eseguire il boot di un pc utilizzando una connessione di rete ethernet ed il supporto di un server, senza bisogno di una unità di memoria di massa.
Con questo sistema, un client che riceve un IP tramite DHCP, riceve anche le informazioni necessarie per scaricare via TFTP un file che gli permette di avviare un sistema operativo.
DHCP Relay e PXE
Solitamente il PXE server si comporta anche come DHCP Server, fornendo però solo le opzioni aggiuntive per permettere al client di scaricare il file di avvio del sistema operativo.
Per questo quando il PXE Server si trova sulla stessa VLAN del client, risponde ai messaggi di DHCP Discover con le informazioni necessarie.
Cisco Nexus e DHCP Relay
Gli switch Cisco Nexus, a differenza dei Cisco IOS, quando sono configurati come DHCP relay agent, prendono il pacchetto di DHCP Discover, lo inoltrano al DHCP server configurato, ma non propagano il pacchetto broadcast su tutte le altre interfacce. Al contrario, i Cisco IOS propagano il pacchetto DHCP come un normale broadcast su tutte le interfacce, oltre che all'indirizzo del DHCP Server.
A questo link trovate una descrizione dettagliata di questa differenza.
E qui nascono i problemi...
Dopo essere passati dall'utilizzo di un server DHCP locale ad uno remoto, ma lasciando il PXE Server in locale, è emerso il problema del PXE Server.
Essendo il pacchetto DHCP discover un pacchetto di broadcast, e non conoscendo questa differenza di comportamento dei Cisco Nexus, emersa la problematica, non riuscivo a capire come potesse non funzionare più il PXE.
...Risoluzione
Dopo aver scoperto questa differenza di comportamento, però, la risoluzione è risultata essere semplice. Infatti, per fare inoltrare il pacchetto di broadcast al PXE Server è sufficiente configurare l'IP del PXE Server come dhcp relay, anche se si trova sulla stessa VLAN del client.
1interface vlan 100
2 ip address 192.168.100.1
3 ip dhcp relay 172.16.1.1
4 ip dhcp relay 192.168.100.10
5end
dove 192.168.100.10 è l'indirizzo del PXE Server.
A questo punto il PXE Server riceve il pacchetto di DHCP Discover e risponde fornendo le informazioni necessarie al PC per poter avviare il sistema operativo.
Fix it!