Краткий ответ
Сервер чаще всего отстает по времени из-за недоступного NTP-сервера, заблокированного UDP-порта 123 или неправильного часового пояса. Проверьте, активна ли служба NTP, успешна ли синхронизация и не слишком ли велика разница в секундах для автоматической корректировки. Если отклонение большое, сначала вручную установите приблизительное время, а затем дайте NTP завершить работу.
Как проявляется проблема
- Часы на сервере отстают или опережают реальное время на несколько минут
- В логах появляются события с неверными временными метками
- Ошибки SSL/TLS вида сертификат еще не действителен или истек
- Неудачный вход в домен или ошибки аутентификации
- Задания cron выполняются в неожиданное время
Частые причины
Служба NTP не активна
На сервере отключен или остановлен chrony, ntpd или systemd-timesyncd, поэтому часы полагаются только на локальный аппаратный таймер, который со временем отклоняется.
Трафик NTP заблокирован
Брандмауэр или сеть, в которой находится сервер, блокируют UDP-порт 123, поэтому сервер не может получить точное время ни от одного источника.
Неправильный часовой пояс
Часовой пояс настроен неверно, поэтому отображаемое время смещено на час или два, хотя сами часы точны.
Слишком большое отклонение
Если часы отклоняются больше допустимого порога, NTP не переведет их резко, а будет постепенно корректировать или откажется от синхронизации.
Виртуальная машина без синхронизации с хостом
ВМ наследует неточное время от хоста или теряет синхронизацию после миграции и приостановки, поэтому часы начинают отклоняться.
Пошаговое решение
- 1
Проверьте текущее время и статус синхронизации
Выполните
timedatectlи посмотрите поля локального времени, часового пояса и статуса синхронизации NTP. Если указано, что NTP активен, но синхронизация не выполнена, проблема в связи с источником NTP, а не в самих часах. - 2
Проверьте, какая служба времени используется
В большинстве дистрибутивов работает либо
chrony, либоsystemd-timesyncd. Проверьте статус командойsystemctl status chronyилиsystemctl status chronyd(название зависит от дистрибутива) илиsystemctl status systemd-timesyncd. Не включайте обе службы одновременно, так как они мешают друг другу. - 3
Проверьте источники NTP
Для chrony выполните
chronyc sources -vиchronyc tracking. Столбец с меткой^*показывает источник, с которым сервер синхронизирован. Если звездочки нет, сервер не получает время ни от одного источника. - 4
Проверьте доступность NTP-сервера и порт 123
Выполните
chronyc sourcestats, чтобы увидеть статистику выборки по источникам. Проверьте, что брандмауэр не блокирует исходящий UDP-порт 123 правилами вfirewall-cmdилиufw(например,firewall-cmd --list-allилиufw status verbose). Если исходящий трафик ограничен, используйте NTP-сервер, разрешенный в вашей сети. - 5
Настройте часовой пояс
Если время точное, но смещено на целый час, неверен часовой пояс. Установите его командой
timedatectl set-timezone Europe/Belgradeи проверьте, совпадает ли отображаемое время с ожидаемым. - 6
Вручную приблизьте время, если отклонение большое
Если часы отстают на несколько минут или часов, NTP может их отклонить. Остановите активную службу времени (
systemctl stop chronydилиsystemctl stop chronyилиsystemctl stop systemd-timesyncd), установите приблизительное время командойdate -s "2026-11-10 12:00:00", затем снова запустите службу. Делайте это только если уверены в точном времени, так как это влияет на все записи и задачи. - 7
Принудительно выполните синхронизацию и проверьте результат
В chrony выполните
chronyc makestep, чтобы часы сразу синхронизировались, затем сноваchronyc trackingиtimedatectl. Значение отклонения должно быть в миллисекундах и уменьшаться. - 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, установить приблизительное время и затем снова запустить ее.