Serveurs WDS et DHCP – Comment faire du boot PXE BIOS et UEFI sur le même réseau ?

I. Présentation

Dans ce tutoriel, nous allons apprendre à configurer un serveur DHCP de façon à pouvoir faire du boot PXE à la fois en mode BIOS et en mode UEFI, sur le même réseau. Un serveur WDS sous Windows Server 2022 sera utilisé pour tester le bon fonctionnement.

Lorsque l'on effectue un boot PXE sur une machine en mode BIOS (ou Legacy), il faut configurer les options DHCP 66 et 67. Dans le même temps, quand on utilise le mode UEFI (avec ou sans Secure Boot), il faut configurer les options DHCP 60, 66 et 67, mais avec une valeur différente pour l'option 67 qui est commune aux deux modes.

Si l'on a besoin de déployer les deux types de machines et que l'on utilise le même réseau local pour le déploiement (ce qui est généralement le cas), on se retrouve dans l'obligation d'ajuster la configuration de l'étendue DHCP en fonction de la configuration de la machine à déployer (BIOS ou UEFI). Même si l'UEFI devient le mode par défaut et se généralise, la problématique existe toujours. Pour répondre à cette problématique et gérer les deux modes en même temps, nous allons pouvoir créer des stratégies DHCP. C'est ce que nous allons voir.

Mode Option 60 Option 66 Option 67
BIOS - Adresse IP du WDS boot\x64\wdsnbp.com
UEFI PXEClient Adresse IP du WDS boot\x64\wdsmgfw.efi

En ce qui concerne l'environnement utilisé pour cette démo :

  • Un serveur virtuel WDS
    • Nom de machine : SRV-WDS
    • Adresse IP : 192.168.14.11
    • Intégré au domaine Active Directory (facultatif)
  • Un serveur virtuel contrôleur de domaine et DHCP
    • Nom de machine : SRV-ADDS-01
    • Adresse IP : 192.168.14.10
    • Nom de domaine : it-connect.local
  • Une machine virtuelle vierge pour tester le boot PXE

Si vous avez besoin d'aide pour mettre en place le serveur WDS, suivez la vidéo complète puisqu'elle intègre cette partie.

II. VMware Workstation : basculer du mode BIOS au mode UEFI

Le firmware d'une machine virtuelle VMware Workstation Pro peut être configuré en mode "BIOS ou "UEFI. Avec Windows 10, on peut utiliser l'un de ces deux modes, tandis qu'avec Windows 11, il faut utiliser impérativement le mode UEFI pour respecter le prérequis de la puce TPM (vTPM).

Pour basculer d'un mode à l'autre, voici la marche à suivre. Accédez aux paramètres de la machine virtuelle, cliquez sur l'onglet "Options", choisissez "Advanced" dans la liste et sur la droite ajustez le paramètre "Firmware type".

VMware Workstation - Passer de BIOS à UEFI

Si vous souhaitez vous exercer sur une machine virtuelle, comme je le fais dans cette démonstration, conservez le mode "BIOS" pour le moment.

III. WDS : boot PXE en mode BIOS

Avant de gérer les deux modes, voyons comment utiliser le mode BIOS seul. Pour cela, nous allons configurer l'étendue "Deploiement" déjà présente sur le serveur DHCP et qui distribue des adresses IP sur le réseau "192.168.14.0/24".

Commencez par ouvrir la console DHCP, sélectionnez l'étendue DHCP utilisée pour le déploiement et effectuez un clic droit sur "Options d'étendue" pour cliquer sur "Configurer les options".

Dans l'onglet "Général", activez les options 066 et 067 en cochant la case située sur la gauche. Renseignez les deux options de cette façon :

  • Option 66 : l'adresse IP du serveur PXE, ici c'est le serveur WDS
  • Option 67 : le nom du fichier de démarrage, indiquez la valeur générique "boot\x64\wdsnbp.com".

DHCP - Option boot PXE BIOS

Validez, vous devez obtenir ceci :

Options DHCP 66 et 67

C'est suffisant pour faire du boot PXE en mode BIOS !

Pour tester, rien de plus simple : on démarre une machine virtuelle en "boot réseau" et si elle est bien sur le même segment réseau que les serveurs, elle va obtenir une adresse IP et se connecter au serveur WDS. Sur l'exemple ci-dessous, on voit bien qu'elle a pu obtenir une adresse IP et qu'il faut appuyer sur F12 pour démarrer sur le réseau.

Boot PXE en mode BIOS

C'est tout bon pour le mode BIOS.

IV. WDS : Boot PXE en mode UEFI (et BIOS)

Pour configurer le DHCP avec les options spécifiques au mode UEFI, le principe est le même avec des options et valeurs différentes.

Maintenant, nous allons voir comment configurer le serveur DHCP pour qu'il gère les deux modes : UEFI et BIOS.

Je vous propose de réaliser cette configuration en PowerShell. Voici les étapes à réaliser :

  • Activer la prise en charge de l'option 60 dans le serveur DHCP
  • Déclarer des classes de fournisseurs pour différencier les machines BIOS et UEFI
  • Créer une stratégie pour gérer les machines en mode BIOS
  • Créer une stratégie pour gérer les machines en mode UEFI

A. DHCP : ajouter la prise en charge de l'option 60

Dans la liste des options DHCP, l'option 60 n'est pas disponible dans la liste. À l'aide de PowerShell (ou de netsh), nous allons pouvoir remédier à cela.

Sur le serveur DHCP, en l'occurrence SRV-ADDS-01 dans mon exemple, ouvrez une console PowerShell en tant qu'administrateur et exécutez cette commande :

Add-DhcpServerv4OptionDefinition -ComputerName SRV-ADDS-01 -Name PXEClient -Description "PXE Support" -OptionId 060 -Type String

Après avoir actualisé la console DHCP, on peut voir que cette option est accessible :

DHCP - Ajouter option 60 avec PowerShell

Passons à la suite.

B. DHCP : déclarer les classes de fournisseurs

Pour la suite, je vous recommande d'utiliser PowerShell ISE ou Visual Studio Code pour écrire les commandes au fur et à mesure.

Commençons par définir trois variables que l'on va appeler tout au long de la procédure :

# Nom d'hôte du serveur DHCP
$DhcpServerName = "SRV-ADDS-01"
# Adresse IP du serveur WDS (PXE)
$PxeServerIp = "192.168.14.11"
# Adresse réseau de l'étendue DHCP ciblée
$Scope = "192.168.14.0"

Puis, grâce aux commandes ci-dessous, nous allons définir trois classes de fournisseurs DHCP correspondantes à des architectures différentes. Par exemple, la valeur "PXEClient:Arch:00007" correspond à du boot PXE pour l'UEFI en x64.

Exécutez les trois commandes suivantes :

Add-DhcpServerv4Class -ComputerName $DhcpServerName -Name "PXEClient - UEFI x64" -Type Vendor -Data "PXEClient:Arch:00007" -Description "PXEClient:Arch:00007"
Add-DhcpServerv4Class -ComputerName $DhcpServerName -Name "PXEClient - UEFI x86" -Type Vendor -Data "PXEClient:Arch:00006" -Description "PXEClient:Arch:00006"
Add-DhcpServerv4Class -ComputerName $DhcpServerName -Name "PXEClient - BIOS x86 et x64" -Type Vendor -Data "PXEClient:Arch:00000" -Description "PXEClient:Arch:00000"

Les modifications effectuées par ces commandes sont visibles dans :

Serveur DHCP - Classes de fournisseurs BIOS et UEFI

Passons à la suite.

C. Créer les stratégies DHCP pour le BIOS et l'UEFI

Désormais, il faut créer les stratégies DHCP. Dans l'ordre suivant (même si l'ordre n'a pas d'importance) :

  • Une première stratégie pour le mode BIOS x86 et x64.
  • Une seconde stratégie pour le mode UEFI x86
  • Une troisième stratégie pour le mode UEFI x64.

Ces stratégies vont s'appliquer sur l'étendue ciblée (variable définie précédemment) sur le serveur DHCP.

Pour créer la première stratégie :

$PolicyNameBIOS = "PXEClient - BIOS x86 et x64"
Add-DhcpServerv4Policy -Computername $DhcpServerName -ScopeId $Scope -Name $PolicyNameBIOS -Description "Options DHCP pour boot BIOS x86 et x64" -Condition Or -VendorClass EQ, "PXEClient - BIOS x86 et x64*"
Set-DhcpServerv4OptionValue -ComputerName $DhcpServerName -ScopeId $Scope -OptionId 066 -Value $PxeServerIp -PolicyName $PolicyNameBIOS
Set-DhcpServerv4OptionValue -ComputerName $DhcpServerName -ScopeId $Scope -OptionId 067 -Value boot\x64\wdsnbp.com -PolicyName $PolicyNameBIOS

Pour créer la seconde stratégie :

$PolicyNameUEFIx86 = "PXEClient - UEFI x86"
Add-DhcpServerv4Policy -Computername $DhcpServerName -ScopeId $Scope -Name $PolicyNameUEFIx86 -Description "Options DHCP pour boot UEFI x86" -Condition Or -VendorClass EQ, "PXEClient - UEFI x86*"
Set-DhcpServerv4OptionValue -ComputerName $DhcpServerName -ScopeId $Scope -OptionId 060 -Value PXEClient -PolicyName $PolicyNameUEFIx86
Set-DhcpServerv4OptionValue -ComputerName $DhcpServerName -ScopeId $Scope -OptionId 066 -Value $PxeServerIp -PolicyName $PolicyNameUEFIx86
Set-DhcpServerv4OptionValue -ComputerName $DhcpServerName -ScopeId $Scope -OptionId 067 -Value boot\x86\wdsmgfw.efi -PolicyName $PolicyNameUEFIx86

Pour créer la troisième stratégie :

$PolicyNameUEFIx64 = "PXEClient - UEFI x64"
Add-DhcpServerv4Policy -Computername $DhcpServerName -ScopeId $Scope -Name $PolicyNameUEFIx64 -Description "Options DHCP pour boot UEFI x64" -Condition Or -VendorClass EQ, "PXEClient - UEFI x64*"
Set-DhcpServerv4OptionValue -ComputerName $DhcpServerName -ScopeId $Scope -OptionId 060 -Value PXEClient -PolicyName $PolicyNameUEFIx64
Set-DhcpServerv4OptionValue -ComputerName $DhcpServerName -ScopeId $Scope -OptionId 066 -Value $PxeServerIp -PolicyName $PolicyNameUEFIx64
Set-DhcpServerv4OptionValue -ComputerName $DhcpServerName -ScopeId $Scope -OptionId 067 -Value boot\x64\wdsmgfw.efi -PolicyName $PolicyNameUEFIx64

Une nouvelle fois, cette configuration est visible dans la console DHCP. Ici, il faut accéder à la partie "Stratégies" de l'étendue DHCP ciblée. Voici le résultat :

Serveur DHCP - Stratégies DHCP boot PXE

Si l'on regarde les options de notre étendue DHCP, on peut voir qu'il y a beaucoup de valeurs. Effectivement, nous avons plusieurs fois les mêmes options, mais avec des valeurs différentes, et la bonne valeur sera appliquée en fonction de la machine qui initie la connexion.

Serveur DHCP - Options DHCP BIOS et UEFI

Le serveur DHCP est correctement configuré !

D. Tester le boot PXE en UEFI

Pour tester cette configuration, il convient de basculer la machine virtuelle en mode UEFI (avec le Secure Boot actif tant qu'à faire) et de tester un boot sur le réseau. Si le serveur DHCP est correctement configuré, la machine virtuelle doit parvenir à contacter le PXE et il suffira d'appuyer sur Entrée pour initier le boot réseau et charger l'image de démarrage.

Boot PXE en mode UEFI

V. Conclusion

Nous venons de voir comment configurer un serveur DHCP pour prendre en charge le boot PXE en mode BIOS et en mode UEFI. Dans cet exemple, le serveur PXE est représenté par un serveur WDS mais il pourrait s'agir d'une autre solution.

Si vos serveurs sont dans un réseau différent des machines à déployer (VLANs différents, par exemple), vous devez déclarer l'adresse IP du serveur DHCP et du serveur WDS dans les options de relais DHCP de votre passerelle (routeur/pare-feu).

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Florian BURNEL

Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.

Nombre de posts de cet auteur : 5573.Voir tous les posts

19 thoughts on “Serveurs WDS et DHCP – Comment faire du boot PXE BIOS et UEFI sur le même réseau ?

  • Bonjour,
    Merci pour le tutoriel, il fonctionne parfaitement.
    Est-il possible de le compléter en chainant le PXE Linux avec WDS notamment ?

    Bien cordialement.

    Répondre
  • Bonjour,
    Merci pour ce tutoriel.
    Par contre, je rencontre cette erreur sous powershell lors de la création de la première stratégie :

    PS C:\Users\Administrateur.WIN-9D1V9UUA5IU> $PolicyNameBIOS = « PXEClient – BIOS x86 et x64 »
    PS C:\Users\Administrateur.WIN-9D1V9UUA5IU> Add-DhcpServerv4Policy -Computername $DhcpServerName -ScopeId $Scope -Name $
    PolicyNameBIOS -Description « Options DHCP pour boot BIOS x86 et x64 » -Condition Or -VendorClass EQ, « PXEClient – BIOS x8
    6 et x64* »
    Add-DhcpServerv4Policy : Impossible de valider l’argument sur le paramètre «ComputerName». L’argument est Null ou
    vide. Indiquez un argument qui n’est pas Null ou vide et réessayez.
    Au caractère Ligne:1 : 38
    + Add-DhcpServerv4Policy -Computername $DhcpServerName -ScopeId $Scope …
    + ~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidData : (:) [Add-DhcpServerv4Policy], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationError,Add-DhcpServerv4Policy

    PS C:\Users\Administrateur.WIN-9D1V9UUA5IU> $PolicyNameBIOS = « PXEClient – BIOS x86 et x64 »
    PS C:\Users\Administrateur.WIN-9D1V9UUA5IU> Add-DhcpServerv4Policy -Computername $DhcpServerName -ScopeId $Scope -Name $PolicyNameBIOS -Description « Options DHCP pour boot BIOS x86 et x64″ -Condition
    Add-DhcpServerv4Policy : Impossible de valider l’argument sur le paramètre « ComputerName ». L’argument est Null ou vide. Indiquez un argument qui n’est pas Null ou vide et réessayez.
    Au caractère Ligne:1 : 38
    + Add-DhcpServerv4Policy -Computername $DhcpServerName -ScopeId $Scope …
    + ~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidData : (:) [Add-DhcpServerv4Policy], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationError,Add-DhcpServerv4Policy

    PS C:\Users\Administrateur.WIN-9D1V9UUA5IU> Set-DhcpServerv4OptionValue -ComputerName $DhcpServerName -ScopeId $Scope -OptionId 066 -Value $PxeServerIp -PolicyName $PolicyNameBIOS
    Set-DhcpServerv4OptionValue : Impossible de valider l’argument sur le paramètre « ComputerName ». L’argument est Null ou vide. Indiquez un argument qui n’est pas Null ou vide et réessayez.
    Au caractère Ligne:1 : 43
    + Set-DhcpServerv4OptionValue -ComputerName $DhcpServerName -ScopeId $S …
    + ~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidData : (:) [Set-DhcpServerv4OptionValue], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationError,Set-DhcpServerv4OptionValue

    PS C:\Users\Administrateur.WIN-9D1V9UUA5IU> Set-DhcpServerv4OptionValue -ComputerName $DhcpServerName -ScopeId $Scope -OptionId 067 -Value boot\x64\wdsnbp.com -PolicyName $PolicyNameBIOS

    Avez-vous une idée de la provenance de l’erreur ?
    Merci d’avance.

    Répondre
    • Bonjour,
      Vous avez bien attribué une valeur à la variable « $DhcpServerName » ?

      Répondre
      • Bonjour Florian,

        Eh non…..bien entendu. Ça m’apprendra à ne pas lire les tutos correctement……
        Désolé, la procédure fonctionne parfaitement.

        Merci pour votre réponse.

        Frank.

        Répondre
  • Bonjour,

    ce que je comprend pas c’est pourquoi ne pas ajouté au serveur DHCP le serveur WDS au lieu de faire 2 serveurs.

    Merci.
    CDT.

    Répondre
  • Bonjour Florian,

    Pour ma part j’ai fait mon lab sous virtualbox (réseau interne) => Le boot pxe Uefi semble ne pas fonctionner (par contre le mode bios = ok)

    Au final je ne sais pas si c’est moi qui a raté une étape ou si j’aurai du partir avec vmware player !

    Ma vm de test est « une clean install » avec les rôles Dhcp + WDS sur la même machine.

    Dans tous les cas c’est très intéressant même si je n’ai pas encore réussi.

    Merci pour la qualité des informations.

    Répondre
    • Hello SodiRepair,

      Je suis dans le même cas que toi (VmWare Workstation)

      Mon bios fonctionne normalement mais l’uefi impossible de le faire fonctionner et je ne vois pas l’origine du problème et mes recherches ne donnent rien!

      As-tu trouvé une solution?
      Merci !

      Répondre
  • Fantastique tuto.
    Un toute petite errreur dans le script PowerShell : il faut définir la variable $DhcpServerName avant la commande d’ajout de l’option 60 et utiliser cette variable dans la commande :

    Add-DhcpServerv4OptionDefinition -ComputerName $DhcpServerName -Name PXEClient -Description « PXE Support » -OptionId 060 -Type String

    Sauf si on prend aussi le nom de SRV-ADDS-01 pour son DHCP server.

    Merci

    Répondre
  • J’espère que j’apprendrai d’avantage sur votre site sur les réseaux

    Répondre
  • Bonjour, pour ce qui sont sur vmware et qui utilise un reseau en nat sa fonctionne et vous mettez quoi comme adress ip ?

    Répondre
  • Bonjour,

    Merci pour ce super tuto comme d’hab !

    J’ai cependant un soucis avec le boot UEFI , après la mise en places des stratégies etc. le PC windows 10 rentre dans le bios directement et ne détecte aucun boot PXE .

    Sauriez-vous pourquoi ?
    Merci !

    Répondre
  • Bonjour,
    Merci pour ce tuto, c’est génial de trouver un truc complet et d’être guidé pas à pas.
    Mon serveur de déploiement fonctionnait parfaitement jusqu’à maintenant, puis j’ai essayé de déployer un image sur un nouveau modèle et j’ai l’erreur suivante :
    « wdsclient an error occurred while obtaining an ip address from the dhcp server ».
    Si j’en crois les recherches que j’ai effectué sur internet il faudrait que j’ajoute des packages de pilotes à mon image de démarrage mais je dois avouer que je n’ai pas très bien compris pourquoi, et comment ?
    Merci beaucoup

    Répondre
  • Bonjour,
    j’ai un soucie lorsque je souhaite démarrer mes master en UEFI.
    Lorsqu’il démarre en Legacy aucun problème, mais dès que je chercher a booter en UEFI j’ai ce message :
     » Server IP address is xxx.xxx.xxx.xxx
    NBP filename is boot\x64\wdsmgfw.efi
    NBP filesize is 0 bytes
    PXE-E99 : unexpected network error
    Merci de m’aider svp.

    Répondre
  • Bonjour,

    Ma question est au niveau du DHCP, chez moi mon DHCP c’est du sonicwall, est-on obligé de mettre le dhcp sur windows ?

    Répondre
    • Bonjour,
      Non, ce n’est pas obligatoire d’utiliser un DHCP sur Windows, par contre, il faut configurer les mêmes options DHCP.

      Répondre
  • Bonjour florian !
    J’ai monté une infra test ressemblante à la tienne :

    – Un serveur WDS (SRV-WDS) 172.24.0.104/24 avec une image de Windows 10 Professionnal (x64).

    – Un serveur ADDS+DNS+DHCP (SRV-ADDS) 172.24.0.100/24 avec une étendue DHCP « PXE-Deployment ».

    L’étendue [172.24.0.0] PXE-Deployment contient les adresses de 172.24.0.120 à 172.24.0.140.

    J’ai activé les stratégies pour l’UEFI x64, l’UEFI x86 et le BIOS x86 et x64.
    J’ai activé les options :

    60 (PXEClient pour l’UEFI x86)
    60 (PXEClient pour l’UEFI x64)

    66 (adresse du serveur WDS : 172.24.0.104 pour le BIOS x86 et x64)
    66 (adresse du serveur WDS : 172.24.0.104 pour l’UEFI x86)
    66 (adresse du serveur WDS : 172.24.0.104 pour l’UEFI x64)

    67 (fichier d’installation : boot\x64\wdsnbp.com pour le BIOS x86 et x64)
    67 (fichier d’installation : boot\x86\wdsmgfw.efi pour l’UEFI x86)
    67 (fichier d’installation : boot\x64\wdsmgfw.efi pour l’UEFI x64)

    En lançant une VM de type Windows 10 x64 sans fichier d’image iso (en mode BIOS et même erreur en UEFI Secure Boot), j’ai cette erreur :

    PXE-E52: proxyDHCP offers were received. No DHCP offers were received.
    PXE-M0F: Exiting Intel PXE ROM.
    Operating System not found.

    J’ai l’impression que ma machine n’arrive pas à récuperer une IP sur le DHCP.

    J’utilise VMWare Workstation et mes machines virtuelles sont configurées en mode bridge.

    Aurais-tu une idée de ce qui peut bloquer ?

    Merci d’avance !!

    Répondre
  • @Antoine

    Avec les infos que tu donne, on dirait que la VM client ne voit pas le DHCP donc je me demande si tes 3 VM sont bien sur le même réseau, pour testé je te conseille de toutes les mètres en connexion « Lan Segment » tu crée un Lan Segment sur vmWare et tu y met les 3 machine et retest

    Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.