Перейти к содержимому
EVI Solutions

Синхронизация времени на сервере: почему отстает и как исправить

Средне 20 мин Обновлено:

Краткий ответ

Сервер чаще всего отстает по времени из-за недоступного NTP-сервера, заблокированного UDP-порта 123 или неправильного часового пояса. Проверьте, активна ли служба NTP, успешна ли синхронизация и не слишком ли велика разница в секундах для автоматической корректировки. Если отклонение большое, сначала вручную установите приблизительное время, а затем дайте NTP завершить работу.

Как проявляется проблема

  • Часы на сервере отстают или опережают реальное время на несколько минут
  • В логах появляются события с неверными временными метками
  • Ошибки SSL/TLS вида сертификат еще не действителен или истек
  • Неудачный вход в домен или ошибки аутентификации
  • Задания cron выполняются в неожиданное время

Частые причины

Служба NTP не активна

На сервере отключен или остановлен chrony, ntpd или systemd-timesyncd, поэтому часы полагаются только на локальный аппаратный таймер, который со временем отклоняется.

Трафик NTP заблокирован

Брандмауэр или сеть, в которой находится сервер, блокируют UDP-порт 123, поэтому сервер не может получить точное время ни от одного источника.

Неправильный часовой пояс

Часовой пояс настроен неверно, поэтому отображаемое время смещено на час или два, хотя сами часы точны.

Слишком большое отклонение

Если часы отклоняются больше допустимого порога, NTP не переведет их резко, а будет постепенно корректировать или откажется от синхронизации.

Виртуальная машина без синхронизации с хостом

ВМ наследует неточное время от хоста или теряет синхронизацию после миграции и приостановки, поэтому часы начинают отклоняться.

Пошаговое решение

  1. 1

    Проверьте текущее время и статус синхронизации

    Выполните timedatectl и посмотрите поля локального времени, часового пояса и статуса синхронизации NTP. Если указано, что NTP активен, но синхронизация не выполнена, проблема в связи с источником NTP, а не в самих часах.

  2. 2

    Проверьте, какая служба времени используется

    В большинстве дистрибутивов работает либо chrony, либо systemd-timesyncd. Проверьте статус командой systemctl status chrony или systemctl status chronyd (название зависит от дистрибутива) или systemctl status systemd-timesyncd. Не включайте обе службы одновременно, так как они мешают друг другу.

  3. 3

    Проверьте источники NTP

    Для chrony выполните chronyc sources -v и chronyc tracking. Столбец с меткой ^* показывает источник, с которым сервер синхронизирован. Если звездочки нет, сервер не получает время ни от одного источника.

  4. 4

    Проверьте доступность NTP-сервера и порт 123

    Выполните chronyc sourcestats, чтобы увидеть статистику выборки по источникам. Проверьте, что брандмауэр не блокирует исходящий UDP-порт 123 правилами в firewall-cmd или ufw (например, firewall-cmd --list-all или ufw status verbose). Если исходящий трафик ограничен, используйте NTP-сервер, разрешенный в вашей сети.

  5. 5

    Настройте часовой пояс

    Если время точное, но смещено на целый час, неверен часовой пояс. Установите его командой timedatectl set-timezone Europe/Belgrade и проверьте, совпадает ли отображаемое время с ожидаемым.

  6. 6

    Вручную приблизьте время, если отклонение большое

    Если часы отстают на несколько минут или часов, NTP может их отклонить. Остановите активную службу времени (systemctl stop chronyd или systemctl stop chrony или systemctl stop systemd-timesyncd), установите приблизительное время командой date -s "2026-11-10 12:00:00", затем снова запустите службу. Делайте это только если уверены в точном времени, так как это влияет на все записи и задачи.

  7. 7

    Принудительно выполните синхронизацию и проверьте результат

    В chrony выполните chronyc makestep, чтобы часы сразу синхронизировались, затем снова chronyc tracking и timedatectl. Значение отклонения должно быть в миллисекундах и уменьшаться.

  8. 8

    Проверьте, что синхронизация поддерживается

    Подождите несколько минут и повторите timedatectl. Если часы снова смещаются, проверьте, включена ли служба командой systemctl is-enabled chronyd или systemctl is-enabled chrony (название зависит от дистрибутива) и, если нет, включите ее командой systemctl enable chronyd или systemctl enable chrony. Проверьте также, не сбрасывает ли ее что-то другое, например синхронизация с хостом у виртуальной машины.

Если ничего не помогает: углубленная проверка и виртуализация

Если часы продолжают смещаться, хотя NTP активен, проверьте системные логи (journalctl -u chronyd или journalctl -u chrony) и наличие ошибок при связи с источниками. У виртуальных машин проверьте настройки синхронизации времени с хостом и отключите ее, если она конфликтует со службой NTP внутри гостя. На физических серверах проверьте батарейку на материнской плате и состояние аппаратных часов, так как разряженная батарейка вызывает большие отклонения после перезагрузки. Если сервер использует домен, проверьте, является ли он членом домена и получает ли время от контроллера домена. Для сред с несколькими серверами лучше, чтобы один сервер был внутренним источником NTP, а остальные синхронизировались с ним.

Как избежать повторения

  • Держите службу NTP включенной и регулярно проверяйте статус синхронизации
  • Разрешите UDP-порт 123 к надежным источникам NTP в правилах брандмауэра
  • Настройте правильный часовой пояс сразу при установке сервера
  • Следите за отклонением часов через мониторинг и подавайте сигнал тревоги, если оно превышает несколько секунд

Когда лучше обратиться к специалисту

Если часы смещаются и после проверки службы NTP, брандмауэра и часового пояса, или если сервер является частью домена с несколькими контроллерами, лучше вызвать ИТ-поддержку для проверки синхронизации на уровне всей сети.

Обслуживание ИТ-инфраструктуры · Серверы, сети, резервное копирование, безопасность и helpdesk

Частые вопросы

Какое отклонение часов на сервере допустимо?

Для большинства серверов отклонение в несколько десятков миллисекунд нормально и безопасно. Отклонение более одной секунды может вызвать проблемы с аутентификацией и логами, а более нескольких минут почти всегда приводит к ошибкам в работе приложений.

Почему часы отстают, хотя NTP включен?

Чаще всего потому, что сервер не может получить ответ от источника NTP из-за брандмауэра или недоступной сети. Проверьте `chronyc sources -v` и статус службы, так как включенная служба не означает, что синхронизация действительно успешна.

Можно ли вручную изменить время на сервере?

Можно, но только если отклонение большое и вы уверены в точном времени. Ручное изменение влияет на логи, задания cron и сессии, поэтому лучше сначала остановить службу NTP, установить приблизительное время и затем снова запустить ее.

Поделиться
Не нашли решение?ИИ-помощник работает 24/7. Опишите проблему или отправьте скриншот ошибки и получите инструкцию для вашего случая.Спросить ИИ-помощника