Как настроить NTP сервер и синхронизацию времени в домене Active Directory
Как настроить NTP сервер и синхронизацию времени в домене Active Directory
Добрый день уважаемые читатели и гости блога pyatilistnik.org, как много люди говорят о времени, что оно быстро или медленно бежит, и все понимают, что оно бесценно и важно. Так и в инфраструктуре Active Directory, она является одним из важнейших факторов, правильного функционирования домена. В домене все друг другу доверяют, и один раз авторизовавшись и получив все тикеты от Kerberos, пользователь ходит куда угодно, ограничиваясь лишь своими доступными правами. Так вот если у вас не будет точного времени на ваших рабочих станциях к контроллеру домена, то можете считать, что у вас начинаются серьезные проблемы, о которых мы поговорим ниже и рассмотрим как их устранить с помощью настройки NTP сервера в Windows.
Синхронизация времени в Active Directory
Среди компьютеров, участвующих в Active Directory работает следующая схема синхронизация времени.
- Контроллер корневого домена в лесу AD, которому принадлежит FSMО-роль эмулятора PDC (назовем его корневым PDC), является источником времени для всех остальных контроллеров этого домена.
- Контроллеры дочерних доменов синхронизируют время с вышестоящих по топологии AD контроллеров домена.
- Рядовые члены домена (сервера и рабочие станции) синхронизируют свое время с ближайшим к ним доступным контроллером домена, соблюдая топологию AD.
Корневой PDC может синхронизировать свое время как со внешним источником, так и с самим собой, последнее задано конфигурацией по умолчанию и является абсурдом, о чем периодически намекают ошибки в системном журнале.
Синхронизация клиентов корневого PDC может осуществятся как с его внутренних часов, так и с внешнего источника. В первом случае сервер времени корневого PDC объявляет себя как «надежный» (reliable).
Далее я приведу оптимальную с моей точки зрения конфигурацию сервера времени корневого PDC, при которой сам корневой PDC периодически синхронизирует свое время от достоверного источника в интернете, а время обращающихся к нему клиентов синхронизирует со своими внутренними часами.
Вводим netdom query fsmo. В моем примере, роль PDC и NTP сервера, принадлежит контроллеру dc7
Конфигурация NTP-сервера на корневом PDC
Конфигурирование сервера времени в Windows (NTP-сервера) может осуществляться как с помощью утилиты командной строки w32tm, так и через реестр. Где возможно, я приведу оба варианта. Но в начале посмотрите полностью ваши настройки на компьютере, делается это командой:
EventLogFlags: 2 (Локально)
AnnounceFlags: 10 (Локально)
TimeJumpAuditOffset: 28800 (Локально)
MinPollInterval: 6 (Локально)
MaxPollInterval: 10 (Локально)
MaxNegPhaseCorrection: 172800 (Локально)
MaxPosPhaseCorrection: 172800 (Локально)
MaxAllowedPhaseOffset: 300 (Локально)
FrequencyCorrectRate: 4 (Локально)
PollAdjustFactor: 5 (Локально)
LargePhaseOffset: 50000000 (Локально)
SpikeWatchPeriod: 900 (Локально)
LocalClockDispersion: 10 (Локально)
HoldPeriod: 5 (Локально)
PhaseCorrectRate: 7 (Локально)
UpdateInterval: 100 (Локально)
NtpClient (Локально)
DllName: C:\Windows\system32\w32time.dll (Локально)
Enabled: 1 (Локально)
InputProvider: 1 (Локально)
CrossSiteSyncFlags: 2 (Локально)
AllowNonstandardModeCombinations: 1 (Локально)
ResolvePeerBackoffMinutes: 15 (Локально)
ResolvePeerBackoffMaxTimes: 7 (Локально)
CompatibilityFlags: 2147483648 (Локально)
EventLogFlags: 1 (Локально)
LargeSampleSkew: 3 (Локально)
SpecialPollInterval: 3600 (Локально)
Type: NT5DS (Локально)
NtpServer (Локально)
DllName: C:\Windows\system32\w32time.dll (Локально)
Enabled: 1 (Локально)
InputProvider: 0 (Локально)
AllowNonstandardModeCombinations: 1 (Локально)
VMICTimeProvider (Локально)
DllName: C:\Windows\System32\vmictimeprovider.dll (Локально)
Enabled: 1 (Локально)
InputProvider: 1 (Локально)
Включение синхронизации внутренних часов с внешним источником
- [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters]
«Type»=»NTP» - w32tm /config /syncfromflags:manual
Объявление NTP-сервера в качестве надежного
- [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config]
«AnnounceFlags»=dword:0000000a - w32tm /config /reliable:yes
NTP-сервер по умолчанию включен на всех контроллерах домена, однако его можно включить и на рядовых серверах.
- [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer]
«Enabled»=dword:00000001
Задание списка внешних источников для синхронизации
- [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters]
«NtpServer»=»time.nist.gov,0x8 ntp1.imvp.ru,0x8 ntp2.imvp.ru,0x8 time.windows.com,0x8 ru.pool.ntp.org,0x8» - w32tm /config /manualpeerlist:»time.nist.gov,0x8 ntp1.imvp.ru,0x8 ntp2.imvp.ru,0x8 time.windows.com,0x8 ru.pool.ntp.org,0x8″
Флаг 0×8 на конце означает, что синхронизация должна происходить в режиме клиента NTP, через предложенные этим сервером интервалы времени. Для того, чтобы задать свой интервал синхронизации, необходимо использовать флаг 0×1.
Задание интервала синхронизации с внешним источником
Время в секундах между опросами источника синхронизации, по умолчанию 900с = 15мин. Работает только для источников, помеченных флагом 0×1.
- [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient]
«SpecialPollInterval»=dword:00000384
Установка минимальной положительной и отрицательной коррекции
Максимальная положительная и отрицательная коррекция времени (разница между внутренними часами и источником синхронизации) в секундах, при превышении которой синхронизация не происходит. Рекомендую значение 0xFFFFFFFF, при котором коррекция сможет производиться всегда.
«MaxPosPhaseCorrection»=dword:FFFFFFFF
«MaxNegPhaseCorrection»=dword:FFFFFFFF
Все необходимое одной строкой
w32tm.exe /config /manualpeerlist:»time.nist.gov,0x8 ntp1.imvp.ru,0x8 ntp2.imvp.ru,0x8 time.windows.com,0x8 pool.ntp.org,0x8″ /syncfromflags:manual /reliable:yes /update
Полезные команды
- Применение внесенных в конфигурацию службы времени изменений
w32tm /config /update - Принудительная синхронизация от источника
w32tm /resync /rediscover - Отображение состояния синхронизации контроллеров домена в домене
w32tm /monitor - Отображение текущих источников синхронизации и их статуса
w32tm /query /peers
Настройка NTP сервера и клиента групповой политикой
Раз уж у нас с вами домен Active Directory, то глупо не использовать групповые политики, для массовой настройки серверов и рабочих станций, я покажу как настроить ваш NTP сервер в windows и клиента. Открываем оснастку «Редактор групповых политик». Перед тем как настроить наш NTP сервер в Windows, нам необходимо создать WMI фильтр, который будет применять политику, только к серверу мастера PDC.
Вводим имя запроса, пространство имен, будет иметь значение «root\CIMv2» и запрос «Select * from Win32_ComputerSystem where DomainRole = 5». Сохраняем его.
Затем вы создаете политику на контейнере Domain Controllers.
В самом низу политики применяете ваш созданный WMI фильтр.
Переходим в ветку: Конфигурация компьютера > Политики > Административные шаблоны > Система > Служба времени Windows > Поставщики времени.
Тут открываем политику «Настроить NTP-клиент Windows». Задаем параметры
- NtpServer: 0.ru.pool.ntp.org,0x1 1.ru.pool.ntp.org,0x1 2.ru.pool.ntp.org,0x1 3.ru.pool.ntp.org,0x1
- Type: NTP
- CrossSiteSyncFlags: 2. Двойка означает, если этот параметр равен 2 (Все), можно использовать любого участника синхронизации. Это значение игнорируется, если не задано значение NT5DS. Значение по умолчанию: 2 (десятичное) (0x02 (шестнадцатеричное))
- ResolvePeerBackoffMinutes: 15. Это значение, выраженное в минутах, определяет интервал ожидания службы W32time перед попыткой разрешения DNS-имени в случае неудачи. Значение по умолчанию: 15 минут
- Resolve Peer BAckoffMaxTimes: 7. Это значение определяет число попыток разрешения DNS-имени, предпринимаемых службой W32time перед перезапуском процесса обнаружения. При каждом неудачном разрешении DNS-имени интервал ожидания перед следующей попыткой удваивается. Значение по умолчанию: семь попыток.
- SpecilalPoolInterval: 3600. Это значение параметра NTP-клиента, выраженное в секундах, определяет частоту опроса настроенного вручную источника времени, который использует особый интервал опроса. Если для параметра NTPServer установлен флаг SpecialInterval, клиент использует значение, заданное как SpecialPollInterval, вместо значений MinPollInterval и MaxPollInterval, чтобы определить частоту опроса источника времени. Значение по умолчанию: 3600 секунд (1 час).
- EventLogFlags: 0
Делаем отдельную групповую политику для клиентских рабочих машин, вот с такими параметрами.
- NtpServer: Адрес вашего контроллера домена с ролью PDC.
- Type: NT5DS
- CrossSiteSyncFlags: 2
- ResolvePeerBackoffMinutes: 15
- Resolve Peer BAckoffMaxTimes: 7
- SpecilalPoolInterval: 3600
- EventLogFlags: 0
Далее идем на клиента и обновляем групповые политики gpupdate /force и вводим команду w32tm /query /status
Особенности виртуализированных контроллеров домена
Контроллеры домена, работающие в виртуализированной среде, требуют к себе особенного отношения.
- Средства синхронизации времени виртуальной машины и хостовой ОС должны быть выключены. Во всех адекватных системах виртуализации (Microsoft, vmWare и т. д.) присутствуют компоненты интеграции гостевой ОС с хостовой, которые значительно повышают производительность и управляемость гостевой системой. Среди этих компонентов всегда есть средство синхронизации времени гостевой ОС с хостовой, которое очень полезно для рядовых машин, но противопоказано для контроллеров домена. Потому как в этом случае весьма вероятен цикл, при котором контроллер домена и хостовая ОС будут синхронизировать друг друга. Последствия печальны.
- Для корневого PDC синхронизация с внешним источником должна быть настроена всегда. В виртуальной среде часы не настолько точны как в физической, потому как виртуальная машина работает с виртуальным процессором и прерываниями, для которых характерно как замедление, так и ускорение относительно «обычной» частоты. Если не настроить синхронизацию виртуализированного корневого PDC с внешним источником, время на всех компьютерах предприятия может убегать/отставать на пару часов в сутки. Не трудно представить неприятности, которые может принести такое поведение.
Синхронизируем время в Windows 7
Не секрет, что даже электроника не может достичь абсолютной точности. Об этом свидетельствует хотя бы то, что через определенный период системные часы компьютера, которые отображаются в нижнем правом углу экрана, могут иметь расхождение с реальным временем. Для предотвращения подобной ситуации существует возможность синхронизации с интернет-сервером точного времени. Посмотрим, как это осуществляется на практике в Windows 7.
Процедура синхронизации
Главным условием, при котором можно осуществить синхронизацию часов, является наличие интернет-подключения на компьютере. Синхронизировать часы можно двумя способами: при помощи стандартных инструментов Windows и применив стороннее программное обеспечение.
Способ 1: синхронизация времени при помощи сторонних программ
Разберемся, как синхронизировать время через интернет при помощи сторонних программ. Прежде всего, требуется выбрать софт для установки. Одной из лучших программ в этом направлении считается SP TimeSync. Она позволяет синхронизировать время на ПК с любыми атомными часами, доступными в интернете через протокол времени NTP. Разберемся, как её установить и как в ней работать.
- После запуска установочного файла, который расположен в скачанном архиве, открывается приветственное окно инсталлятора. Щелкните «Next».
В следующем окне требуется определить, в какое место на компьютере будет инсталлировано приложение. По умолчанию это папка программ на диске C. Без существенной необходимости не рекомендуется изменять данный параметр, так что просто щелкайте «Next».
Запускается процесс инсталляции SP TimeSync на ПК.
Далее открывается окно, в котором говорится об окончании установки. Для его закрытия щелкните «Close».
Для запуска приложения щелкните по кнопке «Пуск» в нижнем левом углу экрана. Далее перейдите по наименованию «Все программы».
Отобразится иконка SP TimeSync. Кликните по указанному значку.
Данное действие инициирует запуск окошка приложения SP TimeSync во вкладке «Время». Пока что в окошке отображается только локальное время. Чтобы отобразилось серверное, время щелкните по кнопке «Получить время».
Как видим, теперь одновременно в окошке SP TimeSync отображается и локальное, и серверное время. Также отображаются такие показатели, как разница, задержка, старт, версия NTP, точность, актуальность и источник (в виде IP-адреса). Для того, чтобы синхронизировать компьютерные часы, нажмите «Задать время».
После данного действия локальное время ПК приведено в соответствии с серверным, то есть, синхронизировано с ним. Все остальные показатели сброшены. Чтобы снова сравнить локальное время с серверным, опять нажмите «Получить время».
Как видим, на этот раз разница совсем маленькая (0,015 сек). Это обусловлено тем, что синхронизация проводилась совсем недавно. Но, конечно, не очень удобно каждый раз синхронизировать время на компьютере вручную. Чтобы настроить этот процесс автоматически, перейдите во вкладку «NTP-клиент».
- Секунды;
- Минуты;
- Часы;
- Сутки.
К примеру, зададим интервал в 90 секунд.
В поле «NTP сервер» при желании можно указать адрес любого другого сервера синхронизации, если тот, который установлен по умолчанию (pool.ntp.org) вам по каким-то причинам не подходит. В поле «Локальный порт» лучше не вносить изменения. По умолчанию там установлено число «0». Это означает, что программа подключается к любому свободному порту. Это наиболее оптимальный вариант. Но, конечно, если вы по определенным причинам желаете назначить для SP TimeSync определенный номер порта, то можете это сделать, вписав его в данное поле.
- Время попытки;
- Число успешных попыток;
- Предельное число попыток.
Но, так как мы описываем бесплатную версию SP TimeSync, то останавливаться на этих возможностях не будем. А для дальнейшей настройки программы переместимся во вкладку «Параметры».
Тут, прежде всего, нас интересует пункт «Запускать при старте Windows». Если вы желаете, чтобы SP TimeSync автоматически запускался при старте компьютера, а не делать это каждый раз вручную, то около указанного пункта поставьте галочку. Кроме того, можно установить галочки напротив пунктов «Сворачивать иконку в трее» и «Запускать со свернутым окном». Установив данные настройки, вы даже не будет замечать, что программа SP TimeSync работает, так как все действия по синхронизации времени через установленный интервал она будет проводить в фоновом режиме. Окно нужно будет вызвать только в том случае, если вы решите произвести корректировку ранее выставленных настроек.
Кроме этого, для пользователей версии Pro доступна возможность использования протокола IPv6. Для этого нужно просто установить галочку около соответствующего пункта.
В поле «Язык» при желании можно выбрать из списка один из 24 доступных языков. По умолчанию установлен язык системы, то есть, в нашем случае русский. Но доступны английский, белорусский, украинский, немецкий, испанский, французский и многие другие языки.
Таким образом, мы настроили программу SP TimeSync. Теперь каждые 90 секунд будет происходить автоматическое обновление времени Windows 7 в соответствии с серверным временем, причем все это выполняется в фоновом режиме.
Способ 2: синхронизация в окне «Дата и время»
Для того, чтобы синхронизировать время, использовав встроенные возможности Windows, требуется выполнить следующий алгоритм действий.
- Кликните по системным часам, расположенным в нижнем углу экрана. В открывшемся окне переместитесь по надписи «Изменение настроек даты и времени».
После запуска окна перейдите в раздел «Время по Интернету».
Если в данном окне указано, что компьютер не настроен на автоматическую синхронизацию, то в этом случае щелкните по надписи «Изменить параметры…».
Запускается окно настройки. Установите галочку около пункта «Синхронизировать с сервером времени в интернете».
После выполнения данного действия поле «Сервер», которое до этого было неактивным, становится активным. Кликните по нему, если желаете выбрать сервер отличный от того, который установлен по умолчанию (time.windows.com), хотя это не обязательно. Выберите подходящий вариант.
После этого можно провести немедленную синхронизацию с сервером, нажав «Обновить сейчас».
После выполнения всех настроек жмите «OK».
В окне «Дата и время» тоже жмите «OK».
Теперь ваше время на компьютере будет синхронизироваться со временем выбранного сервера с периодичностью раз в неделю. Но, если вы захотите установить другой период автоматической синхронизации, то это будет не так просто сделать, как в предыдущем способе с использованием стороннего софта. Дело в том, что в пользовательском интерфейсе Windows 7 просто не предусмотрено изменение данной настройки. Поэтому придется вносить корректировки в системный реестр.
Это очень ответственное дело. Поэтому, прежде чем переходить к процедуре, хорошо подумайте, так ли вам необходимо изменять интервал автоматической синхронизации, и готовы ли вы справиться с данной задачей. Хотя необычайно сложного тут ничего нет. Просто следует подходить к делу ответственно, во избежание фатальных последствий.
Если вы все-таки приняли решение вносить изменения, то вызовите окно «Выполнить», набрав комбинацию Win+R. В поле данного окошка впишите команду:
Открывается окно редактора системного реестра Windows 7. В левой его части расположены разделы реестра, представленные в виде размещенных в древовидной форме каталогов. Перейдите в раздел «HKEY_LOCAL_MACHINE», дважды кликнув по его наименованию левой кнопкой мыши.
Далее таким же образом перейдите последовательно в подразделы «SYSTEM», «CurrentControlSet» и «Services».
Открывается очень большой перечень подразделов. Ищите в нем наименование «W32Time». Кликните по нему. Далее перейдите в подразделы «TimeProviders» и «NtpClient».
В правой части редактора реестра представлены параметры подраздела «NtpClient». Кликните дважды по параметру «SpecialPollInterval».
Запускается окно изменения параметра «SpecialPollInterval».
По умолчанию значения в нем заданы в шестнадцатеричной системе исчисления. С данной системой хорошо работать компьютеру, но для обычного пользователя она непонятна. Поэтому в блоке «Система исчисления» переводите переключатель в положение «Десятичная». После этого в поле «Значение» отобразится число 604800 в десятичной системе измерения. Это число отображает количество секунд, через которые производится синхронизация часов ПК с сервером. Нетрудно подсчитать, что 604800 секунд равно 7 дням или 1 неделе.
В поле «Значение» окна изменения параметра «SpecialPollInterval» вписываем время в секундах, через которое мы желаем синхронизировать часы компьютера с сервером. Конечно, желательно, чтобы данный интервал был меньше, чем тот, который установлен по умолчанию, а не больше. Но это уже каждый пользователь решает для себя сам. Мы же в качестве примера установим значение 86400. Таким образом, процедура синхронизации будет выполняться 1 раз в сутки. Жмем «OK».
Таким образом, мы настроили автоматическую синхронизацию локальных часов ПК со временем сервера с периодичностью 1 раз в день.
Способ 3: командная строка
Следующий способ для запуска синхронизации времени подразумевает использование командной строки. Основное условие состоит в том, чтобы перед началом процедуры вы вошли в систему под учетным именем с правами администратора.
- Но даже использование учетного имени с административными возможностями не позволит запустить командную строку обычным способом с помощью введения выражения «cmd» в окне «Выполнить». Для запуска командной строки от лица администратора, жмите «Пуск». В списке выберите «Все программы».
Запускается перечень приложений. Кликните по папке «Стандартные». В ней будет располагаться объект «Командная строка». Щелкните правой кнопкой мыши по указанному наименованию. В контекстном списке остановите выбор на позиции «Запуск от имени администратора».
Происходит открытие окна командной строки.
В строку после названия учетной записи следует вставить следующее выражение:
w32tm /config /syncfromflags:manual /manualpeerlist:time.windows.com
В данном выражении значение «time.windows.com» означает адрес сервера, с которым будет выполнена синхронизация. Если вы хотите, то можете заменить его на любой другой, например, «time.nist.gov» или «timeserver.ru».
Конечно, вбивать вручную в командную строку данное выражение не слишком удобно. Его можно скопировать и вставить. Но дело в том, что командная строка не поддерживает стандартные способы вставки: через Ctrl+V или контекстное меню. Поэтому многие пользователи думают, что вставка в данном режиме вообще не работает, но это не так.
Скопируйте с сайта вышеуказанное выражение любым стандартным способом (Ctrl+C или через контекстное меню). Перейдите в окно командной строки и щелкните по её логотипу в левом углу. В открывшемся списке последовательно перейдите по пунктам «Изменить» и «Вставить».
После того, как выражение вставлено в командную строку, жмите Enter.
Вслед за этим должно появиться сообщение, что команда успешно выполнена. Закройте окно, щелкнув на стандартный значок закрытия.
Синхронизировать время в Windows 7 можно, как применяя стороннее программное обеспечение, так и использовав внутренние возможности операционной системы. Причем, сделать это можно различными способами. Каждый пользователь просто должен выбрать более подходящий лично для себя вариант. Хотя объективно использование стороннего ПО более удобно, чем применение встроенных инструментов ОС, но нужно учесть, что установка сторонних программ создает дополнительную нагрузку на систему (пусть и небольшую), а также может являться источником уязвимостей для действий злоумышленников.
























































