Зачем серверу точное время
Расхождение системных часов на пару минут ломает вещи, которые редко проверяют вручную: TLS-сертификаты, у которых точка проверки — точное время выпуска и окончания действия; логи, которые становится невозможно сопоставить между несколькими серверами; задания cron, срабатывающие не в то время; репликацию баз данных и распределённые системы, где важен порядок событий. На VDS без гипервизорной синхронизации часы способны «уходить» на секунды в сутки — за месяц накапливается заметная погрешность.
Синхронизацию времени в современных дистрибутивах Linux обеспечивает chrony — замена классическому ntpd и встроенному systemd-timesyncd.
chrony, systemd-timesyncd и ntpd: разница
| Инструмент | Особенность |
|---|---|
| chrony | быстро сходится после перезагрузки, устойчив при нестабильной сети |
| systemd-timesyncd | минимальный клиент, входит в systemd, менее точен |
| ntpd | классическая реализация NTP, сейчас применяется реже |
Ubuntu 20.04+ и Debian 11+ по умолчанию используют systemd-timesyncd, но для серверов, где важна точность (базы данных, платёжные системы, распределённые кластеры), стоит поставить chrony — он точнее и быстрее восстанавливает синхронизацию после простоя виртуальной машины.
Установка и проверка статуса chrony
apt install -y chrony
systemctl enable --now chrony
systemctl status chrony
Работающий systemd-timesyncd стоит отключить, чтобы два клиента не конфликтовали:
systemctl disable --now systemd-timesyncd
Для CentOS, Rocky Linux и AlmaLinux пакет ставится через dnf install -y chrony, а служба называется так же — chronyd.
Настройка источников времени
Конфигурация лежит в /etc/chrony/chrony.conf (Debian/Ubuntu) или /etc/chrony.conf (RHEL-based). Источники задаются директивой pool или server:
pool 2.pool.ntp.org iburst
pool time.cloudflare.com iburst
Флаг iburst ускоряет первичную синхронизацию сразу после старта службы. После правки конфигурации служба перезапускается:
systemctl restart chrony
При настроенном файрволе для NTP открывают исходящий трафик на UDP-порт 123 — жёсткую конфигурацию стоит проверить в правилах, описанных в статье про настройку файрвола UFW.
Проверка синхронизации времени
Главные диагностические команды chrony:
chronyc tracking
chronyc sources -v
chronyc sourcestats
chronyc tracking показывает текущее расхождение (System time) и статус синхронизации (Leap status: Normal означает исправную работу). chronyc sources -v выводит список источников времени и отмечает звёздочкой (*) основной. При расхождении больше пары сотен миллисекунд длительное время проверяют сетевую связность с серверами из пула.
Частые проблемы с синхронизацией времени
- Большое расхождение сразу после старта VDS — обычно устраняется за минуту-две, пока chrony выполняет первую синхронизацию с флагом
iburst. - Файрвол блокирует UDP-порт 123 — синхронизация не происходит вовсе,
chronyc sourcesпоказывает источники со статусом «недоступен». - Часовой пояс задан неверно — отношения к NTP это не имеет, но часто путают: проверяется командой
timedatectlи правится черезtimedatectl set-timezone. - На сервере одновременно работают chrony и systemd-timesyncd — конфликт за системные часы устраняют отключением одной из служб.
Для заданий, критичных ко времени — резервного копирования по расписанию или отчётов, — стоит убедиться, что chrony синхронизирован до срабатывания задания в планировщике cron: расхождение в несколько минут сдвигает окно бэкапа или отчёта.
Итог: чек-лист по времени на сервере
- Установите chrony:
apt install -y chrony, отключите конфликтующие службы вроде systemd-timesyncd. - Задайте источники NTP в
/etc/chrony/chrony.confс флагомiburst. - Проверяйте синхронизацию командами
chronyc trackingиchronyc sources -v. - Откройте исходящий UDP-порт 123 в файрволе.
- Добавьте проверку времени в мониторинг ресурсов VDS, чтобы заметить рассинхронизацию раньше, чем она сломает бэкапы или сертификаты.