Active Directory · Troubleshooting

Domain Controller Not Advertising — Missing SRV Records

A domain controller that will not register its SRV records stops advertising itself to the rest of the domain, and clients quietly start authenticating somewhere else.

Quick idea: A domain controller is only usable if Netlogon has registered its SRV records in DNS; if that registration failed or never ran, the DC exists, replicates, and holds a full copy of the directory, but nothing can find it.
SRV Record

A DNS record that maps a service name to the host and port providing it, not just a hostname to an IP.

Netlogon

The service that registers a domain controller’s SRV and related records in DNS, on startup and roughly every hour after.

DC Locator

The client-side process that queries DNS for SRV records to find a domain controller to authenticate against.

Introduction

A branch-site domain controller gets rebuilt over a maintenance window. The promotion finishes cleanly, replication looks healthy in repadmin, and the server shows up in Active Directory Sites and Services under the right site. Two days later, users at that site are authenticating across a slow WAN link against a DC in the hub site instead, Group Policy processing is slower than it should be, and nobody can explain why the new local DC is never picked.

This is what it looks like when a domain controller stops advertising itself. It is not down, and it is not unreachable on the network. It is simply invisible to the DC Locator process, because the DNS records that say “a domain controller lives here” were never registered, or were registered once and then quietly deregistered.

What The Error Looks Like

Running dcdiag /test:dns against the affected DC produces a summary table with the record-registration column failing:

Summary of DNS test results:

                          Auth Basc Forw Del  Dyn  RReg Ext
   _______________________________________________________
   Domain: adatum.com
      BR-DC02              PASS PASS PASS PASS PASS FAIL n/a

   ......................... adatum.com failed test DNS

RReg is the record-registration subtest. When it fails, dcdiag typically prints a line naming the specific lookup that could not be satisfied, similar to:

Literal text: Warning: DcGetDcName(PDC_REQUIRED) call failed, error 1355. Is the PDC emulator really up and running?

If the Active Directory Domain Services Best Practices Analyzer has been run against the box, it surfaces the same underlying problem in plainer language:

Literal text: The "DcByGuid" DNS service (SRV) resource record that advertises this server as an available domain controller in the domain and ensures correct replication is not registered.

On the affected DC itself, the System event log usually has matching Netlogon entries from around the same time, most often event ID 5774 (a dynamic DNS update failed), 5781 (“Dynamic registration or deregistration of one or more DNS records failed because no DNS servers are available”), or 5782 (“No DNS servers configured for the local system”). Any of these three is the server-side half of the same symptom: Netlogon tried to publish records and could not.

What It Actually Means

Think of an SRV record as a company directory entry for a job title, not a person’s name. It does not say “server BR-DC02, room 4”; it says “whoever is handling LDAP for this site right now, here’s how to reach them.” A workstation looking for a domain controller doesn’t ask for a specific server by name — it asks DNS who currently holds that role, and the SRV record is the only place that answer lives.

A hostname-to-IP (A) record only answers “where is this specific server.” An SRV record answers a different question: “which servers, anywhere in this domain or this site, provide the LDAP, Kerberos, or global catalog service.” Clients, member servers, and other domain controllers use SRV records almost exclusively to find a DC to talk to — they very rarely look up a domain controller by name.

Netlogon is the service responsible for publishing those SRV records on behalf of the DC, on startup and again roughly every 24 hours, alongside on-demand refreshes. When Netlogon cannot reach a DNS server, does not have permission to update the zone, or has been explicitly told not to register a record, the DC keeps functioning internally — replication, authentication for anyone who already has its address, the directory database itself — but it drops out of DNS-based discovery entirely. Every client and every other DC that relies on the SRV lookup to find a DC in that site will simply never be offered this one.

How To Diagnose

Work from cheapest and most direct to deepest. Each step below either confirms the record is missing or tells you why registration failed.

# Query DNS directly for the DC's LDAP SRV record (the same lookup every client makes)
nslookup -type=SRV _ldap._tcp.dc._msdcs.adatum.com

# Ask DC Locator to find a DC, bypassing any cached result
nltest /dsgetdc:adatum.com /force

# Run the full DNS record-registration subtest against the specific DC
dcdiag /test:dns /v /s:BR-DC02 /DnsRecordRegistration

# Confirm Netlogon and DNS Client are both running on the DC
sc query netlogon
sc query dnscache

# Check the local copy of what Netlogon believes it registered
notepad %systemroot%\System32\Config\netlogon.dns

If the nslookup query returns no SRV answer, and dcdiag /DnsRecordRegistration reports RReg FAIL against that DC, the record genuinely is not in the zone — this is a registration failure, not a client-side caching or forwarder issue. If Netlogon is stopped, or the server has no DNS server configured at all (the classic case for a DC pointing only at itself before its own DNS service has started), that will usually be the first thing the checks above surface.

Practical note: netlogon.dns, in %systemroot%\System32\Config, is the plain-text record of everything Netlogon last attempted to register. Its first line is always the DC’s own LDAP SRV record. If that file exists but the records are not in DNS, the problem is on the DNS side (unreachable server, zone rejecting the update); if the file is stale or missing entries you’d expect, Netlogon itself never tried.

Common Causes

Cause How To Confirm Fix
Netlogon service stopped or failed to start sc query netlogon shows anything other than RUNNING; System log shows Service Control Manager errors around boot time. Start the service and let it re-register on its own: net start netlogon. If it won’t stay running, check its dependency chain (it depends on the RPC service and, indirectly, on DNS being reachable) before assuming a Netlogon-specific fault.
DC has no reachable DNS server configured on its own NIC ipconfig /all shows a DNS server that is unreachable, blank, or points only at the DC’s own IP before the local DNS Server role has actually started answering. Point the NIC at a DNS server that is actually up (a partner DC, or loopback only once the local DNS service is confirmed healthy), then force re-registration: ipconfig /flushdns && ipconfig /registerdns followed by nltest /dsregdns.
DcByGuid (or another required mnemonic) listed in DnsAvoidRegisterRecords Check the registry value at HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters\DnsAvoidRegisterRecords, and run Group Policy Results against the DC to see whether DC Locator DNS records not registered by the DCs (Computer Configuration > Administrative Templates > System > Net Logon > DC Locator DNS Records) is applying a mnemonic list to it. Remove the offending mnemonic from the registry value or the GPO scope for this DC, then restart Netlogon: net stop netlogon && net start netlogon.
DNS zone not configured to accept dynamic updates from this DC In the DNS console, zone Properties > General > Dynamic updates is set to None, or set to Secure only while the zone is not Active Directory-integrated. Set Dynamic updates to Secure only on an Active Directory-integrated zone, then re-run dcdiag /test:dns /v /s:<DCName> /DnsDynamicUpdate, which registers and automatically removes a harmless test record to prove the update path works.
Firewall or network path blocks DNS traffic between the DC and its configured DNS server Event log shows Netlogon 5781/5782; the DC’s configured DNS server does not respond to a manual query from that host. Confirm UDP/TCP 53 is open between the DC and its DNS server, then force registration again with nltest /dsregdns once connectivity is restored.
Registration ran, but at the wrong DNS server (stale primary/secondary DNS entries on the NIC) ipconfig /all shows a DNS server list that does not match the DCs actually hosting the zone; the records exist on one DNS server but not the one clients query. Correct the NIC’s DNS server list to point at DNS servers that host the Active Directory-integrated zone, then re-run ipconfig /registerdns and nltest /dsregdns.

The Fix

Start with the DC’s own network configuration, since a bad DNS server entry is behind most cases of this: run ipconfig /all and confirm every DNS server listed is reachable and actually authoritative for (or a valid recursive path to) the Active Directory-integrated zone.

Next, rule out an explicit block. Check HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters\DnsAvoidRegisterRecords on the DC, and run Group Policy Results against it to see whether the DC Locator DNS records not registered by the DCs policy is scoped to this server. If DcByGuid, Ldap, or any of the other DC Locator mnemonics show up there and shouldn’t, remove them from whichever source is setting them.

# Force full re-registration once the underlying cause is fixed
ipconfig /flushdns
ipconfig /registerdns
nltest /dsregdns

# Confirm the DC-specific SRV records are back
dcdiag /test:dns /v /s:BR-DC02 /DnsRecordRegistration
nslookup -type=SRV _ldap._tcp.dc._msdcs.adatum.com
Production note: ipconfig /registerdns only re-registers the host (A) record for the machine; it does not touch the DC-specific SRV records Netlogon owns. Use nltest /dsregdns for those, or restart the service with net stop netlogon && net start netlogon if the tool isn’t available. Restarting Netlogon briefly interrupts authentication requests being served by that specific DC, so do it in a maintenance window on a production domain controller, not the middle of the business day.

If registration still fails after the network path and the avoid-list are both clean, check the zone itself: Dynamic updates must be set to Secure only on a zone that is Active Directory-integrated (a zone with dynamic updates set to None will silently reject every attempt, and a non-AD-integrated zone can’t accept secure updates at all). Running dcdiag /test:dns /v /s:<DCName> /DnsDynamicUpdate proves this end to end: it registers a harmless test record and removes it automatically, so a pass here means the update path itself is sound.

How To Prevent It

Run dcdiag /test:dns /DnsRecordRegistration against every domain controller on a schedule, not just when something is already broken — a Group Policy or registry change to DnsAvoidRegisterRecords made for one DC can drift onto others through inherited GPOs long before anyone notices the discovery problem it causes.

Treat a DC’s own DNS client settings as part of its build checklist: it should point at a DNS server that will actually be up and answering by the time Netlogon starts, which usually means a partner DC first and the local DNS service second, not the other way around. And document any deliberate use of DC Locator DNS records not registered by the DCs — it is a legitimate way to stop a branch DC from being offered outside its site, but only if every administrator touching that GPO knows it’s intentional, because it looks identical to a registration failure from every diagnostic in this post.

Final Thoughts

A domain controller that will not advertise itself is easy to miss because everything it does internally still works — replication, the database, its own logons. The failure is entirely external: nothing outside that server can find it through DNS, so traffic routes around it as if it did not exist.

The fix is almost always one of a short list: Netlogon isn’t running, the DC can’t reach its DNS server, something told it not to register, or the zone won’t accept the update. dcdiag /test:dns /DnsRecordRegistration and a plain nslookup for the SRV record narrow it down in minutes, well before anything more invasive needs to be considered.

Key takeaway: Run nslookup -type=SRV _ldap._tcp.dc._msdcs.<your-domain> and confirm the DC in question is in the answer. If it is missing, check Netlogon’s status, the DC’s own DNS server setting, and DnsAvoidRegisterRecords, in that order, before touching the DNS zone itself.
Next in this series

A DC that never registers is one failure mode; a DC that registers correctly and then leaves stale records behind after it’s decommissioned is the mirror image — covered in Stale DNS Records After a Domain Controller Decommission.