Windows Server  ·  high  ·  Roles & shared services

Clients cannot get an address — DHCP scope exhausted or the server is not authorised

Either the pool has no free addresses, or the DHCP server has stopped serving because it cannot confirm its authorisation in Active Directory.

What you see

Clients get a 169.254.x.x address. Event 1020 for a full scope, 1044 for authorisation, 1063 for a server that stopped because it could not find a DC.

What is actually wrong

A lease duration far too long for a transient population (guest Wi-Fi with an 8-day lease is the classic), a rogue device consuming leases, or the DHCP server losing contact with AD.

Codes and articles

Event 1020Event 1063Event 1044169.254APIPADHCP scope full

Fixes (2)

Reclaim addresses and right-size the lease
Elevated PowerShell on the DHCP server30 minutesmedium riskreversible

The scope is full.

  1. Look at the utilisation across every scope.

    PowerShell
    Get-DhcpServerv4ScopeStatistics | Format-Table ScopeId, Free, InUse, PercentageInUse -AutoSize
  2. See what is actually holding the leases.

    PowerShell
    Get-DhcpServerv4Lease -ScopeId 10.0.10.0 | Group-Object AddressState | Format-Table Count, Name -AutoSizeGet-DhcpServerv4Lease -ScopeId 10.0.10.0 | Sort-Object LeaseExpiryTime | Select-Object -First 20 IPAddress, HostName, ClientId, LeaseExpiryTime
  3. Shorten the lease so transient devices release addresses quickly. Eight hours suits guest and Wi-Fi populations far better than the 8-day default.

    PowerShell
    Set-DhcpServerv4Scope -ScopeId 10.0.10.0 -LeaseDuration 08:00:00

    Shortening the lease does not free anything immediately — existing leases run to their expiry. It stops the problem recurring rather than solving today's outage.

  4. For immediate relief, extend the address range if the subnet has room.

    PowerShell
    Set-DhcpServerv4Scope -ScopeId 10.0.10.0 -StartRange 10.0.10.20 -EndRange 10.0.10.250
  5. Remove leases for devices that are long gone.

    PowerShell
    Get-DhcpServerv4Lease -ScopeId 10.0.10.0 | Where-Object { $_.AddressState -eq 'Declined' } | Remove-DhcpServerv4Lease
  6. Turn on conflict detection so a duplicate address does not silently poison the pool.

    PowerShell
    Set-DhcpServerSetting -ConflictDetectionAttempts 1
Confirm it workedFree addresses are available and clients get a lease.
PowerShell
Get-DhcpServerv4ScopeStatistics | Format-Table ScopeId, Free, PercentageInUse -AutoSize
If you need to undo itSet-DhcpServerv4Scope with the previous LeaseDuration and range.
Re-authorise the DHCP server in Active Directory
Elevated PowerShell20 minuteslow riskreversible

Event 1044 or 1063 — the service is running but deliberately not answering.

  1. List the servers Active Directory has authorised.

    PowerShell
    Get-DhcpServerInDC | Format-Table DnsName, IPAddress -AutoSize

    A Windows DHCP server in a domain refuses to lease addresses unless it finds itself in this list. It is a rogue-server protection, and it fails closed.

  2. Authorise it if it is missing.

    PowerShell
    Add-DhcpServerInDC -DnsName dhcp01.example.local -IPAddress 10.0.0.20
  3. Confirm the server can reach a DC — 1063 means it could not.

    PowerShell
    nltest /dsgetdc:example.localTest-NetConnection dc01.example.local -Port 389
  4. Restart the service.

    PowerShell
    Restart-Service DHCPServer
  5. Confirm the bindings are on the right interface — a server with a second NIC often binds to the wrong one.

    PowerShell
    Get-DhcpServerv4Binding | Format-Table InterfaceAlias, IPAddress, BindingState -AutoSize
Confirm it workedThe service stays running and clients receive leases.
PowerShell
Get-DhcpServerv4Statistics | Format-List TotalScopes, TotalAddresses, AddressesInUse, Acks
If you need to undo itRemove-DhcpServerInDC to de-authorise.

Where this stops. This write-up was written and checked by hand. It says what each step changes, how to confirm it worked and how to reverse it, and anything destructive is flagged before you reach it. If it does not match what your machine is doing, search the Support Centre for the exact code or message — and when something needs a person, get in touch.