Build a Windows Server 2022 Lab

Set up a Domain Controller, DHCP, and WDS to PXE boot a client VM.

Introduction

30 Second Summary

Think about how IT departments set up hundreds of computers in an office. They don't walk around with USB drives installing Windows one machine at a time. They use network-based deployment to push operating systems to new machines automatically.

In this project, you will build a complete Windows Server 2022 infrastructure lab running in VirtualBox. Your single server will act as a Domain Controller, DHCP server, and deployment server. You'll prove it all works by PXE booting a blank virtual machine into Windows Setup over the network.

What You'll Build

You can power on a blank virtual machine with no operating system, and it automatically receives an IP address, boots from the network, and launches Windows Setup without any local media attached.

By the end of this project, you'll have:

  • A Domain Controller managing identity and DNS for your lab domain, so every machine on the network authenticates through one central authority.
  • A DHCP server that automatically assigns IP addresses to any machine joining your network, eliminating manual configuration.
  • A WDS server that delivers Windows Setup to clients over the network via PXE boot. A test client VM proves it works by booting from the network and beginning Windows installation with no local media.
  • Secret Mission: Prestage a computer account in Active Directory and restrict WDS to serve only known devices.

Are there any prerequisites?

You need two things before starting: Oracle VirtualBox installed on your host machine, and a Windows Server 2022 Evaluation ISO downloaded from Microsoft. The evaluation ISO is free and gives you 180 days of use.

Before We Start

Before We Start...

Before we dive into creating VMs and installing server roles, let's lock in what you're about to build and why each piece depends on the others.

Create the VM, Install Windows Server, and Configure Networking

Before you can install any server roles, you need an isolated virtual server with a stable identity. Without a static IP and a meaningful hostname, Active Directory promotion will fail and network services will be unreliable.

In this step, you will create a virtual machine in VirtualBox, install Windows Server 2022, and give it the fixed network identity that every future role depends on.

In this step, get ready to:
  • Create a VirtualBox VM named DC01 with the correct hardware and network settings.
  • Install Windows Server 2022 Standard (Desktop Experience) and log in as Administrator.
  • Assign a static IP, configure DNS, and rename the server to DC01.
Create a new VM in VirtualBox

Your server needs its own isolated machine to run on. You will create a VM with enough resources for Windows Server and connect it to a private virtual network.

  • Press Cmd+Space (macOS) or the Windows key (Windows) to open your search bar.
  • Type VirtualBox and press Enter to open it.
  • In the VirtualBox Manager window, click New in the toolbar to start the Create Virtual Machine wizard.
  • On the Name and Operating System page, enter DC01 in the Name field.
  • In the ISO Image field, browse to and select your Windows Server 2022 ISO file.
  • VirtualBox may auto-detect the OS type. If it does not, set Type to Microsoft Windows and Version to Windows 2022 (64-bit).
  • Check the Skip Unattended Installation checkbox so you can walk through the installer manually.
  • Click Next to proceed to the Hardware page.
  • Set Base Memory to 4096 MB.
  • Set Processors to 2.
  • Click Next to proceed to the Virtual Hard Disk page.
  • Set the disk size to 50 GB. Leave the default option to create a dynamically allocated virtual hard disk.
  • Click Next to reach the Summary page, then click Finish to create the VM.

Your DC01 VM now appears in the VirtualBox machine list. Before starting it, you need to change the network adapter from the default NAT mode to an Internal Network.

  • Select DC01 in the machine list and click Settings in the toolbar.
  • Select the Network category in the left panel.
  • On the Adapter 1 tab, change the Attached to dropdown from NAT to Internal Network.
  • In the Name field that appears, type LabNetwork.
  • Click OK to save the settings.

Why Internal Network instead of NAT?

An Internal Network creates a completely isolated virtual switch that only connects VMs on the same host. No traffic reaches your physical network or the internet.

This isolation is critical for running your own DHCP server. If the VM used NAT or Bridged mode, your lab DHCP could conflict with your real network's DHCP and cause connectivity problems for other devices.

  • With DC01 still selected, click Start in the toolbar to power on the VM.

The VM boots from the Windows Server 2022 ISO you attached during creation.

Install Windows Server 2022

The Windows Setup wizard walks you through selecting the OS edition and installing it onto the virtual disk.

  • On the first screen, confirm your language, time, and keyboard preferences, then click Next.
  • Click Install now.
  • When asked to select the operating system, choose Windows Server 2022 Standard (Desktop Experience) and click Next.
  • Accept the license terms and click Next.
  • Select Custom: Install Windows only (advanced).
  • Select the 50 GB virtual drive (the only option listed) and click Next.
  • Wait for the installation to complete. The VM will reboot automatically during this process.

Why Desktop Experience?

Desktop Experience gives you a full graphical interface with Server Manager, consoles, and familiar Windows navigation. The alternative (Server Core) is command-line only. For a learning lab, the GUI makes it much easier to verify your configuration visually.

  • After the reboot, Windows prompts you to set an Administrator password. Enter a strong password you will remember and click Finish.
  • Press Ctrl+Alt+Delete to unlock the login screen. In VirtualBox, use the menu Input then Keyboard then Insert Ctrl+Alt+Del if the keyboard shortcut does not pass through.
  • Log in with the Administrator password you just set.

You are now logged in to Windows Server 2022. Server Manager opens automatically after login.

  • Right-click the Start button (bottom-left corner) and select Windows PowerShell (Admin).

VM screen is tiny or hard to read?

VirtualBox VMs start with a low display resolution. You can install VirtualBox Guest Additions later to get a resizable window. For now, use the VirtualBox View menu and select Scaled Mode to make the window easier to work with.

If you need help, ask: Why is my VirtualBox VM display so small and how do I fix it?

Set a static IP and rename the server

Active Directory needs a predictable IP address and hostname. If either changes, domain-joined machines lose contact with the Domain Controller.

  • Assign a static IP address to the server by running this command in PowerShell:
New-NetIPAddress -InterfaceAlias "Ethernet" -IPAddress 192.168.1.1 -PrefixLength 24
  • Set the DNS server to point to itself (this server will become the DNS server after AD DS promotion) by running:
Set-DnsClientServerAddress -InterfaceAlias "Ethernet" -ServerAddresses 127.0.0.1

What do these commands do?

  • New-NetIPAddress assigns a static IPv4 address of 192.168.1.1 with a /24 subnet (255.255.255.0) to the Ethernet adapter.
  • Set-DnsClientServerAddress configures the server to use itself (127.0.0.1) for DNS lookups. After you promote to a Domain Controller in the next step, DNS will be installed automatically and this server will resolve its own domain.

Confirm the IP configuration took effect before renaming the server.

  • Verify your network settings by running:
ipconfig /all

You should see IPv4 Address showing 192.168.1.1, Subnet Mask showing 255.255.255.0, and DNS Servers showing 127.0.0.1.

Seeing an error about InterfaceAlias?

The network adapter is named Ethernet by default in Windows Server 2022 on VirtualBox. If your adapter has a different name, run Get-NetAdapter to find the correct name and replace "Ethernet" in the commands above with the name shown in the output.

If you need help, ask: My New-NetIPAddress command failed with an InterfaceAlias error. How do I find the correct adapter name?

  • Rename the computer and restart by running:
Rename-Computer -NewName DC01 -Restart

What does this command do?

Rename-Computer changes the server's hostname from the random name Windows assigned during installation to DC01. The -Restart flag reboots immediately so the new name takes effect. A consistent hostname is required before promoting to a Domain Controller.

The server reboots. Wait for it to come back to the login screen.

  • Log back in as Administrator with the password you set during installation.
  • Right-click the Start button and select Windows PowerShell (Admin).

Before you run the next command, what hostname do you expect to see?

  • Confirm the hostname by running:
hostname

The output shows DC01. Your server now has a stable identity: IP address 192.168.1.1, DNS pointing to itself, and hostname DC01.

Hostname still shows the old random name?

The rename only takes effect after a full reboot. If you see the old name, the restart may not have completed. Shut down the VM and start it again from VirtualBox Manager.

If you need help, ask: I renamed my Windows Server to DC01 but hostname still shows the old name after reboot. What went wrong?

Your virtual server has a fixed identity and an isolated network. Next up, you will install Active Directory Domain Services and promote DC01 to a Domain Controller.

Install AD DS and Promote to Domain Controller

Your server is up and running with a static IP and hostname. Right now, though, it is just a standalone machine with no ability to manage users, enforce policies, or issue the domain memberships that other services rely on.

Promoting DC01 to a Domain Controller creates the Active Directory foundation that every other role in this lab depends on. DHCP authorization requires domain membership, and WDS needs AD to manage computer accounts. This step builds that foundation.

In this step, get ready to:
  • Install the Active Directory Domain Services role.
  • Promote DC01 to a Domain Controller for a new forest called lab.local.
  • Verify that the domain and DNS are working.
Install the AD DS role

Active Directory Domain Services (AD DS) is the role that turns a plain Windows Server into an identity and policy engine. Installing it adds the binaries and management tools without changing the server's behaviour yet.

  • In your Administrator PowerShell window, install the AD DS role by running this command:
Install-WindowsFeature -Name AD-Domain-Services -IncludeManagementTools

What does this command do?

Install-WindowsFeature adds a server role to Windows Server. The -IncludeManagementTools flag bundles in the GUI tools like Active Directory Users and Computers, which you will use later.

Installing the role does NOT promote the server yet. It only stages the software so that the promotion wizard can run.

After a minute or two, you should see output showing Success with True next to the AD-Domain-Services feature and its sub-features.

Seeing 'Restart Needed' instead of Success?

If the output says a restart is needed, restart the server with Restart-Computer, log back in, and re-run the install command. This can happen if a prior Windows Update is pending.

Why did my AD DS role install fail?

Promote DC01 to a Domain Controller

With the role installed, you now run the promotion wizard to actually create the domain. This wizard creates a brand new Active Directory forest, installs the DNS Server role, and reboots the machine as a Domain Controller.

  • In Server Manager, click the yellow notification flag (triangle with exclamation mark) in the top menu bar.
  • Click Promote this server to a domain controller.

The Active Directory Domain Services Configuration Wizard opens. Walk through the pages with these settings:

  • On the Deployment Configuration page, select Add a new forest.
  • In the Root domain name field, type lab.local.
  • Click Next.
  • On the Domain Controller Options page, leave the Forest functional level and Domain functional level at Windows Server 2016.
  • Confirm that Domain Name System (DNS) server is checked.
  • Set a DSRM password. Type a strong password and record it somewhere safe.
  • Click Next.

What is a DSRM password?

DSRM stands for Directory Services Restore Mode. It is an offline recovery mode you would use if Active Directory became corrupted. The password you set here is the only way to access DSRM, so keep it safe.

Why is the functional level Windows Server 2016?

Windows Server 2016 is the most recent functional level. Microsoft did not introduce a new functional level for Windows Server 2019 or 2022. So leaving it at Windows Server 2016 is the correct, current setting.

  • On the DNS Options page, ignore the delegation warning and click Next.
  • On the Additional Options page, confirm the NetBIOS name shows as LAB. Click Next.
  • Accept the default paths on the Paths page and click Next.
  • On the Review Options page, review your settings and click Next.
  • On the Prerequisites Check page, wait for the check to complete. You may see a few warnings. Click Install.

The promotion process runs for several minutes. When it finishes, the server reboots automatically. This is expected.

Server not rebooting or install failing?

If the prerequisites check shows a red error, make sure your static IP is set (run ipconfig to confirm 192.168.1.1) and that your DNS points to 127.0.0.1. The promotion requires DNS to be reachable.

Why is my AD DS promotion failing?

Verify the domain is working

After the reboot, the login screen looks different. It now shows the domain name before the username.

  • Log in as LAB\Administrator using the same password you set during Windows installation.
  • Open PowerShell as Administrator.

Before you run the next command, what do you think Get-ADDomain will show? Think about what domain name and which server should appear as the infrastructure master.

  • Confirm the domain exists by running:
Get-ADDomain

The output shows DomainName as lab.local and InfrastructureMaster pointing to DC01. Your server is now the Domain Controller.

  • Verify that DNS is resolving correctly by running:
nslookup lab.local

The output shows the server address as 192.168.1.1 and the name resolving to lab.local. DNS is working and integrated with your new domain.

Get-ADDomain returning an error?

If you see an error about the command not being recognized, make sure you logged in as LAB\Administrator (not the local Administrator). The AD PowerShell module loads automatically for domain accounts after promotion.

If nslookup fails, confirm your DNS is still pointed at 127.0.0.1 by running ipconfig /all and checking the DNS Servers line.

Why can't I run Get-ADDomain after promoting my server?

Your server is now the identity backbone of the lab. Every machine that joins this network will authenticate through DC01. Next up, you will install DHCP so that client machines can receive IP addresses automatically without any manual configuration.

Install and Configure DHCP

Your server is now a Domain Controller managing identity and DNS for lab.local. That means devices on your network can be authenticated and names can be resolved.

There is still a gap. Client machines joining your network have no way to get an IP address automatically. Without a DHCP server, every client would require manual configuration. More importantly, WDS cannot function because PXE boot relies on DHCP to assign an address before anything else can happen.

In this step, get ready to:
  • Install and authorize the DHCP Server role in Active Directory.
  • Create a DHCP scope to hand out IP addresses to lab clients.
  • Verify the scope is active and ready to serve addresses.
Install the DHCP role and authorize in Active Directory

A DHCP server hands out IP addresses to any device that joins the network. On a domain network, the server must be authorized in Active Directory before it can start serving addresses. This prevents rogue DHCP servers from causing conflicts.

  • Install the DHCP Server role by running this command in PowerShell:
Install-WindowsFeature -Name DHCP -IncludeManagementTools

You should see a table with Success showing True and the Feature Result listing DHCP Server.

Seeing 'access denied' or a failure?

Make sure you are running PowerShell as Administrator. Right-click the PowerShell icon in the taskbar and select Run as Administrator.

help me fix Install-WindowsFeature failing on my Windows Server 2022 VM

  • Authorize the DHCP server in Active Directory by running:
Add-DhcpServerInDC -DnsName DC01.lab.local -IPAddress 192.168.1.1

Why does DHCP need authorization?

In a domain environment, only authorized DHCP servers can hand out IP addresses. If someone plugged in an unauthorized DHCP server, it could hand out wrong addresses and break the whole network. Authorization in AD prevents that.

  • Confirm the authorization succeeded by running:
Get-DhcpServerInDC

You should see a table listing DC01.lab.local with IP address 192.168.1.1.

Not seeing DC01.lab.local in the output?

Verify that you typed the DNS name exactly as DC01.lab.local in the authorize command. The name must match what DNS resolves.

Run nslookup DC01.lab.local to confirm DNS can find your server. If it cannot resolve, check that the DNS Server service is running.

help me troubleshoot DHCP authorization in Active Directory

Create a scope and configure options

A DHCP scope defines the pool of IP addresses available for clients. Along with the address range, you configure scope options that tell clients which gateway and DNS server to use.

  • Create the scope for your lab network by running:
Add-DhcpServerv4Scope -Name "LabNetwork" -StartRange 192.168.1.100 -EndRange 192.168.1.200 -SubnetMask 255.255.255.0 -State Active

What does this command configure?

  • The scope name LabNetwork identifies this pool in the DHCP console.
  • The range 192.168.1.100 to 192.168.1.200 gives you 101 available addresses for client VMs.
  • Setting -State Active means the scope starts handing out addresses immediately.
  • Configure the scope options (default gateway and DNS) by running:
Set-DhcpServerv4OptionValue -ScopeId 192.168.1.0 -Router 192.168.1.1 -DnsServer 192.168.1.1 -DnsDomain "lab.local"

What do these options do?

  • -Router 192.168.1.1 tells clients to use your server as their default gateway.
  • -DnsServer 192.168.1.1 tells clients where to resolve domain names.
  • -DnsDomain "lab.local" sets the DNS suffix so clients automatically search lab.local for short names.
Verify the DHCP scope is active

Before you open the DHCP console, predict what you expect to see. Will the LabNetwork scope show as active or inactive?

  • In Server Manager, click Tools in the top menu bar.
  • Click DHCP to open the DHCP console.
  • In the left panel, expand your server name (dc01.lab.local).
  • Expand IPv4.
  • Confirm that the LabNetwork scope appears with a green checkmark icon indicating it is active.

The green checkmark confirms your DHCP server is authorized, the scope is active, and it is ready to hand out IP addresses to any client that joins your LabNetwork.

Scope showing a red icon or not appearing?

If the scope shows a red down-arrow, it is deactivated. Right-click the scope name and select Activate.

If the server node shows a red icon, the DHCP server may not be authorized. Re-run Add-DhcpServerInDC -DnsName DC01.lab.local -IPAddress 192.168.1.1 and refresh the console (right-click the server, select Refresh).

help me fix my DHCP scope not showing as active in the console

Your DHCP server is live and ready to hand out addresses. Next up, you will install Windows Deployment Services and load it with images so your server can deploy entire operating systems over the network.

Install WDS and Add Deployment Images

Your server can now manage identities through Active Directory and hand out IP addresses through DHCP. However, it cannot deploy an operating system over the network.

Windows Deployment Services (WDS) adds PXE boot capability so that a blank client machine can start Windows Setup without needing a USB drive or DVD. In this step, you will install WDS, initialize its image store, and load the boot and install images from your Windows Server 2022 ISO.

In this step, get ready to:
  • Install the WDS role and initialize the remote install folder.
  • Add a boot image (Windows PE) so clients can PXE boot.
  • Add an install image so clients can begin Windows Setup over the network.
Install the WDS role and initialize the server

WDS requires the role to be installed, then a one-time initialization that creates the folder structure where images are stored. After that, you configure the answer policy so the server responds to PXE boot requests.

  • Install the WDS role by running this command in PowerShell:
Install-WindowsFeature -Name WDS -IncludeManagementTools

Wait for the output to show Success with True in the Success column. This confirms the WDS role and its management tools are installed.

  • Initialize WDS and create the remote install folder by running:
WDSUTIL /Verbose /Progress /Initialize-Server /RemInst:"C:\RemoteInstall"

What does this command do?

This creates the C:\RemoteInstall folder structure where WDS stores boot and install images. The /Verbose and /Progress flags show detailed output so you can watch the initialization complete.

You will see progress messages as WDS sets up its folder structure and shared resources. Wait for the process to finish.

  • Configure WDS to respond to all PXE boot requests by running:
WDSUTIL /Set-Server /AnswerClients:All

Why answer all clients?

The /AnswerClients:All setting tells WDS to respond to any machine that sends a PXE boot request on the network. In a production environment you would restrict this to known clients only. For this lab, answering all clients lets you test freely.

  • Confirm WDS is initialized by running:
WDSUTIL /Get-Server /Show:Config

Look for the RemoteInstall location showing C:\RemoteInstall and the answer policy showing All in the output. This confirms WDS is running and ready to accept images.

Seeing an error during initialization?

WDS requires the server to be a domain member with DNS working. If initialization fails, verify you are logged in as LAB\Administrator and that nslookup lab.local still resolves to 192.168.1.1.

Help me troubleshoot WDS initialization errors on my domain controller.

Mount the ISO and add the boot image

WDS needs image files from the Windows Server 2022 installation media. The boot.wim file contains Windows PE, the lightweight environment that clients boot into over the network before Windows Setup begins.

  • In the VirtualBox menu bar at the top of your DC01 VM window, click **Devices**.
  • Click **Optical Drives**, then select your Windows Server 2022 ISO file to mount it.
  • If the ISO is already mounted (it may still be attached from the original installation), you will see it listed with a checkmark.
  • Inside the VM, open **File Explorer** and note the drive letter of the DVD drive (typically D:).
  • Confirm you can see a sources folder inside the DVD drive. This folder contains boot.wim and install.wim.
  • Switch back to your PowerShell window and add the boot image by running:
WDSUTIL /Add-Image /ImageFile:"D:\sources\boot.wim" /ImageType:Boot

What is boot.wim?

boot.wim is the Windows PE (Preinstallation Environment) image. When a client PXE boots, WDS sends this file over the network. The client loads Windows PE into memory, which then connects back to WDS to download and install the full operating system.

The command outputs progress as it copies and registers the boot image. Wait until you see a confirmation that the image was added successfully.

Getting a file not found error?

Verify your DVD drive letter matches the command. Open File Explorer and check whether the ISO is mounted at D: or a different letter. If it is E:, replace D: with E: in the command.

Help me fix the file not found error when adding a WDS boot image.

Add the install image and verify in the WDS console

The install image contains the full Windows Server 2022 operating system. When a client finishes PXE booting with Windows PE, it contacts WDS to download this image and begin the actual installation.

  • Add the install image by running:
WDSUTIL /Add-Image /ImageFile:"D:\sources\install.wim" /ImageType:Install /ImageGroup:"ImageGroup1"

What does ImageGroup1 mean?

WDS organizes install images into groups. The /ImageGroup:"ImageGroup1" parameter tells WDS to place the image into a group called ImageGroup1. Since this is a freshly initialized server with no existing groups, WDS creates the group automatically.

The install.wim file contains multiple editions of Windows Server (Standard, Datacenter, etc.). WDS imports all editions from the file.

This command takes longer than the boot image because install.wim is significantly larger. Wait for the progress to complete and confirm it reports success.

Before you verify in the console, what do you expect to see under Boot Images and Install Images?

  • Open the WDS console by clicking **Tools** in Server Manager, then clicking **Windows Deployment Services**.
  • In the left pane, expand **Servers**, then expand **DC01.lab.local**.
  • Click **Boot Images**. You should see at least one entry (the boot.wim you just added).
  • Click **Install Images**, then expand **ImageGroup1**. You should see one or more Windows Server 2022 edition entries.

Both nodes contain image entries. Your WDS server is now fully loaded and ready to serve operating system deployments over the network.

Don't see any images listed?

Right-click the server name in the WDS console and select **Refresh**. If images still do not appear, re-run the add-image commands and check for error messages in the output.

Help me troubleshoot missing images in the WDS console.

Your deployment server is loaded and ready. Next up, you will create a client VM and PXE boot it over the network to prove that AD DS, DHCP, and WDS are all working together.

PXE Boot a Client and Deploy Windows Over the Network

Your server is loaded with every role it needs: Active Directory manages identity, DHCP hands out IP addresses, and WDS holds the boot and install images. But none of these services have been tested working together end-to-end.

In this step, you will create a blank client VM, power it on with no operating system, and attempt to boot it from the network. This is the ultimate proof that all three services cooperate.

In this step, get ready to:
  • Create a client VM configured for network boot.
  • Discover and fix the DHCP/WDS port conflict.
  • PXE boot the client into Windows Setup delivered over the network.
Create the CLIENT01 virtual machine

Your client needs to be a blank machine with no operating system installed. It will rely entirely on the network to boot.

  • Switch to your host machine's VirtualBox Manager window.
  • Click New to create a new virtual machine.
  • Set the name to CLIENT01.
  • Set the OS type to Windows 2022 (64-bit).
  • Allocate 2048 MB of RAM and 1 CPU.
  • Create a 25 GB dynamically allocated virtual hard disk.
  • Click Finish to create the VM.

Now configure the network adapter so CLIENT01 is on the same isolated network as DC01.

  • Select the CLIENT01 VM in VirtualBox Manager and click Settings.
  • Go to the Network section.
  • Set Attached to to Internal Network.
  • Set the network name to LabNetwork.
  • Go to the System section.
  • In the Boot Order list, move Network to the top using the arrow buttons.
  • Click OK to save the settings.

Why Network first in the boot order?

PXE boot only works if the VM tries the network adapter before looking for a local hard disk or CD. With Network at the top, CLIENT01 will broadcast a DHCP request as soon as it powers on, looking for a boot server on the LabNetwork segment.

  • Confirm CLIENT01 appears in the VirtualBox Manager VM list alongside DC01.
Attempt the first PXE boot

Everything looks ready. Time to see if all three services work together.

  • Select CLIENT01 in VirtualBox Manager and click Start.

Before you watch the screen, ask yourself: do you think the client will successfully reach Windows Setup on this first attempt?

Watch the CLIENT01 console window. The VM attempts PXE boot but fails. It either hangs displaying a message like PXE-E53: No boot filename received or cycles back to the BIOS without loading anything.

Why did PXE boot fail?

DHCP and WDS are both listening on UDP port 67 on DC01. When two services fight over the same port, the PXE boot response from WDS never reaches the client.

This is a real-world problem every sysadmin encounters when co-hosting DHCP and WDS on the same server. The fix is to tell WDS to stop trying to use the DHCP port.

This failure is expected and intentional. Now you will fix it.

  • Switch back to the DC01 VM window.
  • In Server Manager, click Tools, then click Windows Deployment Services.
  • In the WDS console, expand Servers and right-click your server name (DC01.lab.local).
  • Select Properties.
  • Go to the DHCP tab.
  • Check the box labeled Do not listen on DHCP port (port 67).
  • Click Apply, then click OK.

What does this setting do?

By default, WDS tries to bind to UDP port 67 to listen for PXE requests. When DHCP is already using that port on the same server, the two services conflict.

Checking this box tells WDS to use a different mechanism (DHCP option 60 and port 4011) to communicate with PXE clients. DHCP keeps port 67 and both services work side by side.

Don't see the DHCP tab?

Make sure you right-clicked the server name under Servers in the left pane, not a subfolder like Boot Images. The DHCP tab only appears in the server-level properties.

help me find the DHCP tab in WDS server properties

Boot CLIENT01 again and verify the deployment

The port conflict is resolved. Time to retry.

  • Switch back to the CLIENT01 VM window.
  • If CLIENT01 is still running, shut it down by closing the VM window and selecting Power off the machine.
  • Start CLIENT01 again by selecting it in VirtualBox Manager and clicking Start.

Before you watch the boot, predict what you expect to happen now that WDS is no longer competing with DHCP for port 67.

  • When you see the message Press F12 for network boot... in the VM console, press F12 immediately.

The client now receives an IP address from your DHCP server, contacts WDS, and begins downloading the boot image.

  • A WDS deprecation notice appears. This is expected on Windows Server 2022. Click OK or press Enter to dismiss it.

Windows Setup launches. You should see the Install Windows screen with language and keyboard options.

What just happened end-to-end?

CLIENT01 powered on, broadcast a DHCP Discover, and your DHCP scope assigned it an IP in the 192.168.1.100-200 range. The PXE firmware then contacted WDS on port 4011.

WDS sent the boot.wim file (Windows PE) to CLIENT01 over TFTP. Windows PE loaded, connected to WDS again, and presented the install wizard backed by install.wim. All three services (AD DS, DHCP, WDS) cooperated.

CLIENT01 still fails to PXE boot?

Make sure you checked Do not listen on DHCP port and clicked Apply (not just OK without Apply). The WDS service needs a moment to release the port.

Verify CLIENT01's network adapter is set to Internal Network named LabNetwork (case-sensitive). It must match DC01's network name exactly.

Confirm Network is first in the boot order under System settings. If another device is above it, the VM will not attempt PXE.

help me troubleshoot my CLIENT01 PXE boot failure

Your deployment server is fully operational. A blank machine with no operating system received an IP address, downloaded a boot image over the network, and launched Windows Setup. Next up, you will take this further in the Secret Mission by restricting which machines are allowed to PXE boot.

Secret mission

Prestage a Client and Restrict WDS to Known Devices

In a production environment, you never want an unknown device to PXE boot and receive an OS image from your server. Can you prestage CLIENT01 in Active Directory and lock WDS down so only known machines get served?

Clean Up Your Resources

Clean Up Your Resources

Decide whether to keep your resources running, pause them to come back later, or delete them entirely. This project runs entirely locally using VirtualBox VMs, so there are no ongoing cloud costs.

Resources you used:

  • DC01 VM in VirtualBox (Windows Server 2022 with AD DS, DNS, DHCP, and WDS roles). Uses approximately 15-20 GB disk space on your host.
  • CLIENT01 VM in VirtualBox (no OS installed, used for PXE boot testing). Uses approximately 2-5 GB disk space on your host.

Keep everything running

No action needed. Choose this if you're still actively building or want to continue experimenting with deployments, Group Policy, or additional server roles.

  • Your two VMs (DC01 and CLIENT01) remain in VirtualBox, ready to start at any time.
  • The VMs use approximately 20-25 GB of disk space on your host machine combined.
  • VirtualBox itself remains installed on your host (it was a prerequisite for this project).

Pause - I'll come back to this later

Shut down the VMs to free up memory while keeping all your files and configuration intact.

  • In VirtualBox Manager, right-click DC01 and select Save State. This hibernates the VM so it resumes exactly where you left off.
  • Right-click CLIENT01 and select Save State (or Power Off since it has no OS installed).
  • Your disk space usage stays the same, but no RAM or CPU is consumed while the VMs are saved.
  • To resume later, double-click either VM in VirtualBox Manager to start it again.

Delete - I don't want to use this again

Remove all project VMs and reclaim disk space on your host machine.

  • If DC01 or CLIENT01 are running, right-click each VM in VirtualBox Manager and select Close, then Power Off.
  • Right-click DC01 in VirtualBox Manager and select Remove. When prompted, choose Delete all files to remove the virtual hard disk and all associated files.
  • Right-click CLIENT01 in VirtualBox Manager and select Remove. Choose Delete all files to remove its virtual disk.
  • Confirm both VMs no longer appear in the VirtualBox Manager list. You have reclaimed approximately 20-25 GB of disk space.

Nice Work!

Nice Work!

You just built a complete Windows Server 2022 infrastructure lab from scratch. A blank virtual machine now boots from the network and launches Windows Setup, all powered by services you configured yourself.

You've learned how to:

  • Promote a VirtualBox VM to a Domain Controller running Active Directory Domain Services and DNS for the lab.local forest.
  • Configure DHCP and WDS on the same server and resolve the port 67 conflict that blocks PXE boot when both services co-host.
  • PXE boot a blank client VM over the network into Windows Setup without any local media, proving all three services work end-to-end.
  • Secret Mission: Prestaged a client computer in Active Directory and restricted WDS to serve only known devices.

Ready to quiz yourself?