Environnement eXecution de prédémarrage (PXE, parfois prononcé en pixie)
PXE ou Network Booting permet au BIOS de télécharger et de démarrer un système d'exploitation (OS) sur le réseau. Dans les routeurs Cisco NX-OS, cela équivaut au chargeur de démarrage [chargeur>] alias Kickstart.
Au démarrage PXE, le BIOS du client PXE examine l'ordre de démarrage configuré et, si le démarrage PXE est configuré, détermine si le matériel prend en charge le démarrage PXE. Si oui, il tente de DHCP sur une adresse IP de la carte réseau. Dans la requête DHCP, le client PXE demande certaines options DHCP telles que 67 [Nom de fichier]. Dans la réponse DHCP, le serveur DHCP répond avec les options demandées. Le client PXE télécharge ensuite le nom de fichier [Network Bootstrap Program (NBP)] spécifié dans la réponse DHCP et l'exécute pour charger le système d'exploitation sur le serveur.
Rediriger le client PXE vers un serveur TFTP différent
Par défaut, le client PXE tente de télécharger le nom de fichier dans la réponse DHCP du serveur DHCP, sauf s'il reçoit une option 66, next-server ou l'option 60/43 dans la réponse DHCP pour le rediriger vers une autre adresse IP. L'adresse du serveur suivant est utilisée dans les protocoles bootp et PXE pour spécifier l'utilisation de différents serveurs pour DHCP et TFTP.
Les options DHCP next-server (option 12) et bootfile (option 0) spécifient généralement le serveur TFTP et le nom de fichier du chargeur de démarrage initial. Le fichier d'amorçage est éventuellement utilisé par un client pour demander un type particulier de fichier d'amorçage dans un message DHCPDISCOVER. Il est utilisé par un serveur DHCP dans un DHCPOFFER pour spécifier un chemin d'accès et un nom de fichier du répertoire de démarrage.
L'option 67 doit également être spécifiée pour le nom de fichier. La différence entre le fichier de démarrage et l'option 67 est l'emplacement où se trouve le nom du fichier dans la réponse DHCP. Avec les champs réservés, les réponses ne sont pas numérotées dans la partie Options du paquet de réponse mais données dans un ordre spécifique.
Par exemple, le nom d'hôte et le fichier de démarrage du serveur apparaissent avant les options numérotées de l'image ci-dessous.

Remarques de dépannage importantes
Si le client de démarrage PXE ne demande pas d'option DHCP spécifique dans la liste de requêtes de paramètres Option 55 dans le paquet de requêtes DHCP, l'option DHCP NE SERA PAS dans le paquet de réponses du serveur DHCP même si elle est configurée sur le serveur DHCP. Il est important d'obtenir une trace de renifleur pour vérifier les options demandées et données.
NOTE: si l'ACI est configurée pour l'adresse IP d'assistance DHCP (relais DHCP) à un serveur DHCP, tcpdump peut être utilisé sur le commutateur leaf du premier saut. Comme le commutateur Leaf doit agir en tant que relais DHCP, le processeur doit traiter les paquets DHCP pour les transmettre au serveur DHCP. Vous pouvez vous connecter à l'aide du compte admin et utiliser la commande
tcpdump -i any -w /tmp/packet.pcap « port 67 »
pour capturer les paquets DHCP entre l'hôte et le serveur DHCP. Si le commutateur leaf ne possède pas d'adresse IP OOB, vous pouvez transférer le fichier capturé vers le contrôleur APIC en vous connectant au contrôleur APIC à l'aide du nom d'utilisateur admin et en utilisant
scp admin@<switch TEP>:/tmp/packet.pcap /home/admin
Vous pouvez ensuite transférer le fichier du contrôleur APIC à l'aide de l'adresse IP de l'interface utilisateur graphique.
Il peut y avoir de nombreux noms de fichiers différents selon ce que le serveur PXE prend en charge. Le nom de fichier du chargeur d'amorçage le plus courant pour un serveur Linux est appelé "/pxelinux.0 », et se trouve généralement dans le répertoire /tftpboot.
Options DHCP pouvant être utilisées lors du démarrage PXE
NOM |
OPTION N° |
Configuration |
FICHIER DE DÉMARRAGE |
0 |
Bootfile <fichier> |
ROUTEUR_PAR DÉFAUT |
3 |
Routeur par défaut 10.250.118.1 |
RÉSEAU |
11 |
Réseau 10.250.118.0 255.255.255.0 |
SERVEUR_SUIVANT |
12 |
Serveur suivant 10.45.67.8 |
Envoyer avec option correspondante 60 |
43 |
option 43 hex 06010708070000010afbd015 |
Chaîne correspondante pour l'option 43 |
60 |
Option 60 “ PXEClient ” |
Serveur TFTP unique |
66 |
Option 66 ip 10.240.221.21 |
Nom de fichier PXE |
67 |
Option 67 “/pxelinux.0 ” |
Liste des serveurs TFTP |
150 |
Option 150 10.240.208.21 |
L'option 43 est renvoyée au client PXE si le serveur DHCP fait correspondre sa chaîne d'option 60 à la chaîne d'option 60 envoyée par le client. L'option 43 comporte plusieurs sous-options par ordre croissant (option 6 puis 8, etc.) :
La sous-option 6 est définie comme suit :
06: sous-option 6
01: 1 octet long
07: utiliser la liste PXE_BOOT_SERVERS, désactiver la détection de multidiffusion et de diffusion (monodiffusion uniquement)
La sous-option 8 est définie comme suit :
08: sous-option 8
07: taille de 08, option en octets
0000: Serveur PXE de type 0 (serveur de démarrage PXE)
01: Nombre de serveurs PXE
0afbd015 : 10.251.208.21
Cette option apparaît dans la configuration DHCP
Option 43 hex 06010708070000010afbd015
Selon https://support.microsoft.com/en-us/kb/259670, lorsque les options suivantes sont définies sur le serveur DHCP :
60 = Identificateur du client (défini sur « PXEClient »)
66 = Nom d'hôte ou adresse IP du serveur de démarrage
67 = Nom du fichier de démarrage
et lorsque l'offre DHCP initiale du serveur DHCP contient ces options de démarrage, une tentative est faite pour se connecter au port 4011 sur le serveur DHCP à partir du client PXE et l'erreur “ le service DHCP proxy n'a pas répondu sur le port 4011 ” se produit.
NOTE: Microsoft ne prend pas en charge l'utilisation de ces options sur un serveur DHCP pour rediriger les clients PXE.
Topologie du client
Dans cet exemple, l'utilisateur avait 2 fabrics ACI différents. Dans le fabric ACI n°1, les clients PXE étaient DHCP et démarraient un serveur Microsoft au sein du fabric. Dans l'autre fabric ACI, les clients PXE utilisaient DHCP à partir d'un routeur IOS-XE 4507 externe via un L3Out, mais utilisaient le même serveur Microsoft pour télécharger le fichier, de sorte que le serveur DHCP n'agissait pas en tant que serveur TFTP.
La résolution finalement adoptée par le client était de passer à un serveur DHCP Linux. L'analyse des traces de paquets DHCP semble indiquer que le client a mal configuré la chaîne d'option 43 et que le serveur DHCP IOS-XE n'a jamais fonctionné.
Pour que cela fonctionne avec l'ACI :
- Un relais DHCP doit être configuré pour relayer les paquets du client DHCP
- Les contrats doivent autoriser les paquets DHCP et TFTP entre le L3Out et l'EPG dans lesquels se trouve le client PXE
Vous pouvez voir des pertes de contrat sur les commutateurs Leaf pour les paquets TFTP à l'aide de la commande
calo2-leaf2# show logging ip access-list internal packet-log | grep <adresse ip du client>
Cette commande change dans la version 2.0 pour ajouter le mot clé deny ou permit et devient
calo2-leaf2# show logging ip access-list internal packet-log deny | grep <adresse ip du client>
Dans le cas de l'exemple, le client PXE ne demandait pas l'option 66, mais spécifiait l'option 60 et l'option 43 dans la liste des paramètres de l'option 55. Il demandait également le serveur suivant (option 12). Notez qu'il a demandé le nom de fichier PXE via l'option 67.

La réponse affiche le fichier de démarrage et l'option 67

TCPdump sur le commutateur leaf :