Introduction

A network migration can bring the new DHCP server online while routers or switches still relay requests to the old server. Clients get the wrong lease, gateways and DNS settings remain outdated, or one subnet works while another still depends on the retired DHCP environment because helper addresses and relay configuration were not updated everywhere during the cutover.

This issue commonly occurs in enterprise environments during DHCP server consolidation, data center migrations, or when transitioning from Windows Server DHCP to a Linux-based solution like ISC-DHCP or Kea. The problem can persist for weeks or months because both old and new servers remain operational, making it difficult to detect that clients are still communicating with the wrong server.

Treat this as a lease-delivery problem instead of a generic client networking issue. Start by checking which DHCP server actually answers requests for an affected subnet, because migrations often build the new scopes and failover pairs first while relay targets on the network devices remain unchanged.

Symptoms

  • Clients still receive leases from the old DHCP server after migration
  • New network settings never appear on affected devices
  • One subnet or site works while another still uses the previous DHCP environment
  • Leases fail only after the old DHCP server is shut down
  • Clients receive the wrong gateway, DNS server, or PXE-related options after cutover
  • The issue started after moving DHCP services, scopes, relay agents, or core network hardware
  • DHCP lease logs show the old server IP address instead of the new one
  • ipconfig /all on Windows clients shows DHCP server IP pointing to the decommissioned server
  • Network traces (Wireshark/tcpdump) show DHCPACK responses coming from unexpected IP addresses
  • New VLANs work correctly but existing subnets continue using old DHCP

Common Causes

  • Router or switch helper addresses still point to the old DHCP server
  • DHCP relay configuration was updated on one VLAN or interface but not another
  • Scope activation, failover, or superscope ownership still leaves the old server authoritative
  • Relay agents or firewall rules still send DHCP traffic to the previous environment
  • Golden configs or network automation keep restoring the old helper target
  • Validation confirmed the new DHCP server had scopes but did not verify which server actually answered live requests
  • Network device configuration management tools reverted changes after initial update
  • Documentation was incomplete, missing some network segments that required helper address updates
  • DNS aliases or CNAME records still point to the old DHCP server hostname
  • Firewall rules allow DHCP traffic to both servers, creating split-brain behavior

Step-by-Step Fix

Step 1: Identify the Active DHCP Server

Capture one DHCP exchange from an affected subnet and record which server responds and which relay path forwarded the request. Use a packet capture tool on a client or configure a SPAN/mirror port:

On a Windows client: ```cmd # Start packet capture before releasing IP # Then run: ipconfig /release ipconfig /renew

# Check which server provided the lease ipconfig /all | findstr "DHCP" ```

On a Linux client: ```bash # Release and renew to see the server sudo dhclient -r eth0 sudo dhclient -v eth0

# Check active lease cat /var/lib/dhcp/dhclient.leases ```

Using tcpdump on a network device: ``bash tcpdump -i eth0 -n port 67 or port 68 -vv

The live responder determines where clients really get configuration.

Step 2: Compare Active Path with Migration Design

Compare that active DHCP path with the intended post-migration design. One stale helper address can keep an entire VLAN tied to the retired server.

Check your network device configuration for helper addresses:

Cisco IOS/IOS-XE: ``cisco show run | include helper show ip interface | include Helper

Cisco NX-OS: ``cisco show running-config interface all | include "ip helper"

Juniper JunOS: ``shell show configuration | display set | match helper show configuration forwarding-options dhcp-relay

Arista EOS: ``shell show running-config | include helper

Step 3: Review All Relay Configuration

Review helper addresses, relay agents, interface config, failover settings, and scope activation state for references to the old DHCP environment. Lease delivery depends on both server and network layers.

Check for multiple helper addresses (should point only to new server): ``cisco interface Vlan100 ip helper-address 10.1.1.10 ! Old server - should be removed ip helper-address 10.2.2.20 ! New server - correct

If using DHCP relay agents (Linux example): ```bash # Check dhcrelay configuration cat /etc/default/isc-dhcp-relay # or systemctl status dhcrelay

# Check running process ps aux | grep dhcrelay ```

Step 4: Check All Affected VLANs Separately

Check every affected VLAN, SVI, or branch interface separately if only some clients are wrong. DHCP migrations commonly fix one relay path while another still points at the previous server.

Create a spreadsheet or configuration audit: `` VLAN ID Interface Helper Address Status -------- ---------- ---------------- --------- Vlan10 10.1.10.1 10.1.1.10 NEEDS FIX Vlan20 10.1.20.1 10.2.2.20 CORRECT Vlan30 10.1.30.1 10.1.1.10 NEEDS FIX

Step 5: Update Helper Addresses

Update the authoritative relay and server configuration so requests from the affected subnet reach the intended DHCP service. Moving scopes alone does not redirect network-device helpers.

Cisco example: ``cisco conf t interface Vlan100 no ip helper-address 10.1.1.10 ip helper-address 10.2.2.20 end write memory

Juniper example: ``shell configure delete forwarding-options dhcp-relay server-group OLD-DHCP set forwarding-options dhcp-relay server-group NEW-DHCP 10.2.2.20 commit

Remove the old server from helper lists on all affected interfaces: ``cisco # Use a script or automation to update all interfaces show run | include helper > helper-audit.txt # Edit and apply corrected configuration

Step 6: Test the Fix

Renew a controlled client lease and confirm it receives the expected options from the intended server. A valid IP address does not prove the right DHCP source answered.

```cmd # Windows - clear existing lease first ipconfig /release ipconfig /renew ipconfig /all

# Verify the DHCP Server field shows the new server IP ```

Step 7: Verify Old Server Receives No Requests

Verify the old DHCP server no longer receives requests from migrated segments. Partial relay drift can stay hidden while both servers remain reachable.

On Windows Server DHCP: ``powershell Get-DhcpServerAuditLog | Select-Object -First 50 # Check for recent client requests

On Linux ISC-DHCP: ``bash tail -f /var/log/syslog | grep -i dhcp # Watch for incoming requests

Check lease database for recent entries: ``bash # On old server - should show no new leases from migrated VLANs grep "lease" /var/lib/dhcp/dhcpd.leases | tail -20

Step 8: Handle Edge Cases

Review lease timers, rogue DHCP sources, and firewall policy if behavior still looks inconsistent. The target can be fixed while old leases or duplicate responders still interfere.

Check for rogue DHCP servers: ```bash # Use dhcploc tool on Windows dhcploc 10.1.10.50

# Or nmap DHCP discovery nmap --script broadcast-dhcp-discover -e eth0 ```

Clear stale ARP entries: ``cmd # Windows netsh interface ip delete arpcache arp -d *

Verification

Confirm the fix by verifying:

  1. 1.Client renewal test: Multiple clients across different VLANs successfully renew from the new DHCP server
  2. 2.Packet capture verification: No DHCP traffic reaches the old server from migrated network segments
  3. 3.Lease database check: New lease entries only appear in the new DHCP server's database
  4. 4.Configuration audit: All helper addresses point exclusively to the new server
  5. 5.Documentation update: Network diagrams and runbooks reflect the new DHCP infrastructure

Verification commands: ```bash # Check from multiple clients ipconfig /all | findstr "DHCP Server"

# Monitor new server leases tail -f /var/log/dhcpd.log

# Verify no broadcast to old server tcpdump -i eth0 host <old-dhcp-server-ip> and udp port 67 ```

Prevention

To prevent this issue in future migrations:

  1. 1.Create a complete helper address inventory before starting the migration. Document every VLAN, SVI, and routed interface with DHCP relay configured.
  2. 2.Use configuration management tools to update helper addresses consistently across the network:
  3. 3.```yaml
  4. 4.# Ansible example for Cisco helper address update
  5. 5.- name: Update DHCP helper addresses
  6. 6.cisco.ios.ios_config:
  7. 7.lines:
  8. 8.- no ip helper-address {{ old_dhcp_server }}
  9. 9.- ip helper-address {{ new_dhcp_server }}
  10. 10.parents: interface {{ item }}
  11. 11.loop: "{{ vlan_interfaces }}"
  12. 12.`
  13. 13.Test the actual relay path as part of migration validation, not just the server-side scope configuration. Use packet captures on a test client in each VLAN.
  14. 14.Implement monitoring that alerts when DHCP leases come from unexpected servers:
  15. 15.```yaml
  16. 16.# Example alert logic
  17. 17.- alert: DHCPLeaseFromOldServer
  18. 18.expr: dhcp_lease_server == "10.1.1.10" # old server
  19. 19.for: 5m
  20. 20.annotations:
  21. 21.summary: "Client received DHCP lease from old server"
  22. 22.`
  23. 23.Use a phased cutover approach: Migrate one VLAN at a time, verify complete relay path operation, then proceed to the next segment.
  24. 24.Document ownership clearly: Specify which team owns helper address configuration (typically network team) versus DHCP server configuration (typically server/AD team).
  25. 25.Schedule post-cutover validation: Run automated checks for 30 days after migration to catch any delayed configuration drift from automation or golden configs.
  26. 26.Implement change control that requires verification of both server and relay configuration before marking the migration complete.
  • [WordPress troubleshooting: Fix CloudFormation Permission Denied - C](fix-cloudformation-permission-denied)
  • [Technical troubleshooting: Fix Cloud Migration Data Transfer Incomplete Issue](cloud-migration-data-transfer-incomplete)
  • [Fix Database Migration Schema Lock Timeout in Infrastructure Migration](database-migration-schema-lock-timeout)
  • [Fix DNS Cutover Propagation Delay Issue in Infrastructure Migration](dns-cutover-propagation-delay)
  • [How to Fix Ansible Automation Controller Still Running Jobs Against the Old Execution Environment After Migration](fix-ansible-automation-controller-still-running-jobs-against-old-execution-environment-after-migration)

<script type="application/ld+json"> { "@context": "https://schema.org", "@type": "TechArticle", "headline": "How to Fix DHCP Relay Still Forwarding to the Old Server After Migration", "description": "Troubleshoot DHCP migration issues by checking relay targets, helper addresses, scope ownership, and stale network settings.", "url": "https://www.fixwikihub.com/fix-dhcp-relay-still-forwarding-to-old-server-after-migration", "publisher": { "@type": "Organization", "name": "FixWikiHub", "url": "https://www.fixwikihub.com" }, "author": { "@type": "Person", "name": "FixWikiHub Editorial Team" }, "datePublished": "2025-11-01T17:22:52.676Z", "dateModified": "2025-11-01T17:22:52.676Z" } </script>