Сегодня пришлось повозиться на держателе домена (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.
Решено это было следующим образом:
- Start / Run / dsa.msc / OK.
- Right-click the Domain Controllers container and press Properties.
- Select the Group Policy tab.
- Select the Default Domain Controllers Policy and press Edit. If GPMC is implemented, press Open first.
- Expand Computer Configuration / Administrative Templates / System / Windows Time Service.
- Right-click Global Configuration Settings and press Properties.
- Select Not Configured.
- Press Apply and OK.
- Expand Windows Time Service.
- Double-click Enable Windows NTP Client.
- Select Not Configured.
- Press Apply and OK.
- Double-click Configure Windows NTP Client.
- Select Not Configured.
- Press Apply and OK.
- Double-click Enable Windows NTP Server.
- Select Not Configured.
- Press Apply and OK.
- Exit the Group Policy Editor.
- Close any open policy dialog boxes.
- Open a CMD.EXE window.
- 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
Отличный пост.
Только смутило «обязательно заканчиваться строкой “,0?1”»
Вероятно «,0x01». А запись в регистри NtpServer разделяется пробелами, те нормально записать без флагов «time.windows.com pool.ntp.org». Флаги необязательные:
,0x01 SpecialInterval
,0x02 UseAsFallbackOnly
,0x04 SymmatricActive
,0x08 Client
lev, спасибо за дополнение. Действительно ошибка в тексте.