howto:ntp_server_activation
по материалам сайта http://windowsnotes.ru
Операционные системы семейства Windows содержат службу времени W32Time. Эта служба предназначена для синхронизации времени в пределах организации. W32Time отвечает за работу как клиентской, так и серверной части службы времени, причем один и тот же компьютер может быть одновременно и клиентом и сервером NTP (NTP — Network Time Protocol).
По умолчанию служба времени в Windows сконфигурирована следующим образом:
-
При установке операционной системы Windows запускает клиента NTP, который синхронизируется с внешним источником времени;
-
При добавлении компьютера в домен тип синхронизации меняется. Все клиентские компьютеры и рядовые сервера в домене используют для синхронизации времени контроллер домена, проверяющий их подлинность;
-
При повышении рядового сервера до контроллера домена на нем запускается NTP-сервер, который в качестве источника времени использует контроллер с ролью PDC-эмулятор;
-
PDC-эмулятор, расположенный в корневом домене леса, является основным сервером времени для всей организации. При этом сам он также синхронизируется с внешним источником времени.
Такая схема работает в большинстве случаев и не требует вмешательства. Однако структура сервиса времени в Windows может и не следовать доменной иерархии и надежным источником времени можно назначить любой компьютер.
В качестве примера приведем настройку NTP-сервера в Windows Server 2008 R2, по аналогии можно настроить NTP сервер и в Windows 7.
Запуск NTP сервера
Служба времени в Windows Server не имеет графического интерфейса и настраивается либо из командной строки, либо путем прямой правки системного реестра. Рассмотрим второй способ:
Необходимо запустить сервер NTP. Открываем ветку реестра:
HKLM\System\CurrentControlSet\services\W32Time\TimeProviders\NtpServer.
Для включения сервера NTP параметру Enabled надо установить значение 1. Затем перезапускаем службу времени командой net stop w32time && net start w32time.
После перезапуска службы NTP, сервер уже активен и может обслуживать клиентов. Убедиться в этом можно с помощью команды w32tm /query /configuration. Эта команда выводит полный список параметров службы. Если раздел NtpServer содержит строку Enabled :1 , то все в порядке, сервер времени работает.
Для того, чтобы NTP-сервер мог обслуживать клиентов, в брандмауэре необходимо открыть UDP порт 123 для входящего и исходящего трафика.
Основные настройки NTP сервера
Открываем ветку реестра:
HKLM\System\CurrentControlSet\services\W32Time\Parameters
.
Здесь в первую очередь нас интересует параметр Type, который задает тип синхронизации. Он может принимать следующие значения:
-
NoSync — NTP-сервер не синхронизируется с каким либо внешним источником времени. Используются системные часы, встроенные в микросхему CMOS самого сервера (в свою очередь эти часы могут синхронизироваться от источника NMEA по RS-232 например);
-
NTP — NTP-сервер синхронизируется с внешними серверами времени, которые указаны в параметре реестра NtpServer;
-
NT5DS — NTP-сервер производит синхронизацию согласно доменной иерархии;
-
AllSync — NTP-сервер использует для синхронизации все доступные источники.
Значение по умолчанию для компьютера, входящего в домен — NT5DS, для отдельно стоящего компьютера — NTP.
В параметре NtpServer указываются NTP-сервера, с которыми будет синхронизировать время данный сервер. По умолчанию в этом параметре прописан NTP-сервер Microsoft (time.windows.com, 0×1), при необходимости можно добавить еще несколько NTP-серверов, введя их DNS имена или IP адреса через пробел. В конце каждого имени можно добавлять флаг (напр. ,0×1) который определяет режим для синхронизации с сервером времени.
Допускаются следующие значения режима:
-
0×1 – SpecialInterval, использование временного интервала опроса;
-
0×2 – режим UseAsFallbackOnly;
-
0×4 – SymmetricActive, симметричный активный режим;
-
0×8 – Client, отправка запроса в клиентском режиме.
Еще один важный параметр AnnounceFlags находится в разделе реестра:
HKLM\System\CurrentControlSet\services\W32Time\Config
.
Он отвечает за то, как о себе заявляет NTP-сервер. Чтобы заявить рядовой сервер (не домен-контроллер) как надежный источник времени, нужен флаг 5.
Если настраиваемый сервер в свою очередь является клиентом NTP (получает время от GPS-приемника по NTP, например), можно настроить интервал между обновлениями. Этот параметр может быть актуальным и для клиентских РС. За время обновления отвечает ключ SpecialPollInterval
, находящийся в ветке реестра:
HKLM\System\CurrentControlSet\services\W32Time\TimeProviders\NtpClient
.
Он задается в секундах и по умолчанию его значение равно 604800, что составляет 1 неделю. Это очень много, поэтому стоит уменьшить значение SpecialPollInterval до разумного значения — 1 часа (3600).
После настройки необходимо обновить конфигурацию сервиса. Сделать это можно командой w32tm /config /update
.
И еще несколько команд для настройки, мониторинга и диагностики службы времени:
-
w32tm /monitor
– при помощи этой опции можно узнать, насколько системное время данного компьютера отличается от времени на контроллере домена или других компьютерах. Например:w32tm /monitor /computers:time.nist.gov
-
w32tm /resync
– при помощи этой команды можно заставить компьютер синхронизироваться с используемым им сервером времени. -
w32tm /stripchart
– показывает разницу во времени между текущим и удаленным компьютером. Команда w32tm /stripchart /computer:time.nist.gov /samples:5 /dataonly произведет 5 сравнений с указанным источником и выдаст результат в текстовом виде. -
w32tm /config
– это основная команда, используемая для настройки службы NTP. С ее помощью можно задать список используемых серверов времени, тип синхронизации и многое другое. Например, переопределить значения по умолчанию и настроить синхронизацию времени с внешним источником, можно командойw32tm /config /syncfromflags:manual /manualpeerlist:time.nist.gov /update
-
w32tm /query
— показывает текущие настройки службы. Например команда w32tm /query /source покажет текущий источник времени, а w32tm /query /configuration выведет все параметры службы. -
net stop w32time
— останавливает службу времени, если запущена. -
w32tm /unregister
— удаляет службу времени с компьютера. -
w32tm /register
– регистрирует службу времени на компьютере. При этом создается заново вся ветка параметров в реестре. -
net start w32time
— запускает службу.
Особенности, замеченные в Windows 7 — служба времени не запускается автоматически при старте Windows. Исправлено в SP1 для Windows 7.
· Последнее изменение: 2022/02/24 17:39 —
Dmitriy Sazhin
Network Time Protocol, или NTP – это протокол сетевого времени, который используется для синхронизации времени на компьютерах и других устройствах в сети. Он позволяет устройствам получать точное время от так называемых временных серверов и синхронизироваться с ними.
NTP особенно важен в компьютерных сетях и серверах, где точность времени имеет большое значение.
- Как работает NTP
- Задачи синхронизации
- Чем отличается SNTP от NTP
- Инструкция по настройке NTP-сервера Linux (Ubuntu)
- Установка NTP-сервера
- Настройка NTP-сервера в Ubuntu
- Настройка синхронизации клиентов с NTP-сервером
- Дополнительные настройки
- Настройка NTP-сервера Windows Server
Как работает NTP
Протокол NTP работает на основе иерархии временных серверов, где более высокоуровневые серверы синхронизируются с точными источниками времени (например, атомными часами). Они предоставляют эту информацию более низкоуровневым устройствам в сети. А уже эти устройства, в свою очередь, могут предоставлять свои временные данные другим.
Задачи синхронизации
Для чего применяется NTP? Протокол NTP играет ключевую роль в обеспечении согласованности времени в сети, обеспечивая точность синхронизации до наносекунд. Он позволяет устанавливать единое время для начала и завершения процессов в сети, что имеет ряд важных применений:
- Синхронизация позволяет устройствам и приложениям оперировать данными в режиме реального времени с единым временным референсом.
- Синхронизация времени необходима для правильного проведения транзакций, работы с сертификатами и подписью электронных документов. В таких ситуациях она обеспечивает точность и последовательность операций.
- Синхронизация позволяет более эффективно расследовать внутренние инциденты и контролировать нарушения безопасности в компьютерной сети.
- Благодаря синхронизации гарантируется точность информации о времени в системных логах. Она обеспечивает правильную хронологию событий для анализа и мониторинга ошибок.
- Протокол NTP позволяет сохранять сверхточные временные метки.
Чем отличается SNTP от NTP
SNTP (Simple Network Time Protocol) и NTP (Network Time Protocol) действительно имеют схожий формат сетевых пакетов, а потому представляют собой два взаимодействующих протокола для синхронизации времени в компьютерных сетях.
Но все-таки у них есть некоторые отличия:
NTP |
SNTP |
---|---|
Это более полная и точная версия протокола. Она предоставляет различные механизмы для повышения точности синхронизации времени: например, использование более сложных алгоритмов оценки времени и учета задержек в сети. |
Это упрощенная версия NTP, и ее цель – предоставить базовую функциональность синхронизации времени без использования сложных алгоритмов. В результате SNTP может быть менее точным, но при этом более простым в использовании и реализации. |
Более сложный протокол, который предоставляет множество возможностей для уточнения времени и обеспечения надежной синхронизации.
Обычно используется в средах, где критически важна точность синхронизации времени: финансовые транзакции, телекоммуникации и другие области. |
Его реализация и использование менее сложны. Он подходит для сред, где высокая точность синхронизации времени не играет большой роли. |
Инструкция по настройке NTP-сервера Linux (Ubuntu)
Установка NTP-сервера
- Обновите пакеты репозитория:
sudo apt-get update
Важно! Перед выполнением следующей команды удостоверьтесь, что вы авторизованы в системе для выполнения команд с sudo.
- Установите NTP-сервер с помощью команды:
sudo apt-get install ntp
Если вас попросят подтвердить установку, нажмите «y».
- Убедитесь, что NTP корректно установился. Для этого пропишите:
systemctl status ntp
Вывод должен содержать номер версии и информацию о времени установки:
Если установка прошла успешно, переходите к следующим шагам.
Настройка NTP-сервера в Ubuntu
- Откройте файл конфигурации NTP:
sudo nano /etc/ntp.conf
Как правило, сервер будет указывать корректное время, но мы все равно рекомендуем вам переключиться на ближайший пул серверов. Так вы сможете избежать возможных ошибок.
- Внесите необходимые изменения в файл конфигурации, указав российские сервера времени. По умолчанию у вас на экране будут отображаться такая информация:
Перед выделенными серверами поставьте символ «#», а в конце добавьте четыре российских сервера. Например:
server 0.ru.pool.ntp.org
server 1.ru.pool.ntp.org
server 2.ru.pool.ntp.org
server 3.ru.pool.ntp.org
Пример того, как должен выглядеть файл перед сохранением:
# Use servers from the NTP Pool Project. Approved by Ubuntu Technical Board
# on 2011-02-08 (LP: #104525). See http://www.pool.ntp.org/join.html for
# more information.
# server 0.ubuntu.pool.ntp.org
# server 1.ubuntu.pool.ntp.org
# server 2.ubuntu.pool.ntp.org
# server 3.ubuntu.pool.ntp.org
server 0.ru.pool.ntp.org
server 1.ru.pool.ntp.org
server 2.ru.pool.ntp.org
server 3.ru.pool.ntp.org
- Сохраните изменения, зажав Ctrl+O, затем нажмите Enter.
- Затем закройте редактор с помощью сочетания клавиш Ctrl+X.
- Перезапустите NTP-сервер:
sudo service ntp restart
- Теперь проверьте, успешно ли применились настройки. Для этого пропишите:
sudo service ntp status
В выводе вы должны увидеть надпись «Active (running)».
- Далее необходимо открыть доступ через UFW и порт 123. Введите:
sudo ufw allow from any to any port 123 proto udp
Теперь ваш NTP-сервер установлен и сконфигурирован на сервере Ubuntu. Вы можете продолжить настройку, добавляя или изменяя сервера времени в файле конфигурации по мере необходимости.
Настройка синхронизации клиентов с NTP-сервером
- Установите инструмент для проверки сетевой конфигурации NTP:
sudo apt-get install ntpdate
- Для внесения дальнейших изменений потребуется отредактировать файл «hosts»:
sudo nano /etc/hosts
- Добавьте соответствующую строку с IP-адресом вашего NTP-сервера и хостом:
<IP-адрес> ntp-server
- Сохраните изменения, нажав Ctrl+X, а затем – Y.
- Теперь необходимо проверить синхронизацию клиента с сервером. Для этого пропишите:
sudo ntpdate ntp-server
Это позволит вам убедиться в наличии синхронизации между системой сервера и клиента. Обратите внимание на вывод, который будет отображать смещение времени.
- Отключите службу timesyncd. Хотя она и синхронизирует время локальной сети, вам она не потребуется:
sudo timedatectl set-ntp off
- Затем введите:
sudo apt-get install ntp
Этой командой вы установите NTP на системе клиента.
- Откройте файл конфигурации «ntp.conf»:
sudo nano /etc/ntp.conf
- Добавьте строку, которая укажет на предпочтение сервера. Кроме того, опция iburst в ней повысит точность синхронизации:
server NTP-server-host prefer iburst
- Сохраните изменения, нажав Ctrl+X, а затем – Y.
- Перезапустите сервер, чтобы применить все изменения:
sudo service ntp restart
- Проверьте очередь синхронизации:
ntpq -ps
Эта команда позволит вам убедиться, что ваш NTP-сервер указан как источник в очереди синхронизации времени.
Дополнительные настройки
С основными настройками мы закончили. Теперь продолжим знакомиться уже с продвинутыми настройками в файле конфигурации «ntp.conf».
В данном случае мы рассмотрим использование предпочитаемого сервера и настройки безопасности с использованием директив «restrict».
Как настроить предпочитаемый сервер
Для того чтобы задать предпочитаемый сервер в конфигурационном файле NTP, нужно воспользоваться директивой «prefer». Она указывает на то, что выбранный сервер должен в первую очередь использоваться для синхронизации.
Например, вы можете использовать ее с одним из ранее заданных серверов:
server 1.ru.pool.ntp.org prefer
Кроме того, указывать можно не только отдельные серверы, но и целые пулы. Разница будет лишь в синтаксисе – вместо опции «server» нужно указать «pool».
Как указать настройки безопасности
С помощью утилиты restrict вы можете управлять доступом к NTP-серверу и обеспечивать безопасность синхронизации времени.
Рассмотрим пример таких настроек:
restrict default kod notrap nomodify nopeer noquery
Здесь:
- «default» указывает, что эти ограничения по умолчанию применяются ко всем серверам и клиентам.
- «kod» используется для отправки протокола безопасности «kiss of death». Он отправляется серверам, которые отправляют слишком много запросов.
- «notrap» запрещает принимать управляющие команды.
- «nomodify» запрещает команды, которые могут повлиять на состояние сервера.
- «nopeer» запрещает синхронизацию с хостами.
- «noquery» запрещает выполнение запросов.
Обязательно перезапустите NTP-сервер после внесения изменений в конфигурационный файл:
sudo service ntp restart
Настройка NTP-сервера Windows Server
Важно! Не забудьте на всякий случай создать резервную копию реестра перед внесением изменений.
Компания SpaceWeb не предоставляет услугу Windows Server, информация по настройке предоставляется как справочная.
- Прежде чем приступить к настройке, убедитесь, что служба W32Time уже запущена. Мы можем сделать это, изменив запись в реестре:
HKLM\System\CurrentControlSet\services\W32Time\TimeProviders\NtpServer
- Далее найдите параметр «Enabled» и установите ему значение 1:
0x00000001 (1)
- Затем в командной строке выполните следующую команду для перезапуска службы:
net stop w32time && net start w32time
- Убедитесь, что служба W32Time включена:
w32tm /query /configuration
В выводе обратите внимание на блок «NtpServer <Local>». Значение «Enabled» должно быть равно 1, как мы и указали ранее.
- Проверьте, что UDP-порт 123 открыт в файерволе для корректного обслуживания клиентов.
Вы знаете, какой порт NTP по умолчанию? 123/UDP. Именно поэтому мы проверяем, открыт ли он.
- Вновь откройте реестр и найдите:
HKLM\System\CurrentControlSet\services\W32Time\Parameters
В этой ветке нас интересует параметр «Type». Установите ему одно из следующих значений в зависимости от требуемого режима синхронизации:
- «NoSync» – синхронизация не требуется.
- «NTP» – нужна синхронизация с внешними серверами NTP, определенными в реестре.
- «NT5DS» – требуется синхронизация в соответствии с иерархией доменов.
- «AllSync» – необходима синхронизация со всеми доступными серверами.
- Вернитесь в реестр и настройте значения в ветке «NtpServer». Добавьте сервера, обратив внимание на параметр в конце:
- «0x1», SpecialInterval. Это стандартный режим, мы рекомендуем вам выбрать именно его.
- «0x2», UseAsFallbackOnly. Позволяет использовать сервер в качестве резервного.
- «0x4», SymmetricActive. Это основной режим для NTP-серверов.
- «0x8», Client. Используется, если есть проблемы с синхронизацией.
- Наконец, в ветке «W32Time\TimeProviders\NtpClient» найдите параметр «SpecialPollInterval» и установите требуемое значение (в секундах).
- После внесения изменений перезапустите службу W32Time:
net stop w32time && net start w32time
Теперь у вас должен есть настроенный NTP-сервер на Windows Server.
Заключение
В этой статье мы рассмотрели, как настроить NTP на сервере Ubuntu и Windows.
Синхронизация времени в домене Active Directory критически важна для корректного функционирования сервисов и механизмов безопасности. Если в домене не настроена четкач схема синхронизации времени, это может вызвать проблемы с аутентификацией, работой криптографических протоколов, сертификатов при взаимодействии со внутренними и внешними системами. Так, например, Kerberos аутентификация требует, чтобы время между клиентом и сервером не отличалась более чем на пять минут. В этой статье, мы рассмотрим, как должна работать синхронизация времени в домене AD, и как настроить синхронизацию контроллера домена с внешним источником точного времени (NTP).
Содержание:
- Как работает синхронизация времени в домене AD?
- Ручная настройка синхронизация времени контроллера домена PDC с внешним NTP источником
- Настройка групповой политики для синхронизации времени PDC с NTP
- Настройка синхронизации времени на клиентах домена
Как работает синхронизация времени в домене AD?
Схема синхронизации времени в домене Active Directory имеет строгую иерархию:
- Главным источником времени в домене является контроллер домена с FSMO ролью эмулятора PDC.
- С PDC синхронизируют время все остальные контроллеры домена.
- Рядовые сервера и рабочие станции синхронизируют свое время с ближайшими DC согласно топологии AD (по умолчанию компьютеры Windows синхронизируют время внешним
time.windows.com
, но после добавления в домен синхронизация выполняется согласно иерархии домена)
Источник
Для обеспечения точного времени на всех компьютерах домена, нужно настроить синхронизацию PDC с неким внешним источником точного времени по протоколу NTP.
Чтобы определить имя контроллера домена, на котором запущена FSMO роль эмулятора PDC, выполните PowerShell команду:
Get-ADDomain | Select-Object PDCEmulator
Ручная настройка синхронизация времени контроллера домена PDC с внешним NTP источником
По умолчанию PDC синхронизирует время с аппаратными часами материнской платы физического сервера, на котором он запущен. Это можно проверить, выполнив на нем команду:
w32tm /query /source
Local CMOS Clock
указывает, что в качестве источника времени используются локальные часы. При этом в логе Event Viewe на PDC будет регистрироваться событие Event ID 12 от Time-Service:
Time Provider NtpClient: This machine is configured to use the domain hierarchy to determine its time source, but it is the AD PDC emulator for the domain at the root of the forest, so there is no machine above it in the domain hierarchy to use as a time source. It is recommended that you either configure a reliable time service in the root domain, or manually configure the AD PDC to synchronize with an external time source. Otherwise, this machine will function as the authoritative time source in the domain hierarchy. If an external time source is not configured or used for this computer, you may choose to disable the NtpClient.
Если DC запущен на виртуальной машине, в настройках которой включена синхронизация времени с хостом (гипервизором), эта команда вернет:
VM IC Time Synchronization Provider
Поэтому для всех DC нужно отключить синхронизацию времени в настройках ВМ, или запретить DC получать время с хоста, создав параметр реестра:
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\w32time\TimeProviders\VMICTimeProvider /v Enabled /t REG_DWORD /d 0 /f
Перенастроим настройки Windows Time на PDC так, чтобы он использовал в качестве источника времени внешний NTP сервер. В качестве источника времени можно использовать ближайшие к вам сервера NTP из пула проекта https://www.ntppool.org
Для России это будут сервера 0.ru.pool.ntp.org, 1.ru.pool.ntp.org и 2.ru.pool.ntp.org
Проверьте с PDC эмулятора, что доступ к этим NTP серверам доступен (и порт 123/UDP не блокируется файерволами):
w32tm /stripchart /computer:0.ru.pool.ntp.org
Если вы получили ответ от NTP сервера, можно задать эти внешние сервера в качестве источников времени для Primary DC. Выполните команды:
net stop w32time
w32tm /config /syncfromflags:manual /manualpeerlist:"0.ru.pool.ntp.org,0x8 1.ru.pool.ntp.org,0x8 3.ru.pool.ntp.org,0x8 4.ru.pool.ntp.org,0x8"
w32tm /config /reliable:yes
net start w32time
w32tm /config /update
Выполните синхронизацию времени с NTP:
w32tm /resync
Проверьте, что теперь источником времени на PDC является внешние NTP сервера:
w32tm /query /configuration
Настройка групповой политики для синхронизации времени PDC с NTP
Так как роль эмулятора PDC может быть передана на другой контроллер домена, можно настроить групповую политику, которая будет автоматически применять настройки синхронизации с внешним NTP источников времени на текущем DC с ролью PDC.
Для этого в консоли управления Group Policy Management Console (
GPMC.msc
), создайте новый WMI фильтр групповых политик. Перейдите разделе WMI Filters, создайте фильтр с именем PDC Emulator и WMI запросом:
Select * from Win32_ComputerSystem where DomainRole = 5
Создайте новую GPO, откройте ее и перейдите в раздел Computer Configuration-> Administrative Templates -> System -> Windows Time Service -> Time Providers
Нас интересуют три политики:
- Configure Windows NTP Client: Enabled (настройки политики описаны ниже)
- Enable Windows NTP Client: Enabled
- Enable Windows NTP Server: Enabled
В настройках политики Configure Windows NTP Client укажите следующие параметры:
- NtpServer: 0.ru.pool.ntp.org,0x8 1.ru.pool.ntp.org,0x8 2.ru.pool.ntp.org,0x8 3.ru.pool.ntp.org,0x8
- Type: NTP
- CrossSiteSyncFlags: 2
- ResolvePeerBackoffMinutes: 15
- Resolve Peer BAckoffMaxTimes: 7
- SpecilalPoolInterval: 1024
- EventLogFlags: 0
Примените созданный ранее фильтр PDC Emulator к GPO.
Осталось прилинковать новую GPO на контейнер Domain Controllers.
Настройка синхронизации времени на клиентах домена
В домене нужно настраивать время только на контроллере домена с ролью PDC. Он должен синхронизировать время с внешним NTP. Специально какие-то отдельные политики или настройки для синхронизации времени на оставшихся DC или компьютерах делать не нужно (это может быть даже вредно). Синхронизация времени должна отлично работать согласно иерархии AD (NT5DS).
На оставшихся (дополнительных) контроллерах домена и остальных клиентах синхронизация времени должна выполняться согласно иерархии домена. Проверим это:
w32tm /query /configuration
Если все настроено правильно, в качестве типа источника времени в разделе
TimeProviders
должен быть задан NT5DS.
Настройки службы времени хранятся в ветке реестра
HKLM\SYSTEM\CurrentControlSet\Services\W32Time\Parameters
.
Если это не так, можно сбросить настройки синхронизации времени на клиенте и принудительно указать, что нужно использовать схему синхронизации по-умолчанию (по доменной иерархии):
net stop w32time
w32tm.exe /unregister
w32tm.exe /register
net start w32time
w32tm /config /syncfromflags:DOMHIER /update
w32tm /resync
Проверьте что теперь в качестве источника времени на клиенте используется ближайший контроллер домена (LogonServer):
w32tm /query /source
Типовые ошибки синхронизации времени на клиентах Windows описаны в статье.
Home » OS’s » Windows » Set NTP Server Windows 2016 or Windows 2019
There is no question about it, having accurate time in your environment set in critical infrastructure systems is a must. Many business-critical applications and infrastructure systems rely on accurate time synchronized between them to ensure the system functions as expected. Time skew can cause all kinds of weirdness when it is misconfigured or out of sync between different servers/systems. This is especially true in a Windows Server Active Directory domain. Having accurate time between a client computer and domain controllers is essential. Let’s take a look at how to set ntp server Windows 2016 or Windows 2019 to see how this can be easily carried out.
What is NTP?
Wen it comes to synchronizing time in most enviornments, Network Time Protocol (NTP) is the protocol that is used to ensure accurate time across your environent. In most environments, NTP servers, special time servers, are configured that provide an external time source for which your internal servers can synchronize with.
There are several widely known NTP IP addresses on the Internet that provide reliable time sources for your network. The NTP.org servers are one such set of time servers that provide an NTP source for configuration.
There are a few NTP values to be aware of:
- NTP Server – This is a specialized server that is able to detremine the precise time from an external timing reference such as GPS and passes these precise time values on to your network
- Offset – This is the difference in time between the external time server and the time on a local client computer. The larger the offset, the more inaccurate the timing source is.
- Delay – This is the value of the round-trip time (latency) of the timing message between the client to the server and back again.
How Time is synchronized in a Windows Server domain
In a Windows domain, Microsoft has default configuration in place that takes care of a good portion of the NTP configuration. Starting with Windows 2000 Server, Windows clients are configured as NTP Clients. When configured as an NTP client, Windows computers only attempt to contact the domain controller for NTP synchronization or a manually specified NTP server.
Microsoft has made the domain controller the default in a Windows domain since it makes sense that clients already have a secure channel established with DCs for other types of communications. Additionally, accurate and synchronized time between domain controllers and clients is especially important for all kinds of things such as logins, group policy synchronization and other tasks/operations.
The order of operations or hierarchy in a Windows domain is as follows:
- Domain members attempt to synchronize time with any domain controller located in the domain
- Domain controllers synchronize with a more authoritative domain controller
- The first domain controller that is installed in the environment is automatically configured to be a reliable time source.
- Other than the first domain controller installed, the PDC emulator (if role has been moved from the first DC installed) generally holds the position of best time source.
An important point to consider and that comes into play when thinking about why we set ntp server in Windows 2016 or Windows 2019 is the authoritative domain controller must have a reliable source to synchronize with as well. This is generally an external time server outside of the domain hierarchy.
Now that we know how the domain hierarchy for time is configured, how is the external time source configured on your domain controller that is configured as the reliable source of time?
Configuring Windows Time Service with W32tm.exe
When it comes to Windows Server environments like Windows Server 2016 or Windows Server 2019, there is a special Windows service that controls the time synchronization of your Windows hosts. This is the Windows Time Service.
Microsoft provides a command line tool to interact with the Windows Time Service called W32tm.exe. This has been included in Windows operating systems since Windows XP/Windows 2003 and later. It can be used to configure Windows Time service parameters as well as diagnose time service problems. This is generally the tool of choice when it comes to configuring, monitoring, and administering Windows Time.
Using the W32tm.exe utility is fairly straightforward. It can be used from a normal command prompt as well as from a PowerShell prompt. There are several command parameters included that allow not only configuring the NTP servers you want to query, but also parameters that allow viewing the low level registry configuration as well as the synchronization status.
You can read the official Microsoft KB on the Windows Time service and the W32tm.exe utility here:
- https://docs.microsoft.com/en-us/windows-server/networking/windows-time-service/windows-time-service-tools-and-settings
However, there are a few commands I would like to show you for the purposes of configuring your Domain controller that is to be the reliable time source (PDC Emulator) for your domain.
The first command is the command line entry to specify your NTP servers, which in this case I am using the NTP.org servers to set as the source of my NTP synchronization.
w32tm /config /syncfromflags:manual /manualpeerlist:"0.us.pool.ntp.org 1.us.pool.ntp.org 2.us.pool.ntp.org 3.us.pool.ntp.org" /update Stop-Service w32time Start-Service w32time
If you want to view the status of the NTP synchronization on your server after you have configured the values and restarted the w32time service, you can use the following command:
w32tm /query /status
You can also check the values configured in your registry key hkey local machine system currentcontrolset services w32time config using the commands below. You can drill into the configuration parameters using the /dumpreg /subkey command.
w32tm /dumpreg w32tm /dumpreg /subkey:parameters
Final Thoughts
As shown, you can easily set NTP Server Windows 2016 or Windows 2019 using the w32tm command utility that allows interacting with the time service in Windows Server.
In a Windows domain, you want to configure your authoritative time source domain controller, which by default is the PDC Emulator, to pull time information from an authoritative source like NTP.org or some other reliable NTP time server.
After configuring the time source, the other domain controllers will synchronize with this server and then the Windows clients joined to the domain will synchronize with the domain controllers that have the corrected time from the authoritative server.
Brandon Lee is the Senior Writer, Engineer and owner at Virtualizationhowto.com, and a 7-time VMware vExpert, with over two decades of experience in Information Technology. Having worked for numerous Fortune 500 companies as well as in various industries, He has extensive experience in various IT segments and is a strong advocate for open source technologies. Brandon holds many industry certifications, loves the outdoors and spending time with family. Also, he goes through the effort of testing and troubleshooting issues, so you don’t have to.