Windows · DHCP

DHCP Server Role — Scopes, Reservations, and Failover

DHCP exists so nobody has to walk around typing IP addresses into individual machines, and almost every DHCP administration task is really one of three things: defining a scope, carving out reservations and exclusions inside it, and deciding whether a second server should share the load.

Quick idea: The DHCP Server role hands out IP addresses and network settings automatically instead of someone configuring every device by hand. A scope defines the address range for a subnet, reservations and exclusions carve out exceptions inside it, and failover lets a second server share or take over that scope without a single point of failure.
Scope

The range of IP addresses, subnet mask, and options a DHCP server is authorized to hand out for one subnet.

Reservation

A specific IP address permanently tied to one device’s MAC address – the address never changes, but DHCP still manages it.

Failover

Two DHCP servers sharing lease state so either one can keep serving a scope if the other goes down.

What Is the DHCP Server Role?

Dynamic Host Configuration Protocol (DHCP) is the mechanism that hands a device an IP address, subnet mask, default gateway, and DNS servers automatically the moment it joins a network, instead of requiring someone to type that configuration in by hand on every laptop, printer, and server. On Windows Server, DHCP is installed as the DHCP Server role.

Think of a DHCP server as the front desk of a hotel with a fixed number of rooms. A guest checking in doesn’t get to pick any room number they like – the front desk hands out a room from the available pool, keeps track of who has which room and for how long, and takes it back when the guest checks out so the next arrival can use it. A DHCP scope is that pool of rooms; a lease is how long a guest gets to keep one before it’s up for renewal.

The exchange itself follows a well-known four-step handshake, commonly abbreviated DORA: the client broadcasts Discover looking for any DHCP server, a server responds with an Offer of a specific address, the client broadcasts a Request confirming it wants that offer (because more than one server may have replied), and the server finalizes it with an Acknowledgement, at which point the client can actually use the address.

Key point: In an Active Directory domain, a Windows DHCP server has to be authorized in AD before it will lease any addresses at all. Windows automatically disables an unauthorized DHCP server’s ability to service DHCP clients on a domain network – this is a security feature, not a bug, aimed at stopping a rogue or misconfigured DHCP server from silently handing out bad configuration.

Installing and Authorizing the Role

Install the role, then authorize it in Active Directory if the server lives in a domain – unauthorized DHCP servers are automatically prevented from leasing addresses on a domain network, so this step isn’t optional in that environment:

# Install the DHCP Server role and management tools (no reboot required)
Install-WindowsFeature DHCP -IncludeManagementTools

# Authorize the server in Active Directory (domain environments only -
# skip this in a workgroup/standalone deployment)
Add-DhcpServerInDC -DnsName DHCP1.corp.example.com -IPAddress 10.0.0.3

# Confirm the authorization took effect
Get-DhcpServerInDC

In the GUI, the same authorization step is a right-click on the server node in the DHCP console (Authorize), and an unauthorized server shows a red down-arrow icon until it resolves, which can take a few seconds to refresh.

Scopes, Reservations, and Exclusions

A scope is an administrative grouping of IP addresses for one subnet: a start and end address, a subnet mask, a lease duration, and whatever DHCP options (default gateway, DNS servers, and so on) clients on that subnet should receive. Each subnet gets exactly one scope with one continuous address range – if a subnet needs multiple non-contiguous ranges, that’s handled with exclusion ranges inside the single scope, not multiple scopes.

# Create a new scope for a /24 subnet
Add-DhcpServerv4Scope -Name "Corp-LAN" -StartRange 10.10.10.100 `
  -EndRange 10.10.10.200 -SubnetMask 255.255.255.0

# Set the DNS servers option (option 6) for that scope
Set-DhcpServerv4OptionValue -ScopeId 10.10.10.0 -OptionId 6 -Value "10.10.10.10","10.10.10.11"

# Exclude a range within the scope - e.g. addresses already used by
# statically-configured servers or network gear
Add-DhcpServerv4ExclusionRange -ScopeId 10.10.10.0 -StartRange 10.10.10.100 -EndRange 10.10.10.110

Scope options apply only to clients on that specific scope; server-level options (set the same way but without a -ScopeId, or via the Server Options node in the console) apply to every scope on the server unless a scope explicitly overrides them. This is how a site-wide DNS server setting can be configured once instead of on every subnet individually.

A reservation pins one specific IP address to one device’s MAC address permanently – the device still gets its address through DHCP, and still benefits from centralized management, but it never changes. Reservations exist for exactly the kind of device that needs a predictable address but doesn’t warrant hand-configuring a static IP outside DHCP entirely: printers, IP cameras, a small application server.

# Reserve a specific address for a printer's MAC address
Add-DhcpServerv4Reservation -ScopeId 10.10.10.0 -IPAddress 10.10.10.50 `
  -ClientId "F0-DE-F1-7A-00-5E" -Description "3rd floor printer"
Practical rule: Reserve, don’t exclude, for any device that still needs to receive DHCP options (DNS servers, domain suffix, and so on) alongside its fixed address. Use an exclusion range instead only for addresses DHCP should never hand out at all – typically ones already assigned as true static IPs outside of DHCP’s management.

DHCP Failover

A single DHCP server is a single point of failure – if it’s down, no new leases and no renewals happen on that subnet. DHCP failover, available since Windows Server 2012 R2, solves this by replicating scope configuration and the active lease database between two Windows DHCP servers so either one can serve the scope. The two servers form a failover relationship, always between exactly two servers (though a single server can have separate failover relationships with different partners for different scopes), and communicate over TCP port 647.

Load balance mode

Both servers actively serve the same scope simultaneously, splitting requests by a configurable ratio (50:50 by default). Best when both servers sit at the same site.

Hot standby mode

One server is active and serves all requests; the partner only takes over if the active server stops responding. Suited to a remote-site server backed by one at a central office.

In hot standby mode, the standby server reserves a percentage of the active server’s free addresses for itself – 5% by default – so it has something to hand out to new clients the moment it has to take over, without waiting for the full scope to become available. If the active server comes back within the maximum client lead time (MCLT, one hour by default), leases the standby issued during the outage are still honored safely because neither server will reuse an address the other might still consider live within that window.

# Create a load-balance (active-active) failover relationship for two scopes
Add-DhcpServerv4Failover -ComputerName "dhcp1.corp.example.com" -Name "HQ-Failover" `
  -PartnerServer "dhcp2.corp.example.com" -ScopeId 10.10.10.0,10.10.20.0 `
  -LoadBalancePercent 50 -SharedSecret "change-this-secret"

# Create a hot-standby (active-passive) relationship instead - dhcp1 stays
# active, dhcp2 only takes over if dhcp1 stops responding
Add-DhcpServerv4Failover -ComputerName "dhcp1.corp.example.com" -Name "Branch-Failover" `
  -PartnerServer "dhcp2.corp.example.com" -ScopeId 10.10.30.0 -ServerRole Standby

# After changing a failover-enabled scope's settings, replicate the change
# to the partner explicitly - it does not happen automatically
Invoke-DhcpServerv4FailoverReplication -ComputerName "dhcp1.corp.example.com" -Name "HQ-Failover"
Production note: DHCP failover requires both partner servers to be running at least Windows Server 2016, and their clocks kept in sync – the failover setup wizard halts with an error if the two servers’ clocks differ by more than one minute. Confirm NTP is healthy on both before configuring failover, not after it fails to come up.

DHCP failover is DHCPv4-only; DHCPv6 and multicast scopes cannot be failover-enabled. Configuration changes to a failover-enabled scope always need an explicit replication step afterward, and that replication should always be initiated from the server holding the settings you actually want kept – replication overwrites the partner’s configuration with the source server’s, not the other way around.

Gotchas and Best Practices

An unauthorized rogue DHCP server on a domain network is a real, recurring incident, not a theoretical one. Someone plugs in a consumer router, a misconfigured lab VM, or a forgotten test server with DHCP enabled, and it starts answering DHCPDISCOVER broadcasts alongside – or instead of – the real server. Windows’ AD authorization requirement blocks this for domain-joined Windows DHCP servers specifically, but it does nothing against a non-Windows or non-domain-joined device doing the same thing; port security and DHCP snooping on switches are the actual defense against that broader case.

Failover is not the only redundancy option, and it isn’t always the right one. Before failover existed, the standard pattern was the 80/20 split-scope: two independent DHCP servers each hosting the same scope’s address range, one configured with roughly 80% of the addresses and exclusions covering the other’s 20%, so each server had spare capacity to cover for the other. Failover replaced this for most new deployments because it shares live lease state instead of just splitting the address pool blind, but the 80/20 pattern still shows up in older environments and is worth recognizing rather than assuming failover everywhere.

Key rule: Never manually create the same scope independently on two non-failover-partnered DHCP servers covering the same subnet without exclusions splitting the range between them – both servers will happily hand out the same address to two different clients, and nothing will warn you until an IP conflict shows up.

Troubleshooting Cheat Sheet

Symptom Likely Cause Fix
DHCP server installed but no clients receive leases Server isn’t authorized in Active Directory yet – Windows automatically disables an unauthorized server’s ability to lease addresses on a domain network. Run Add-DhcpServerInDC (or authorize via the console) and confirm with Get-DhcpServerInDC.
Clients on a remote subnet never get an address DHCPDISCOVER is a broadcast and routers don’t forward it – no relay agent or IP helper is configured between the client subnet and the DHCP server. Configure an ip helper-address pointing at the DHCP server on the client’s default gateway, or deploy a DHCP Relay Agent.
Two clients end up with the same IP address The same scope was created independently on two servers with overlapping ranges and no failover relationship or exclusions splitting them. Configure DHCP failover between the two servers, or apply exclusion ranges so each server’s usable pool never overlaps the other’s.
Reservation added but the device keeps getting a different address The device’s current active lease predates the reservation, or the ClientId used doesn’t exactly match its MAC address. Release and renew the lease on the client (ipconfig /release then /renew), and confirm the reservation’s client ID matches the NIC’s actual MAC.
Failover setup wizard fails immediately with a time-related error The two partner servers’ clocks differ by more than one minute – DHCP failover requires synchronized time to function. Fix NTP/time sync between the two servers first, then re-run failover configuration.
Changed a scope option but the partner server didn’t pick it up Failover-enabled scope changes are not replicated automatically – each change needs an explicit replication trigger. Run Invoke-DhcpServerv4FailoverReplication from the server holding the change you want kept.
DHCP failover partners show as unreachable TCP port 647 is blocked between the two servers – firewall rules for DHCP failover weren’t created or were removed. Confirm the Microsoft-Windows-DHCP-Failover-TCP-In/Out firewall rules exist and allow traffic between the two DHCP servers.

Final Thoughts

DHCP is one of those roles that’s genuinely simple at its core – hand out addresses from a defined pool – and almost all of its administrative surface area is really about handling exceptions to that pool cleanly: a device that needs a fixed address without full static configuration, an address range that’s already spoken for, or a second server ready to take over.

Get scope planning right up front – one continuous range per subnet, exclusions for anything statically configured, reservations for anything that needs predictability – and failover or split-scope redundancy becomes a straightforward addition rather than a retrofit.

Key takeaway: Authorize the server in Active Directory before troubleshooting why clients aren’t getting leases – it’s the single most common reason a freshly installed DHCP server does nothing. After that, treat reservations and exclusions as the answer to “this address needs to be predictable” versus “DHCP should never touch this address” respectively.
Next in this series

DHCP and DNS are joined at the hip in most Windows environments – a natural next stop is how DHCP-driven dynamic DNS updates interact with scavenging and aging to keep DNS records accurate as leases come and go.