Windows Server 2016–Sync Time Server using (S)NTP

October 30, 2019

How to sync the time to a public time server using NTP

You need to use the w32tm command.

First check the current settings :

w32tm /query /status

image

What about the 0x1 parameter ?

https://support.microsoft.com/en-us/help/875424/time-synchronization-may-not-succeed-when-you-try-to-synchronize-with

  • 0x01 – Use special poll interval Special Interval
  • 0x02 – Use As Fall back Only
  • 0x04 – Send request as Symmetric Active mode
  • 0x08 – Send request as Client mode

To set a new External Time Server like pool.ntp.org use this command :

net stop w32time

w32tm /config /manualpeerlist:pool.ntp.org /syncfromflags:MANUAL

net start w32time

w32tm /resync

This is the configuration :

w32tm /query /configuration

image

These are all the command line switches :

w32tm [/? | /register | /unregister ]
   ? – this help screen.
   register – register to run as a service and add default
     configuration to the registry.
   unregister – unregister service and remove all configuration
     information from the registry.

w32tm /monitor [/domain:<domain name>]
                [/computers:<name>[,<name>[,<name>…]]]
                [/threads:<num>] [/ipprotocol:<4|6>] [/nowarn]
   domain – specifies which domain to monitor. If no domain name
     is given, or neither the domain nor computers option is
     specified, the default domain is used. This option may be
     used more than once.
   computers – monitors the given list of computers. Computer
    names are separated by commas, with no spaces. If a name is
     prefixed with a ‘*’, it is treated as an AD PDC. This option
     may be used more than once.
   threads – how many computers to analyze simultaneously. The
     default value is 3. Allowed range is 1-50.
   ipprotocol – specify the IP protocol to use. The default is
     to use whatever is available.
   nowarn – skip warning message.

w32tm /ntte <NT time epoch>
   Convert a NT system time, in (10^-7)s intervals from 0h 1-Jan 1601,
   into a readable format.

w32tm /ntpte <NTP time epoch>
   Convert an NTP time, in (2^-32)s intervals from 0h 1-Jan 1900, into
   a readable format.

w32tm /resync [/computer:<computer>] [/nowait] [/rediscover] [/soft]
   Tell a computer that it should resynchronize its clock as soon
   as possible, throwing out all accumulated error statistics.
   computer:<computer> – computer that should resync. If not
     specified, the local computer will resync.
   nowait – do not wait for the resync to occur;
     return immediately. Otherwise, wait for the resync to
     complete before returning.
   rediscover – redetect the network configuration and rediscover
     network sources, then resynchronize.
   soft – resync utilizing existing error statistics. Not useful,
     provided for compatibility.

w32tm /stripchart /computer:<target> [/period:<refresh>]
     [/dataonly] [/samples:<count>] [/packetinfo] [/ipprotocol:<4|6>]
   Display a strip chart of the offset between this computer and
   another computer.
   computer:<target> – the computer to measure the offset against.
   period:<refresh> – the time between samples, in seconds. The
     default is 2s
   dataonly – display only the data, no graphics.
   samples:<count> – collect <count> samples, then stop. If not
     specified, samples will be collected until Ctrl-C is pressed.
   packetinfo – print out NTP packet response message.
   ipprotocol – specify the IP protocol to use. The default is
     to use whatever is available.

w32tm /config [/computer:<target>] [/update]
     [/manualpeerlist:<peers>] [/syncfromflags:<source>]
     [/LocalClockDispersion:<seconds>]
     [/reliable:(YES|NO)]
     [/largephaseoffset:<milliseconds>]
   computer:<target> – adjusts the configuration of <target>. If not
     specified, the default is the local computer.
   update – notifies the time service that the configuration has
     changed, causing the changes to take effect.
   manualpeerlist:<peers> – sets the manual peer list to <peers>,
     which is a space-delimited list of DNS and/or IP addresses.
     When specifying multiple peers, this switch must be enclosed in
     quotes.
   syncfromflags:<source> – sets what sources the NTP client should
     sync from. <source> should be a comma separated list of
     these keywords (not case sensitive):
       MANUAL – sync from peers in the manual peer list
       DOMHIER – sync from an AD DC in the domain hierarchy
       NO – sync from none
       ALL – sync from both manual and domain peers
   LocalClockDispersion:<seconds> – configures the accuracy of the
     internal clock that w32time will assume when it can’t acquire
     time from its configured sources.
   reliable:(YES|NO) – set whether this machine is a reliable time source.
     This setting is only meaningful on domain controllers.
       YES – this machine is a reliable time service
       NO – this machine is not a reliable time service
   largephaseoffset:<milliseconds> – sets the time difference between
     local and network time which w32time will consider a spike.

w32tm /tz
   Display the current time zone settings.

w32tm /dumpreg [/subkey:<key>] [/computer:<target>]
   Display the values associated with a given registry key.
   The default key is HKLM\System\CurrentControlSet\Services\W32Time
     (the root key for the time service).
   subkey:<key> – displays the values associated with subkey <key>
     of the default key.
   computer:<target> – queries registry settings for computer <target>.

w32tm /query [/computer:<target>]
     {/source | /configuration | /peers | /status}
     [/verbose]
   Display a computer’s windows time service information.
   computer:<target> – query the information of <target>. If not
     specified, the default is the local computer.
   source: display the time source.
   configuration: display the configuration of run-time and where
     the setting comes from. In verbose mode, display the undefined
     or unused setting too.
   peers: display a list of peers and their status.
   status: display windows time service status.
   verbose: set the verbose mode to display more information.

w32tm /debug {/disable | {/enable /file:<name> /size:<bytes> /entries:<value>
     [/truncate]}}
   Enable or disable local computer windows time service private log.
   disable: disable the private log.
   enable: enable the private log.
     file:<name> – specify the absolute filename.
     size:<bytes> – specify the maximum size for circular logging.
     entries:<value> – contains a list of flags, specified by number and
       separated by commas, that specify the types of information that
       should be logged. Valid numbers are 0 to 300. A range of numbers
       is valid, in addition to single numbers, such as 0-100,103,106.
       Value 0-300 is for logging all information.
   truncate: truncate the file if it exists.

Now that you set the server to properly sync you can use this one as internal NTP server for other devices.

TIP :

Keep in mind to set the firewall UDP 123 rules to accepts

More info see here

Enjoy !