How to Force Windows Clients to Use Domain Controller as NTP Server Instead of Local CMOS Clock


2 views

When configuring time synchronization in Active Directory environments, some Windows clients stubbornly maintain their Local CMOS Clock as the time source despite proper GPO and command configurations. This creates time drift issues that can affect Kerberos authentication and other time-sensitive operations.

First, check the current time source on problematic clients:

w32tm /query /status

Sample problematic output:

Source: Local CMOS Clock

For domain-joined machines, these steps ensure proper DC synchronization:

# Configure time service on DC
w32tm /config /manualpeerlist:"europe.pool.ntp.org,0x8 nist.expertssmi.com,0x8" /syncfromflags:manual /reliable:yes /update

# Force immediate resync
w32tm /resync /rediscover

# On clients (run as admin):
net stop w32time
w32tm /unregister
w32tm /register
net start w32time
w32tm /config /syncfromflags:domhier /update
w32tm /resync /rediscover

For particularly stubborn systems, direct registry modification may be required:

reg add HKLM\SYSTEM\CurrentControlSet\Services\W32Time\Parameters /v Type /t REG_SZ /d NTP /f
reg add HKLM\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient /v SpecialPollInterval /t REG_DWORD /d 900 /f
reg add HKLM\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient /v SpecialPollTimeRemaining /t REG_MULTI_SZ /d "europe.pool.ntp.org,0x8 nist.expertssmi.com,0x8" /f

Check event logs for W32Time errors:

Get-WinEvent -FilterHashtable @{LogName='System'; ID='29, 36, 37, 144'} | Format-List

Common fixes for specific error conditions:

# For error 0x800705B4 (timeout):
netsh int tcp set global timestamps=enabled

# For error 0x80072746 (firewall blocking):
netsh advfirewall firewall add rule name="NTP" dir=in action=allow protocol=UDP localport=123

For enterprise deployments, create a GPO with these settings:

Computer Configuration → Policies → Administrative Templates → System → Windows Time Service:
- Enable Windows NTP Client = Enabled
- Configure Windows NTP Client = Enabled
  NTP Server = yourDC.domain.com
  Type = NTP
  SpecialPollInterval = 3600 (seconds)
  CrossSiteSyncFlags = 2

After changes, verify with these commands:

w32tm /monitor /computers:yourDC.domain.com
w32tm /stripchart /computer:yourDC.domain.com /dataonly /samples:5

In Active Directory environments, time synchronization is crucial for Kerberos authentication and various domain operations. While the domain controller typically syncs with external NTP sources, some clients stubbornly maintain their Local CMOS Clock as the time source despite Group Policy and manual configuration attempts.

First, check the current time source on both DC and client machines:

w32tm /query /status

For domain controller:

w32tm /query /configuration

On your domain controller, ensure proper NTP configuration:

w32tm /config /manualpeerlist:"europe.pool.ntp.org,0x8 nist.expertssmi.com,0x8" /syncfromflags:manual /reliable:yes /update
net stop w32time && net start w32time
w32tm /resync /rediscover

For stubborn clients still using Local CMOS Clock, try this comprehensive approach:

w32tm /unregister
w32tm /register
net start w32time
w32tm /config /syncfromflags:domhier /update
net stop w32time && net start w32time
w32tm /resync /rediscover

Create a GPO with these settings:

Computer Configuration -> Administrative Templates -> System -> Windows Time Service:
- Enable "Configure Windows NTP Client"
- Set NTP server to your DC (e.g., "domaincontroller.yourdomain.com,0x8")
- Set Type to "NTP"
- SpecialPollInterval to 900 (15 minutes)

Check time source hierarchy:

w32tm /monitor /computers:domaincontroller.yourdomain.com

Force immediate sync:

w32tm /resync /computer:domaincontroller.yourdomain.com /nowait

Ensure UDP port 123 is open between clients and DCs. Test connectivity:

Test-NetConnection -ComputerName domaincontroller -Port 123

Check these registry keys on clients:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters
- Type should be "NT5DS" for domain hierarchy sync
- NtpServer should be empty (inherited from AD)