Проверка ntp сервера windows
Настройка NTP в Windows Server 2012
Настройка времени в серверных операционных системах Windows с помощью протокола NTP является критичной для многих служб. Без правильного настроенного времени, а точнее при рассогласовании часов на сервере и рабочих станциях не могут правильно работать многие протоколы Active Directory и сервисы синхронизации. Установка и поддержка часов с помощью NTP является простой задачей, связанной иногда, однако, с некоторыми сложностями, которые мы попытаемся рассмотреть в этой статье.
Для примера будем использовать не самую свежую систему — Windows Server 2012. Она является наиболее распространенной и, в то же время, для многих других систем, включая Windows Server 2008, Windows Server 2016 применимы аналогичные команды и правила. Следует отметить, что описание касается настройки окружения с единственным главным контроллером PDC. Более сложные варианты не рассматриваются.
Сброс настроек NTP
Для того, чтобы перевести службу NTP в «дефолтное» состояние, необходимо выполнить следующие команды:
Stop-Service w32time w32tm /unregister w32tm /register
В данном случае они останавливают сервис, разрегистрируют сервис и регистрируют его в системе заново. Следует выполнять эти команды только в случае существенной необходимости. Как правило, нужды в них нет — NTP настраивается, если учтены другие обстоятельства системы.
Команды установки NTP в обычном случае
Для того, чтобы настроить протокол сетевого времени на контроллере Windows Server, прежде всего необходимо отключить синхронизацию посредством Hyper-V, если контроллер виртуализирован с помощью этой технологии. Для этого нужно зайти в настройки и снять галочку с пункта Time Synchronization в разделе Management -> Integration Services
Для тех, кто не использует Hyper-V, предыдущий шаг можно опустить.
Далее, запустить Power-Shell и ввести команды:
w32tm /config /manualpeerlist:pool.ntp.org /syncfromflags:MANUAL Stop-Service w32time Start-Service w32time
На этом установка в качестве основного ntp-сервера одного из pool.ntp.org закончена.
Выбор ntp-сервера
Однако нет жесткой необходимости использовать именно этот сервер. Для тех, кто находится в интранете, для тех, у кого есть предпочтения по геолокации или другим параметрам, можно указать другой сервер. Или даже список в кавычках, разделенный пробелами:
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 /enable /file:C:\tmp\ntp.log /size:20971520 /entries:0-300
Следите за тем, чтобы на диске присутствовал каталог C:\tmp куда будут записаны логи.
После того, как ошибка будет отловлена, вывод дополнительной отладочной информации можно будет отключить:
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
Чтобы проверить — все ли работает правильно, можно запустить синхронизацию вручную:
Если все прошло успешно, получите сообщение:
Sending resync command to local computer
The command completed successfully.
Если есть проблемы — сообщение:
The computer did not resync because no time data was available.
Во втором случае необходимо проверить все сначала: файрвол, правильность заданных серверов (не ошиблись ли в имени). Если что — информацию о сбросе настроек мы уже приводили.
Настройка доменного сервера времени NTP в Windows Server 2012R2/2016 через GPO
Сразу оговорим важные вещи:
- Работа по настройке точного времени на участниках домена через GPO часто делят на 2 части: настройки сервера/-ов и настройки клиентских машин.
- Настройку клиентских машин на получение точного времени некоторые администраторы делают через политики (в частности правкой политики Default Domain Policy), но я так не делаю, ибо все входящие в домен машины «автоматически узнают», что сервер времени для них — контроллер домена. Клиентские машины я только проверяю на правильное соединение с нашим сервером NTP.
Для начала определяю какой контроллер домена Windows Server 201x имеет роль PDC (если я этого не знаю )) ), если контроллеров домена несколько, как в моём случае. Для этого на любом компьютере или сервере, входящем в домен! , запускаю командную строку от имени Администратора:
Не будем обсуждать распределение ролей между контролерами, в тестовом домене у меня все роли принадлежат одному контроллеру, и перейдя на сервер ADDC01 (в моём случае) — начнем его настройку.
1. Для начала создадим WMI-фильтр, который будет применять нашу новую политику только к серверу с ролью эмулятора PDC
2. Создадим новую групповую политику и применим к ней фильтр WMI, созданный нами выше.
Нас интересует путь: Computer Configuration — Administrative Templates — System — Windows Time Service — Time Providers (Конфигурация компьютера -> Политики -> Административные шаблоны -> Система -> Служба времени Windows -> Поставщики времени)
Здесь нам нужно включить три политики:
Enable Windows NTP Client: Enabled
Enable Windows NTP Server: Enabled
Configure Windows NTP Client: Enabled
Пункт Configure Windows NTP client имеет следующие настройки:
Я использовал следующий список серверов точного времени:
3. Создав политику не забываем применить к ней фильтр WMI:
4. Пришло время обновить политики на сервере времени и синхронизировать время. Запускаем командную строку от имени Администратора.
Настройка NTP сервера в Windows
Начиная с Windows 2000 все операционные системы Windows включают в себя службу времени W32Time. Эта служба предназначена для синхронизации времени в пределах организации. W32Time отвечает за работу как клиентской, так и серверной части службы времени, причем один и тот же компьютер может быть одновременно и клиентом и сервером NTP (Network Time Protocol).
По умолчанию служба времени в Windows сконфигурирована следующим образом:
• При установке операционной системы Windows запускает клиента NTP и синхронизируется с внешним источником времени;
• При добавлении компьютера в домен тип синхронизации меняется. Все клиентские компьютеры и рядовые сервера в домене используют для синхронизации времени контроллер домена, проверяющий их подлинность;
• При повышении рядового сервера до контроллера домена на нем запускается NTP-сервер, который в качестве источника времени использует контроллер с ролью PDC-эмулятор;
• PDC-эмулятор, расположенный в корневом домене леса, является основным сервером времени для всей организации. При этом сам он также синхронизируется с внешним источником времени.
Такая схема работает в большинстве случаев и не требует вмешательства. Однако структура сервиса времени в Windows может и не следовать доменной иерархии, и надежным источником времени можно назначить любой компьютер. В качестве примера я опишу настройку NTP-сервера в Windows Server 2008 R2, хотя со времен Windows 2000 процедура не особо изменилась.
Запуск NTP сервера
Сразу отмечу, что служба времени в Windows Server (начиная с 2000 и заканчивая 2012) не имеет графического интерфейса и настраивается либо из командной строки, либо путем прямой правки системного реестра. Лично мне ближе второй способ, поэтому идем в реестр.
Итак, первым делом нам надо запустить сервер 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 сервера
NTP сервер включили, теперь надо его настроить. Открываем ветку реестра HKLM\System\CurrentControlSet\services\W32Time\Parameters. Здесь в первую очередь нас интересует параметр Type, который задает тип синхронизации. Он может принимать следующие значения:
NoSync — NTP-сервер не синхронизируется с каким либо внешним источником времени. Используются часы, встроенные в микросхему CMOS самого сервера;
NTP — NTP-сервер синхронизируется с внешними серверами времени, которые указаны в параметре реестра NtpServer;
NT5DS — NTP-сервер производит синхронизацию согласно доменной иерархии;
AllSync — NTP-сервер использует для синхронизации все доступные источники.
Значение по умолчанию для компьютера, входящего в домен — NT5DS, для отдельно стоящего компьютера — NTP.
И параметр NtpServer, в котором указываются NTP-сервера, с которыми будет синхронизировать время данный сервер. По умолчанию в этом параметре прописан NTP-сервер Microsoft (time.windows.com, 0x1), при необходимости можно добавить еще несколько NTP-серверов, введя их DNS имена или IP адреса через пробел. Список доступных серверов времени можно посмотреть например здесь.
В конце каждого имени можно добавлять флаг (напр. ,0x1) который определяет режим для синхронизации с сервером времени. Допускаются следующие значения:
0x1 – SpecialInterval, использование специального интервала опроса ;
0x2 – режим UseAsFallbackOnly;
0x4 – SymmetricActive, симметричный активный режим;
0x8 – Client, отправка запроса в клиентском режиме.
При использовании флага SpecialInterval, необходимо установленное значение интервала в ключе SpecialPollInterval. При значении флага UseAsFallbackOnly службе времени сообщается, что данный сервер будет использоваться как резервный и перед синхронизацией с ним будут выполнятся обращения к другим серверам списка. Симметричный активный режим используется NTP-серверами по умолчанию, а клиентский режим можно задействовать в случае проблем с синхронизацией. Подробнее о режимах синхронизации можно посмотреть здесь, либо не морочиться и просто ставить везде ,0x1 (как советует Microsoft).
Еще один важный параметр AnnounceFlags находится в разделе реестра HKLM\System\CurrentControlSet\services\W32Time\Config. Он отвечает за то, как о себе заявляет NTP-сервер и может принимать следующие значения:
0x0 (Not a time server) — сервер не объявляет себя через NetLogon, как источник времени. Он может отвечать на NTP запросы, но соседи не смогут распознать его, как источник времени;
0x1 (Always time server) — сервер будет всегда объявлять о себе вне зависимости от статуса;
0x2 (Automatic time server) — сервер будет объявлять о себе только, если он получает надежное время от другого соседа (NTP или NT5DS);
0x4 (Always reliable time server) — сервер будет всегда заявлять себя, как надежный источник времени;
0x8 (Automatic reliable time server) — контроллер домена автоматически объявляется надежным если он PDC-эмулятор корневого домена леса. Этот флаг позволяет главному PDC леса заявить о себе как об авторизованном источнике времени для всего леса даже при отсутствии связи с вышестоящими NTP-серверами. Ни один другой контроллер или рядовой сервер (имеющие по умолчанию флаг 0x2) не может заявить о себе, как надежном источнике времени, если он не может найти источник времени для себя.
Значение AnnounceFlags составляет сумму составляющих его флагов, например:
10=2+8 — NTP-сервер заявляет о себе как о надежном источнике времени при условии, что сам получает время из надежного источника либо является PDC корневого домена. Флаг 10 задается по умолчанию как для членов домена, так и для отдельно стоящих серверов.
5=1+4 — NTP-сервер всегда заявляет о себе как о надежном источнике времени. Например, чтобы заявить рядовой сервер (не домен-контроллер) как надежный источник времени, нужен флаг 5.
Ну и настроим интервал между обновлениями. За него отвечает уже упоминавшийся выше ключ 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 выведет все параметры службы.
Ну и на крайний случай 🙁
w32tm /unregister — удаляет службу времени с компьютера.
w32tm /register – регистрирует службу времени на компьютере. При этом создается заново вся ветка параметров в реестре.