Настраиваем NTP, Время, Часовой пояс

Сегодня пришлось повозиться на держателе домена (windows 2003) и корректно настроить ntp.  Ниже будет информацию, которая мне помогла.

Процедура по восстановлению работоспособности сервиса w32tm

1. Находим все DC и того, кто из них PDC эмулятор

netdom query fsmo

2. Проверяем доступность сервера времени с PDC эмулятора

portqry –n ntp.mydomain.ua –e 123 –p UDP Querying target system called: ntp.mydomain.ua Attempting to resolve name to IP address… Name resolved to 10.10.72.17
UDP port 123 (ntp service): LISTENING or FILTERED

Должно быть именно так “LISTENING or FILTERED”.

Эта утилита входит в комплект Support Tools для Windows 2003 Server. К сожалению, на Windows 2008 R2 она не работает.

3. В regedit открываем параметры ntp сервера

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters\NtpServer

Там должен быть записан ip адрес или полное имя нашего ntp сервера и запись должна обязательно заканчиваться строкой “,0x1”. Кавычки, понятное дело, нужно убрать. Для уверенности в том, что тут нету ошибки, можно пропинговать указанный ntp-сервер.

4. Там же, следует перейти к параметру Type:

HKLM\SYSTEM\CurrentControlSet\Services\W32Time\Parameters\Type

и убедиться, что там прописано  NTP, а не NT5DS

5. Теперь следует проверить еще одно значение: AnnounceFlags

HKLM\SYSTEM\CurrentControlSet\Services\W32Time\Config\AnnounceFlags

тут должна быть 5

6. Перезапускаем сервис времени:

net stop w32time && net start w32time

7. Синхронизируемся:

w32tm /resync /rediscover

8. На остальных контроллерах домена рекомендуется переустановить службу времени

Команда: "w32tm /unregister && w32tm /register" удаляет службу времени, а затем снова ее устанавливает, причем, что важно, удаляется, а затем создается заново вся ветка параметров в реестре.

9. Рекомендуется перезапустить контроллер домена, являющийся pdc эмулятором, да и все остальные тоже.

10. Если на pdc эмуляторе ошибки все равно наблюдаются, то стоит попробовать изменить формат клиентских запросов

В параметре

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters\NtpServer

Меняем значение с 0x1 на 0x8

11. Перезапускаем сервис времени

net stop w32time && net start w32time

12. Рекомендуется проверить все политики, имеющие отношение к настройкам сервиса времени:

Default Domain Controllers group policy, Default Domain group policy и другие в которых изменены любые значения в разделе

Computer configuration/Administrative Templates /System/Windows Time service/Time Providers

Убедитесь, что все значения там в состоянии “not configured”. При необходимости, играть с параметрами следует позже.

Если что-то меняли в политике, то перезапускаем сервис времени: net stop w32time && net start w32time

13. Если так ничего не помогло, то нужно обнулить параметры сервиса времени и на pdc эмуляторе:

net stop w32time w32tm /unregister w32tm /register

После чего нужно будет настраивать все параметры заново, начиная с п.3.

Если вдруг, на этапе удаления напишет про запрет доступа, то нужно перезагрузиться.

Включение лога сервиса времени

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

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config

Если нижеприведенных ключей там нету, а их нету по умолчанию, то их следует создать

  • FileLogSize, Type: DWORD, Data: 10000000 - максимальный размер лог-файла в байтах.
  • FileLogName, Type: REG_SZ (String), Data: C:\Test\w32time_log.txt - адрес нахождения лог-файла
  • FileLogEntries, Type: REG_SZ (String), Value: 0-116 - уровень детализации лога. Максимальный диапазон: 0-300.

Вместо изменения значений в реестре, можно то же самое сделать из командной строки:

w32tm /debug /enable /file:C:\Test\w32time_log.txt /size:100000 /entries:0-300

Чтобы выключить логи отладки можно ввести команду:

w32tm /debug /disable

Если Вы перенесли роль PDC Emulator на другой сервер, необходимо дополнительно выполнить настройку старого сервера командой

w32tm /config /syncfromflags:domhier /reliable:no /update

и перезапустить службу времени:

net stop w32time && net start w32time

Первое решение проблемы "no time data was available"

Еще раз обращу внимание, что проблема была в доменных политиках.

Команда w32tm /resync выдавала ошибку

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

Решено это было следующим образом:

  1. Start / Run / dsa.msc / OK.
  2. Right-click the Domain Controllers container and press Properties.
  3. Select the Group Policy tab.
  4. Select the Default Domain Controllers Policy and press Edit. If GPMC is implemented, press Open first.
  5. Expand Computer Configuration / Administrative Templates / System / Windows Time Service.
  6. Right-click Global Configuration Settings and press Properties.
  7. Select Not Configured.
  8. Press Apply and OK.
  9. Expand Windows Time Service.
  10. Double-click Enable Windows NTP Client.
  11. Select Not Configured.
  12. Press Apply and OK.
  13. Double-click Configure Windows NTP Client.
  14. Select Not Configured.
  15. Press Apply and OK.
  16. Double-click Enable Windows NTP Server.
  17. Select Not Configured.
  18. Press Apply and OK.
  19. Exit the Group Policy Editor.
  20. Close any open policy dialog boxes.
  21. Open a CMD.EXE window.
  22. Type gpupdate /force and press Enter.

Второе решение проблемы "no time data was available"

Во второй раз с этой же ошибкой с я столкнулся через пару лет. При попытке получить время от нашего cisco роутера, при помощи команды w32tm /resync, видел ошибку:

Sending resync command to local computer...
The computer did not resync because no time data was available.

Или на русском:

Команда синхронизации отправлена на local computer...
Синхронизация не выполнена, поскольку нет доступных данных о времени.

При этом вышеописанные действия уже были совершены.

Служба win32time отсылала "симметрические пакеты": в снифере wireshark я видел что windows сервер отсылает пакеты "NTP Version 3, symmetric active", но никакого ответа от CISCO не получал.

В логах службы сообщалось "No response from peer", а в логах роутера:

252755: Jul  2 11:52:48.456 EEST: NTP message received from 192.168.2.31 on interface 'FastEthernet0/0.5' (192.168.2.10).
252756: Jul  2 11:52:48.456 EEST: NTP Core(DEBUG): ntp_receive: message received
252757: Jul  2 11:52:48.456 EEST: NTP Core(DEBUG): ntp_receive: peer is 0x00000000, next action is 5.
252758: Jul  2 11:52:48.456 EEST: NTP Core (NOTICE): ntp_receive: dropping message: AM_NEWPASS, passive association disabled..

В этой случае мне помогла команда:

w32tm /config /manualpeerlist:192.168.2.10,0x8 /syncfromflags:MANUAL

и перезапуск службы времени.

После этого в wireshark увидел нормальный обмен пакетами:

  • windows сервер посылал пакеты "NTP Version 3, client"
  • cisco роутер отвечал пакетами "NTP Version 3, server"

Настраиваем период синхронизации времени

Инструкция работает на компьютерах которые не включены в домен.

Переходим к редактированию реестра: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time \TimeProviders\NtpClient\SpecialPollInterval - ключ в реестре, задает период обновления синхронизации времени в системе в секундах. Вводим в десятичном формате необходимый период.

После этого перезагружаем компьютер или вводим команду w32tm /config /update

Проверить с какой периодичностью происходит синхронизация времени:

  • Кликаем по часам в панели задач
  • Переходим к "изменение настроек даты и времени", вкладка "Время по Интернету"
  • Жмем кнопку "Изменить параметры"
  • Убеждаемся что установлена галочка возле "Синхронизировать с сервером времени в Интернете"
  • Выбираем нужный сервер, жмем кнопку "Обновить сейчас" и ждем пока не появиться надпись "Время было успешно синхронизировано", если же увидели надпись "Ошибка при выполнении синхронизации" то выбираем другой сервер.
  • После успешной синхронизации жмем кнопку "ОК" и на вкладке "Время по Интернету" смотрим когда будет "Следующее выполнение синхронизации"

Указание часового пояса через групповые политики

  • Открываем политику для контейнера где находиться компьютер
  • Переходим к Конфигурация компьютера - Настройка - Конфигурация Windows - Реестр
  • Левый клик по правой белой области в области "Реестр" и выбираем пункт меню "Создать" - "Мастер реестра"
  • Выбираем компьютер на котором установлен нужный часовой пояс (у меня это локальный)
  • В Браузере реестра переходим к "HKLM \ System \ CurrentControlSet \ Control \ TimeZoneInformation"
  • Отмечаем все ключи в этой папке и жмем "готово"
  • Все теперь на локальных компьютерах автоматически будет устанавливаться необходимый часовой пояс и после перезагрузки устанавливаться правильной время

Полезные команды связанные со службой времени ntp:

  • netdom query fsmo - раскажет кто PDC (главный сервер времени в домене)
  • w32tm /monitor
  • w32tm /config /manualpeerlist:time.windows.com,0x1 /syncfromflags:manual /reliable:yes /update - команда которая настроит ваш доменный контроллер с ролью «Эмулятора PDC» на синхронизацию с внешним источником
  • w32tm /stripchart /computer:time.windows.com /samples:5 /dataonly - 5 сравнений с источником
  • net time /querysntp - показывает кто является ntp сервером
  • w32tm /query /peers - показывает источник, сколько времени осталось до синхронизации, режим работы, страту, интервал опроса
  • w32tm /query /status - отображает индикатор помех, старту, точность, задержку корня, дисперсию, время последней успешной синхронизации, источник и интервал опроса
  • net time /setsntp:192.168.1.1 - задает ntp-сервер.
  • w32tm /debug /enable /file:C:\Test\w32time_log.txt /size:100000 /entries:0-300 - включаем ведение лога службой времени
  • w32tm /debug /disable - отключаем логирование
  • w32tm /config /update - применить/обновить конфигурацию.
  • w32tm /query /configuration - полный список параметров службы

Помните что после любых изменений в конфигурации ntp-службы нужно ее перезапускать, команда:

net stop w32time && net start w32time

Полезные ссылки:

Понравилось? =) Поделись с друзьями:

Обсуждение записи “Настраиваем NTP, Время, Часовой пояс”

  1. lev (shuvalov.com) says:

    Отличный пост.

    Только смутило «обязательно заканчиваться строкой “,0?1”»
    Вероятно «,0x01». А запись в регистри NtpServer разделяется пробелами, те нормально записать без флагов «time.windows.com pool.ntp.org». Флаги необязательные:

    ,0x01 SpecialInterval
    ,0x02 UseAsFallbackOnly
    ,0x04 SymmatricActive
    ,0x08 Client

  2. Владимир Демянович (elims.org.ua) says:

    lev, спасибо за дополнение. Действительно ошибка в тексте.

Обсудить