Материал подготовлен командой Simple-Server для администраторов VPS и выделенных серверов. Команды и пути проверяйте на тестовой машине перед production.
Настройка NTP-сервера на Linux
Установим и настроим NTP-сервер на двух Linux-дистрибутивах — Ubuntu 22.04 и CentOS 9. Мы будем использовать Chrony — усовершенствованную и более эффективную реализацию протокола NTP, разработанную с нуля для лучшей работы при нестабильных сетевых условиях и при меньшем потреблении ресурсов, в отличие от классического NTP-демона (ntpd).
- Для дистрибутива Ubuntu необходимо использовать команду:
apt update && apt -y install chronyДля дистрибутива CentOS команда установки будет следующей:
- Основной конфигурационный файл Chrony —
chrony.conf. В Ubuntu он находится в директории/etc/chrony/, в CentOS — в/etc/. Перед тем как вносить изменения, сделаем резервную копию файла, чтобы можно было откатиться к первоначальным настройкам в случае проблем:
cp /etc/chrony/chrony.conf /etc/chrony/chrony.conf.backup
cp /etc/chrony.conf /etc/chrony.conf.backup- При помощи любого текстового редактора, например
nano, открываем на редактирование файлchrony.conf:
nano /etc/chrony/chrony.confВ дистрибутиве CentOS редактор nano по умолчанию отсутствует. Для его установки выполним команду:
Далее открываем конфигурационный файл:
Необходимо задать внешние серверы NTP, с которыми будет происходить синхронизация для получения текущего времени. Находим строки, которые начинаются со слова pool. Удалим значения по умолчанию и добавим новые адреса серверов:
pool 0.ru.pool.ntp.org iburst
pool 1.ru.pool.ntp.org iburst
pool 2.ru.pool.ntp.org iburst
pool 3.ru.pool.ntp.org iburstПараметр iburst используется для отправки пакетов с короткими интервалами при первом подключении к NTP-серверу. Это ускоряет начальную синхронизацию, особенно на медленных или ненадежных сетях, помогая быстрее установить начальное время.
- Перезапускаем сервис
chrony:
systemctl restart chronyd- Проверяем статус сервиса:
Если в выводе команды отображается active (running), то сервис успешно запущен и работает.
-
Добавляем сервис в автозагрузку:
-
Узнать подробный статус, а также получить список всех источников времени (NTP-серверов), которые знает и опрашивает Chrony, можно при помощи команды:
В частности, в поле Reference ID отображается IP-адрес сервера, с которым в данный момент синхронизируется система (источник эталонного времени).
- Дополнительно можно получить информацию об источниках времени (NTP-серверах), с которыми синхронизируется сервер через Chrony:
На этом установка и настройка сервера NTP завершена. Теперь ваш сервер будет синхронихировать время по указанным публичным NTP-серверам.
Настройка сервера NTP для синхронизации клиентских устройств
В этом разделе рассмотрим, как разрешить доступ клиентам, чтобы они могли использовать настроенный выше NTP-сервер для получения времени. Если «раздача» времени на дополнительные серверы вам не нужна, описанные ниже шаги выполнять не требуется.
- Открываем на редактирование файл
chrony.conf:
nano /etc/chrony/chrony.confВ конец файла добавим директиву allow. В качестве примера укажем IP-адрес клиентского сервера (не забудьте поменять клиентский IP адрес на свой):
Также можно указать всю подсеть сразу:
Сохраняем изменения и выходим из файла.
- Перезапускаем сервис
chrony:
systemctl restart chronyd- Проверяем статус сервиса:
Если в выводе команды отображается active (running), то сервис успешно запущен и работает.
Подключение клиентов к NTP-серверу
Перечисленные ниже команды необходимо выполнять на сервере, который будет выступать в роли клиента.
- Установим сервис
chrony.
apt update && apt -y install chrony- Открываем на редактирование конфигурационный файл
chrony.conf:
nano /etc/chrony/chrony.confУдаляем или закомментируем все строки, которые начинаются со слова pool, и меняем их на строку следующего вида:
pool 185.42.14.235 iburstГде 185.42.14.235 — это IP-адрес нашего NTP-сервера с chrony.
Сохраняем изменения и выходим из файла.
- Далее перезапускаем демон
chronyи проверяем его статус.
systemctl restart chrony && systemctl status chrony
systemctl restart chronyd && systemctl status chronydЕсли в выводе команды отображается active (running), то сервис успешно запущен и работает.
- Для проверки синхронизации времени с ранее настроенным сервером
chronyвыполняем команду:
В параметре Reference ID должен быть указан адрес нашего сервера. Если IP-адрес отображается корректно, то наш клиентский сервер успешно синхронизируется с сервером chrony.
Настройка NTP-сервера на Windows Server 2022
В Windows Server настройку NTP выполним при помощи PowerShell.
-
Открываем PowerShell. Для начала необходимо запустить службу NTP:
-
Настроим службу времени Windows для синхронизации с NTP-сервером по адресу
0.ru.pool.ntp.org:
w32tm /config /syncfromflags:manual /manualpeerlist:"0.ru.pool.ntp.org" /reliable:yes /update- Добавим конфигурацию сервера в реестр при помощи команд:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\W32Time\Parameters" -Name "Type" -Value "NTP"
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\W32Time\Config" -Name "AnnounceFlags" -Value 5
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer" -Name "Enabled" -Value 1- Перезапускаем сервис
w32time:
Restart-Service -Name w32time -Force- Стоит обратить внимание, что по умолчанию в Windows Server 2022 порт 123, который использует протокол NTP, заблокирован для входящих подключений. Создадим правило чтобы клиентские компьютеры могли получить доступ до нашего NTP сервера:
New-NetFirewallRule -DisplayName "NTP Server (UDP 123)" -Direction Inbound -Protocol UDP -LocalPort 123 -Action Allow- Проверим конфигурацию:
w32tm /query /configurationНа этом этапе настройка NTP-сервера успешно завершена.
Подключение клиентов к NTP-серверу
В этом разделе разберём, как настроить ваш сервер на «раздачу» времени — чтобы другие серверы в вашей инфраструктуре могли синхронизировать время по нему, если такая настройка вам необходима.
Перечисленные ниже действия необходимо выполнять на сервере с Windows Server, который будет выступать в роли клиента.
-
Открываем PowerShell. Для начала необходимо запустить службу NTP:
-
Настроим подключение к серверу NTP при помощи команды:
w32tm /config /syncfromflags:manual /manualpeerlist:5.129.246.154 /updateГде 5.129.246.154 — это адрес нашего NTP-сервера.
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\W32Time\Parameters" -Name "Type" -Value "NTP"- Перезапускаем сервис
w32time:
Restart-Service -Name w32time -Force-
Принудительно синхронизируем время с ранее настроенным NTP-сервером:
-
Для проверки статуса синхронизации выполним команду:
В параметре Source должен отображаться сервер с NTP, к которому мы подключились на предыдущем шаге.
Грамотная конфигурация синхронизации времени по протоколу NTP служит краеугольным камнем для обеспечения отказоустойчивости и согласованности работы всех компонентов IT-инфраструктуры. В статье мы детально разобрали, как развернуть и настроить NTP-сервер, а также его клиенты в операционных системах Linux и Windows Server.
Ключевые выгоды внедрения NTP-синхронизации заключаются в следующем:
- Необходимость : Точное время — это не удобство, а требование для работы современных сетевых протоколов безопасности, распределенных приложений и корректного анализа логов.
Необходимость : Точное время — это не удобство, а требование для работы современных сетевых протоколов безопасности, распределенных приложений и корректного анализа логов.
-
Универсальность : Несмотря на платформенные различия, принципы работы NTP едины: выбор источников и контроль синхронизации.
-
Контроль : Обязательным элементом является мониторинг для проверки статуса синхронизации и своевременного выявления расхождений.
Универсальность : Несмотря на платформенные различия, принципы работы NTP едины: выбор источников и контроль синхронизации.
Контроль : Обязательным элементом является мониторинг для проверки статуса синхронизации и своевременного выявления расхождений.
Нужен сервер для практики? Арендуйте VPS/VDS в России — root-доступ, NVMe, DDoS-защита и поддержка 24/7.