30 марта 2010 г.

Настройка точного времени в домене Windows 2003 / 2008 / 2008 R2

обновлено 30.03.2010

Все хотят видеть на компьютере точное время, кроме того, это очень важно для нормального функционирования домена Windows и AD. Казалось бы, чего проще, настраиваешь PDC эмулятор на синхронизацию с каким-нибудь ntp и все становится на места само собой … Но нет, уже несколько раз, наблюдалась рассинхронизация контроллеров домена между собой и жалобы пользователей на то, что наше время отличается от точного на пару минут.

Казалось бы, смешная проблема – пару минут, но для некоторой работы и пара минут важно. Особенно, если это редактора новостной ленты www.korrespondent.net. Правда были еще и шуточные жалобы, что они из-за этой проблемы целых 2, 3 или 5 минут перерабатывают :-)

Стандартные “танцы с бубнами”, которые делал я, а потом и наш сетевой инженер, по руководству от Microsoft помогали, но не долго. Т.е. время сходится, ошибки из лога исчезают, а через пару часов, или, через сутки все начинается заново. А потом, через пару-тройку недель, или месяц-другой, ошибка снова достигает размера более 2-х минут и все заново.

Итак, хочешь что-то сделать хорошо – сделай это сам. Что мы имеем, три контроллера домена, работающих под Windows 2003 Server R2, кучу рабочих станций под Windows XP Professional SP3. В качестве ntp сервера в компании служит Cisco 2821

Признаками проблемы на DC, являющемся еще и PDC эмулятором является наличие следующих ошибок в Event log:

1.

Event Type:    Warning
Event Source:    W32Time
Event Category:    None
Event ID:    47
Date:        17.11.2009
Time:        13:21:45
User:        N/A
Computer:    DC04
Description:
Time Provider NtpClient: No valid response has been received from  manually configured peer ntp.mydomain.ua,0x1 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.

2.

Event Type:    Error
Event Source:    W32Time
Event Category:    None
Event ID:    29
Date:        17.11.2009
Time:        13:21:45
User:        N/A
Computer:    DC04
Description:
The time provider NtpClient is configured to acquire time from one or more time sources, however none of the sources are currently accessible.  No attempt to contact a source will be made for 15 minutes. NtpClient has no source of accurate time.

3.

Event Type:    Information
Event Source:    W32Time
Event Category:    None
Event ID:    38
Date:        17.11.2009
Time:        14:06:45
User:        N/A
Computer:    DC04
Description:
The time provider NtpClient cannot reach or is currently receiving invalid time data from ntp.mydomain.ua
(ntp.m|0x1|192.168.0.50:123->10.10.72.17:123).

На остальных контроллерах домена, вместо Event ID 47, присутствует Event ID:    24

Event Type:    Warning
Event Source:    W32Time
Event Category:    None
Event ID:    24
Date:        18.11.2009
Time:        6:46:56
User:        N/A
Computer:    DC03
Description:
Time Provider NtpClient: No valid response has been received from domain controller pdacemul.addomain after 8 attempts to contact it. This domain controller will be discarded as a time source and NtpClient will attempt to discover a  new domain controller from which to synchronize.

Итак, вот процедура по восстановлению работоспособности сервиса 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”. Кавычки, понятное дело, нужно убрать. Кстати, к этому суффиксу я вернусь позже. Для уверенности в том, что тут нету ошибки, неплохо бы попингать скопированный оттуда адрес или имя.
  4. Там же, следует перейти к параметруHKLM\SYSTEM\CurrentControlSet\Services\W32Time\Parameters\Typeи убедиться, что там прописано  NTP, а неNT5DS
  5. Теперь следует проверить еще одно значение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 эмуляторе ошибки появляются заново, как в моем случае, то стоит попробовать заменить значение 0x1 на 0x08 в параметреHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters\NtpServerчтобы стали посылаться стандартные клиентские запросы.
  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”. При необходимости, играть с параметрами следует позже.

  13. Если что-то меняли в политике, то перезапускаем сервис времени:net stop w32time && net start w32time
  14. Если и после этого ничего не помогло, то нужно обнулить параметры сервиса времени и на pdc эмулятореnet stop w32time
    w32tm /unregister
    w32tm /register
    после чего нужно будет настраивать все параметры заново, начиная с п.3. Если вдруг, на этапе удаления напишет про запрет доступа, то нужно перезагрузиться.
  15. В особо тяжелых случаях может помочь включение лога для сервиса. Для настройки этого используются три параметра в реестре по пути

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config

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

    Value Name: FileLogSize
    Data Type: DWORD
    Value data: 10000000

    Этот параметр определяет максимальный размер файла лога в байтах. Значение 10000000 байт ограничит файл приблизительно в 10 Mb.

    Value name: FileLogName
    Data Type: REG_SZ (String)
    Value data: C:\Test\w32time_log.txt

    Этот параметр определяет место и имя файла лога.

    Value name: FileLogEntries
    Data Type: REG_SZ (String)
    Value: 0-116

    Этот параметр определяет уровень детализации лога. Диапазон значений параметра 0-116.

    (Если ввести туда 0-300, то уровень детализации станет максимальным)

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

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

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

    w32tm /debug /disable

У меня этот алгоритм сработал и, наконец-то, вопрос с временем был закрыт.

Кстати, проверить что со временем все в порядке можно так:

w32tm /monitor

dc01.addomain [192.168.0.60]:
    ICMP: 0ms delay.
    NTP: +0.0009899s offset from pdcemul.addomain
        RefID: pdcemul.addomain [192.168.0.50]
dc03.addomain [192.168.0.20]:
    ICMP: 0ms delay.
    NTP: -0.0014416s offset from dc04.addomain
        RefID: pdcemul.addomain [192.168.0.50]
pdcemul.addomain *** PDC *** [192.168.0.50]:
    ICMP: 0ms delay.
    NTP: +0.0000000s offset from pdcemul.addomain
        RefID: ntp.mydomain.ua [10.10.72.17]

1 комментарий:

  1. Чудненько все написано, особенно ценю наличие инструмента проверки канала. Но есть вопрос уважаемому Знатоку:
    Внешние сервера принимают по порту 123 (UDP) - об этом написано много в том числе и у Майкрософт, но сканирование моего PDC эмулятора показывает, что 123 не числится открытым (брандмаур не глушит, касперский при сканировании выключал полностью). С другого DC синхронизация проходит без проблем, но порт 123 закрыт. Что то я не пойму как работает этот сервер времени.
    Протестю статью, результат выложу (если будет интересно читателям)

    ОтветитьУдалить