Introduction
When a DHCP scope runs out of available IP addresses, new devices cannot join the network and existing devices may lose connectivity when their lease expires. This is common in environments with high device turnover (conference rooms, guest networks, BYOD) where the default 8-day lease duration holds addresses long after devices have left. The DHCP event log shows Event ID 1020: Scope X.X.X.X is 100 percent full.
Symptoms
- New devices receive APIPA address (169.254.x.x) instead of DHCP address
ipconfigshowsDHCP Enabled: YesbutAutoconfiguration IP: 169.254.x.x- DHCP console shows
In Usecount equal toScope Size - Event ID 1020:
Scope is 100% full and 100% active - Users report
No internet accessdespite working network infrastructure
Common Causes
- Lease duration too long for the environment (8-day default)
- Scope size too small for the number of connecting devices
- Expired leases not being reclaimed due to DHCP service issue
- Rogue devices consuming addresses (IoT, unauthorized devices)
- Reservations consuming addresses that could otherwise be dynamic
Step-by-Step Fix
- 1.Check current scope utilization:
- 2.```powershell
- 3.Get-DhcpServerv4Scope -ScopeId 192.168.1.0 | Get-DhcpServerv4Lease |
- 4.Group-Object AddressState | Select-Object Name, Count
- 5.
` - 6.Delete expired leases to free up addresses:
- 7.```powershell
- 8.# Clean up expired and inactive leases
- 9.$leases = Get-DhcpServerv4Lease -ScopeId 192.168.1.0 |
- 10.Where-Object {$_.AddressState -eq "Expired" -or $_.AddressState -eq "Inactive"}
- 11.foreach ($lease in $leases) {
- 12.Remove-DhcpServerv4Lease -ScopeId 192.168.1.0 -IPAddress $lease.IPAddress
- 13.}
- 14.
` - 15.Reduce lease duration to reclaim addresses faster:
- 16.```powershell
- 17.Set-DhcpServerv4Scope -ScopeId 192.168.1.0 -LeaseDuration 1.00:00:00
- 18.# Changes from 8 days to 1 day
- 19.# For high-turnover environments (guest WiFi), consider 4 hours:
- 20.# Set-DhcpServerv4Scope -ScopeId 192.168.1.0 -LeaseDuration 0.04:00:00
- 21.
` - 22.Expand the scope if the subnet supports more addresses:
- 23.```powershell
- 24.# If currently /24 (254 addresses), expand to /23 (510 addresses)
- 25.Set-DhcpServerv4Scope -ScopeId 192.168.1.0 -EndRange 192.168.2.254
- 26.# Ensure the subnet mask is also updated on the network
- 27.
` - 28.Add an additional scope for overflow:
- 29.```powershell
- 30.Add-DhcpServerv4Scope -Name "Overflow" -StartRange 192.168.100.1 -EndRange 192.168.100.254 -SubnetMask 255.255.255.0
- 31.
` - 32.Monitor scope utilization going forward:
- 33.```powershell
- 34.# Get utilization percentage
- 35.$scope = Get-DhcpServerv4Scope -ScopeId 192.168.1.0
- 36.$leases = Get-DhcpServerv4Lease -ScopeId 192.168.1.0 | Where-Object {$_.AddressState -eq "Active"}
- 37.$utilization = ($leases.Count / ($scope.EndRange[3] - $scope.StartRange[3] + 1)) * 100
- 38.Write-Host "DHCP Scope Utilization: $utilization%"
- 39.
`
Prevention
- Set lease duration to match device turnover patterns (4 hours for guest, 1 day for corporate)
- Monitor DHCP scope utilization with alerts at 70% and 90% thresholds
- Plan scope sizes with 30-50% headroom for growth
- Use reservations sparingly - each reservation permanently consumes an address
- Implement NAP (Network Access Policy) to limit unauthorized device connections