Какой NTP сервер использовать? Или лучше несколько? Задание интервала синхронизации с внешним источником

26.05.2019

В данной статье мы рассмотрим как настроить NTP в Windows Server 2012. В статье не рассматриваются подробная настройка синхронизации времени в доменном окружении, а настройка единичного контроллера домена с ролью эмулятора PDC, который единственный сервере в окружении выполняет синхронизацию с внешним источником времени.

Настройка очень проста. Все что нужно сделать это выполнить следующие команды в PowerShell:

w32tm /config /manualpeerlist:pool.ntp.org /syncfromflags:MANUAL
Stop-Service w32time
Start-Service w32time

Если контроллер виртуализирован средствами Hyper-V нужно не забыть отключить синхронизацию времени средствами Hyper-V. Откройте настройки виртуальной машины -> Management -> Integration Services и снимите чекбокс с Time Synchronization.

На этом все! Хотите узнать больше? Что-то не работает? Тогда разберем более подробно…

W32tm это основная используемая нами команда. Есть ещё варианты, использующие "net time", но на самом деле использовать эту конструкцию нет необходимости. В некоторых статья также упоминается прямое редактирование реестра, однако в Microsoft советуют не делать этого в любом случае, а только если нет совершенно никакой другой альтернативы. Но если вам очень хочется редактировать реестр, нужная вам ветка находиться тут: HKLM\System\CurrentControlSet\Services\W32Time .

Какой NTP сервер использовать? Или лучше несколько?

pool.ntp.org это round-robin рандомных NTP серверов. Для конечных пользователей этого адреса более чем достаточно. Однако в случае необходимости вы можете указать вручную несколько серверов:

w32tm /config /manualpeerlist:"ntp1.sp.se ntp2.sp.se" /syncfromflags:MANUAL

Просто добавьте нужные вам сервера с пробелом между ними.

Не забудьте про файервол

Если у вас есть файервол между хостом и интернетом, он может быть настроен на запрет udp/123 по которому работает протокол NTP. Вот как это выглядит на моей Cisco ASA FW:

Поэтому я создал отдельное правило, разрешающее данный трафик.

Подробная информация и логирование

Данная команда показывает полезную информацию о настройке синхронизации, списке серверов и времени последней синхронизации.

Обычно когда сервер не может получить время с NTP сервера в лог записывается следующая информация:

Log Name: System
Event ID: 47
Level: Warning
Description: Time Provider NtpClient: No valid response has been received from manually configured peer pool.ntp.org after 8 attempts to contact it. This peer will be discarded as a time source and NtpClient will attempt to discover a new peer with this DNS name. The error was: The peer is unreachable.

Когда все нормально сообщение выглядит следующим образом:

Log Name: System
Source: Microsoft-Windows-Time-Service
Event ID: 35
Level: Information
Description: The time service is now synchronizing the system time with the time source pool.ntp.org (ntp.m|0×0|0.0.0.0:123->85.10.240.253:123).

Вы все ещё испытывает какие то проблемы? Вы можете легко включить вывод отладочной информации в логфайл, который в моем случае лимитирован 10-тью мегабайтами и включает все отладочные записи.

w32tm /debug /enable /file:C:\Temp\w32tmdebug.log /size:10485760 /entries:0-300

После завершения отладки выключаем её:

В случае проблем в логе вы увидите большое количество информации. У меня, когда все работает об этом сигнализирует следующая запись:

- Reachability: peer pool.ntp.org (ntp.m|0×0|0.0.0.0:123->129.70.132.35:123) is reachable.
- Logging information: NtpClient is currently receiving valid time data from pool.ntp.org (ntp.m|0×0|0.0.0.0:123->129.70.132.35:123).

А когда мой файервол блокировал пакеты я получал следующие сообщения.

- Logging error: NtpClient has been configured to acquire time from one or more time sources, however none of the sources are currently accessible and no attempt to contact a source will be made for 1 minutes. NTPCLIENT HAS NO SOURCE OF ACCURATE TIME.

Принудительная синхронизация

Если вам необходимо принудительно синхронизировать клиента, запустите команду:

w32tm /resync
Sending resync command to local computer
The command completed successfully.

Если вы получили следующую ошибку, значит компьютер не может достичь NTP сервера.

The computer did not resync because no time data was available.

Начнем с начала

Если вы полностью запутались в конфигах, напихали лишнего и уже не понимаете что происходит, начните с начала. Данные команды полностью сбросят настройки NTP в дефолтное состояние:

Stop-Service w32time
w32tm /unregister
w32tm /register

Настройка времени в серверных операционных системах Windows с помощью протокола NTP является критичной для многих служб. Без правильного настроенного времени, а точнее при рассогласовании часов на сервере и рабочих станциях не могут правильно работать многие протоколы Active Directory и сервисы синхронизации. Установка и поддержка часов с помощью NTP является простой задачей, связанной иногда, однако, с некоторыми сложностями, которые мы попытаемся рассмотреть в этой статье.

Для примера будем использовать не самую свежую систему — Windows Server 2012. Она является наиболее распространенной и, в то же время, для многих других систем, включая Windows Server 2008, Windows Server 2016 применимы аналогичные команды и правила. Следует отметить, что описание касается настройки окружения с единственным главным контроллером PDC. Более сложные варианты не рассматриваются.

Сброс настроек NTP

Для того, чтобы перевести службу NTP в «дефолтное» состояние, необходимо выполнить следующие команды:

Stop- Service w32time w32tm / unregister w32tm / register

Stop-Service w32time w32tm /unregister w32tm /register

В данном случае они останавливают сервис, разрегистрируют сервис и регистрируют его в системе заново. Следует выполнять эти команды только в случае существенной необходимости. Как правило, нужды в них нет — NTP настраивается, если учтены другие обстоятельства системы.

Команды установки NTP в обычном случае

Для того, чтобы настроить протокол сетевого времени на контроллере Windows Server, прежде всего необходимо отключить синхронизацию посредством Hyper-V, если контроллер виртуализирован с помощью этой технологии. Для этого нужно зайти в настройки и снять галочку с пункта Time Synchronization в разделе Management -> Integration Services

Для тех, кто не использует Hyper-V, предыдущий шаг можно опустить.

w32tm /config /manualpeerlist:"0.de.pool.ntp.org 1.de.pool.ntp.org" /syncfromflags:MANUAL

Протокол UDP для NTP и блокировка файрволом

Протокол времени использует для своей связи порт UDP с номером 123 в стандартной конфигурации. Необходимо следить за тем, чтобы файрвол не блокировал этот порт. В случае, если блокировка происходит, в логах ntp будет масса информации о том, что соединение невозможно:

Log Name: System
Source: Microsoft-Windows-Time-Service
Event ID: 47
Level: Warning
Description: Time Provider NtpClient: No valid response has been received from manually configured peer pool.ntp.org after 8 attempts to contact it. This peer will be discarded as a time source and NtpClient will attempt to discover a new peer with this DNS name. The error was: The peer is unreachable.

Для того, чтобы убедиться, что проблема именно в этом, можно включить вывод дополнительной отладочной информации. Настраиваем логи Windows Server таким образом, чтобы в них писалась вся необходимая информация, но они не росли больше, чем 20 мегабайт:

w32tm /debug /disable

Блокировка ntp файрволом отлавливается по фразе в отладке:

— Logging error: NtpClient has been configured to acquire time from one or more time sources, however none of the sources are currently accessible and no attempt to contact a source will be made for 1 minutes. NTPCLIENT HAS NO SOURCE OF ACCURATE TIME.

В этом случае (да, в общем, сразу с целью проверки) необходимо проверить правило в файрволе

И, в случае необходимости, поменять правило или добавить его.

Проверка правильности работы ntp

Чтобы проверить — все ли работает правильно, можно запустить синхронизацию вручную:

w32tm / resync

Если все прошло успешно, получите сообщение:

Sending resync command to local computer
The command completed successfully.

Если есть проблемы — сообщение:

The computer did not resync because no time data was available.

Во втором случае необходимо проверить все сначала: файрвол, правильность заданных серверов (не ошиблись ли в имени). Если что — информацию о сбросе настроек мы уже приводили.

Примеры применения

08.12.2014

Для синхронизации времени устройства NetPing используют протокол NTP. При помощи этого протокола все устройства в сети корректируют своё время по указанному серверу. Устройства NetPing, подключенные к Internet, могут использовать публичный NTP сервер, как рекомендовано в статье . Если доступа к сети Internet нет, то можно настроить локальный NTP сервер. Таким сервером может являться любой компьютер с ОС Windows с настроенной службой W32Time Служба времени Windows »). Данная служба не имеет графического интерфейса и настраивается либо через командную строку либо путём правки ключей реестра.

Инструкция по настройке сервера NTP на ОС Windows 7/8/2008/2012

Рассмотрим настройку службы времени через редактирование реестра. Настройка происходит одинаково для версий Windows 7/8, Windows Server 2008, Windows Server 2012.

Для данной настройки необходимо обладать правами администратора ОС Windows

Открываем редактор реестра либо через диалоговое окно «Выполнить », вызванное комбинацией клавиш «Win » + «R », либо через форму поиска, где набираем «regedit ».


В открывшемся редакторе в левом древовидном меню открываем «ветвь» «HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\W32Time\TimeProviders\NtpServer », где ищем ключ с названием «Enable ». Нажимаем правой кнопкой мыши и выбираем «Изменить». Меняем значение ключа с 0 на 1 .


Изменив данный параметр, мы указали, что данный компьютер выступает в роли сервера NTP. Компьютер одновременно остаётся клиентом и может синхронизировать своё время по другим серверам в Internet или локальной сети. Если вы хотите, чтобы в качестве источника данных выступали внутренние аппаратные часы, то измените значение параметра ключа AnnounceFlags на 5 в ветке « HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config ».


Для вступления изменений в силу нам необходимо перезапустить службу. Доступ к службам осуществляется через «Панель управления » из меню «Пуск » -> «Панель управления » -> «Администрирование » -> «Службы ». Также она находится в форме поиска при вводе «services.msc ». В появившемся списке служб находим интересующую нас «Служба времени Windows » и через меню, вызванное правой кнопкой мыши, выбираем пункт «Перезапустить ».


Операционные системы семейства 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 .

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.

…в среде Active Directory разница в часах более 5 минут приводит к проблемам аутентификации Kerberos…

В данной заметке речь пойдет о настройке синхронизации времени в доменной среде Windows 2008 – 2012 R2.
Основой нормального функционирования доменной среды AD является корректная работа службы времени Windows (W32Time).

Как работает синхронизация времени в доменной среде?

1. пользователи получают точное время от ближайшего контроллера домена, на котором они зарегистрировались;
2. все доменные контроллеры запрашивают об этом DC с ролью PDC-эмулятор (одна из ролей FSMO);
3. PDC-эмулятор, в свою очередь, должен синхронизироваться с более авторитетным источником времени;
На практике PDC-эмулятор обычно синхронизируется с выделенным NTP-сервером организации, либо с NTP-сервером провайдера, или же с внешним источником точного времени, такие как: 0.ru.pool.ntp.org, 1.ru.pool.ntp.org, 2.ru.pool.ntp.org

Пример настройки контроллера домена с ролью PDC-эмулятора.

Для настройки нам потребуется консоль PowerShell запущенная от имени администратора.
1. Определим имя PDC-эмулятора – самый простой способ выполнить команду:

Когда мы подключили к DC с ролью PDC можно начинать настраивать.
2. Конфигурируем внешние источники синхронизации – указываем с какими источниками PDC будет синхронизироваться.

w32tm /config /syncfromflags:manual /manualpeerlist:”0.ru.pool.ntp.org 1.ru.pool.ntp.org 2.ru.pool.ntp.org”

где, параметры:
/syncfromflags:manual — синхронизация с узлами из заданного вручную списка.
manualpeerlist:<узлы> — список (адреса DNS или IP) источников времени

Важно! Имя каждого источника времени (если их несколько) должно быть разделено пробелом. А на брандмауэре должно быть разрешено прохождение трафика UDP на порт 123 в обе стороны.

3. Объявляем PDC-Emulator надежным источником времени для клиентов:
w32tm /config /reliable:yes
4. После внесения изменений перезапускаем службу времени:

Restrat-Service W32Time

Или обновляем конфигурацию командой: w32tm /config /update

Если вы перенесли роль PDC-эмулятор на другой контроллер домена, то старый DC все еще продолжает считает считать себя авторитетным сервером времени для всего домена, что может стать причиной ошибок в системных логах. Исправить эту ситуацию можно командой:
w32tm /config /syncfromflags:domhier /reliable:no /update

Несколько, на мой взгляд, полезных команд:

w32tm /query /configuration — посмотреть текущие настройки службы времени;

Где:

SpecialPollInterval: 3600 - интервал синхронизации в секундах, 3600 – сутки. Синхронизиция будет проводиться раз в сутки.
NtpServer - указывает сервреры, с которым может синхроинизировать время компьютер.
Type: NTP – вид синхронизации времени.
Параметр Type может иметь следующие параметры:
NoSync — служба времени вообще не синхронизируется ни с чем.
NTP — служба времени синхронизируется с серверами, указанными в параметре NtpServer.
NT5DS — служба времени синхронизируется, используя доменную иерархию (характерно для членов домена Active Directory).
AllSync — служба времени использует все возможные механизмы для синхронизации.

w32tm /monitor — отобразит текущую иерархию синхронизации времени по домену;
w32tm /stripchart /computer:0.ru.pool.ntp.org /samples:5 /dataonly — произвести 5 попыток сравнения времени с авторитетным источником времени 0.ru.pool.ntp.org (полезно при проверке доступности источника времени );
w32tm /resync – заставить компьютер синхронизироваться с используемым им сервером времени;
w32tm /unregister - удаляет службу времени с компьютера;
w32tm /register – регистрирует службу времени на компьютере;
Если кому интересно настраивать NTP-сервер через реестр, то милости просим в эту ветку: HKLM\System\CurrentControlSet\services\W32Time\

Концепция ярусов STRATA или STRATUM


Где:
Stratum 0 – эталонные или авторитетные источники точного времени, такие как: путники GPS, цезиевые атомные часы, радио волны WWVB. Авторитетны они потому, что имеют способ поддержания высокоточного хронометража – когда секунда не потеряется за 300 000 лет.
Stratum 1 – компьютеры, которые напрямую берут время у Stratum 0, т.е. Stratum 1 используют аппаратное (проводом) подключение к Stratum 0!
Stratum 2 – уровень компьютеров, берущие время по сети у Stratum 1.
Как уже, наверное, понятно из схемы, Stratum 3 будет брать время у Stratum 2 , а Stratum 4 у Stratum 3 и т.д. Самым нижним ярусов является Stratum 16 и время в нем считается не синхронизированным.
Опять же, на практике, самыми распространенными внешними источниками времени являются Stratum 2 , Stratum 3 , ибо синхронизироваться с Stratum 1 простым пользователям не разрешается, да и это не к чему.

Похожие статьи