Yeah, that error's a headache. But it's not the end of the world. Let's get your DNS server talking again.
The Quick Fix: Add a Secondary IP
The error DNS_ERROR_NEED_SECONDARY_ADDRESSES (0x0000258E) means the DNS service started but can't listen on the IP you gave it. Usually because that IP isn't assigned to any network adapter, or it's the only IP and it's not bound correctly.
Here's what I do when I see this. First, open an elevated command prompt (right-click CMD, run as administrator). Then type:
ipconfig /all
Look at the IPv4 address on your active adapter. In most cases, you'll see a static IP like 192.168.1.10. The DNS server is probably configured to listen on that exact IP. But if that IP isn't actually assigned to the adapter, you get this error.
Step 1: Assign a Secondary IP
If the IP you want DNS to listen on isn't there, you need to add it. In Windows Server, you can do this via the GUI:
- Open Network Connections (Win+R, type
ncpa.cpl). - Right-click your active adapter and choose Properties.
- Select Internet Protocol Version 4 (TCP/IPv4) and hit Properties.
- Click Advanced.
- Under IP addresses, click Add.
- Enter the IP address and subnet mask. Usually the same subnet as your primary IP.
- Click Add, then OK all the way out.
But honestly, I prefer the command line because it's faster and you can script it:
netsh interface ipv4 add address "Ethernet" 192.168.1.11 255.255.255.0
Replace "Ethernet" with your adapter name (check with netsh interface show interface). This adds the secondary IP right away.
Step 2: Restart the DNS Service
After adding the IP, restart DNS so it picks up the new address:
net stop dns
net start dns
Check the event log for any new errors. If the error's gone, you're done.
Why This Works
The DNS service has a setting that tells it which IP addresses to listen on. When you install DNS or configure it, you can specify a list. If that list includes an IP that isn't actually assigned to any adapter, Windows can't bind to it, and you get 0x258E.
By adding a secondary IP, you're giving the service a valid address to bind to. It's like telling someone to call you on a phone number that's not connected—they get a busy signal. You need to connect the line.
Sometimes the fix isn't about adding a new IP, but removing an old one from the DNS settings. If you had a server IP that changed, the old IP might still be listed in the DNS interfaces. Check that too.
Less Common Variations
Variation 1: The IP Is Assigned, but DNS Won't Bind
Seen this on a client's Windows Server 2016 box a couple years back. The IP was there, static, correct. But DNS still threw 0x258E. Turned out the adapter had a stale DHCP lease hiding underneath. The fix was to release and renew the IP, then restart DNS. In command prompt:
ipconfig /release
ipconfig /renew
Then restart DNS. If you're using static IPs (which you should for a DNS server), this won't happen as often, but DHCP reservations can cause it.
Variation 2: Multiple Adapters and the Wrong One Is Bound
If your server has two NICs—say one for LAN and one for WAN—DNS might be trying to listen on an IP that's on the wrong adapter. The DNS console lets you specify which IPs to listen on. Right-click the server in DNS Manager, go to Interfaces, and check the list. If it includes a public IP that's not assigned, remove it. Then restart DNS.
Variation 3: IPv6 Addresses Missing
Sometimes the error shows up when you've disabled IPv6 on the adapter but DNS is set to listen on an IPv6 address. The quick fix is to re-enable IPv6 on the adapter, even if you don't use it. Or remove the IPv6 address from DNS interfaces. I've seen this on Windows Server 2012 R2.
Prevention
Here's the thing—errors like this don't happen if you keep your server tidy. From now on:
- Always set static IPs on DNS servers. No DHCP. Ever.
- When you change an IP address, update the DNS interfaces list immediately.
- Keep a list of which IPs are assigned to which adapters. I use a simple text file, but you can use a spreadsheet if you're fancy.
- After any network adapter changes, restart DNS and check the event log for errors within five minutes.
I had a client last month whose entire print queue died because of this exact error—their DNS server stopped resolving print server names, and no one could print. Took me twenty minutes to fix once I saw the error. Now they have a checklist for whenever they touch server IPs.
You're not going to see this error every day, but when you do, you'll know exactly what to do.