Chrony вместо ntpd
В Debian/Ubuntu и RHEL/CentOS ntpd давно пора менять на chrony. Он быстрее сходится к точному времени, лучше работает при нестабильных сетях и меньше нагружает систему. В современных дистрибутивах chrony уже стоит по умолчанию — но если он ещё не развёрнут, переход занимает минуту.
Установка
На RHEL-подобных:
На Debian/Ubuntu:
Если на машине раньше работал ntpd, остановите и отключите его, чтобы не было конфликта портов:
Конфигурация makestep
Ключевая директива в /etc/chrony/chrony.conf (или /etc/chrony.conf на RHEL) — makestep. Она определяет, как chronyd ведёт себя при старте: корректирует ли время плавно или резко.
Формат: makestep <max_offset> <max_updates>. Если смещение больше <max_offset> секунд и количество обновлений не превышает <max_updates>, chrony делает резкую корректировку вместо постепенной подстройки. По умолчанию стоит makestep 1.0 3 — три раза за первые три синхронизации допускается прыжок до 1 секунды.
Типичная ошибка — поставить makestep -1 1 и ожидать, что при старте сервер с большим смещением подстроится мгновенно. На практике отрицательное значение работает только при определённых условиях. Для надёжного старта используйте положительное число и ограничьте количество шагов.
Директива allow
По умолчанию chronyd работает только как клиент. Чтобы разрешить синхронизацию другим хостам через этот сервер, добавьте allow:
Можно указывать отдельные IP, подсети или несколько строк allow для разных сетей. Без этой директивы машина принимает запросы только от localhost.
Если нужно запретить конкретный хост, используйте deny — она работает после allow и перекрывает его:
После изменения конфигурации перезапустите службу:
Проверка через timedatectl
timedatectl показывает текущее состояние синхронизации и источник времени:
Пример вывода:
Ключевые поля для диагностики:
| Поле | Значение при проблеме | Что означает |
|---|---|---|
System clock synchronized | no | chrony ещё не догнал |
NTP service | inactive | служба не запущена или не активирована |
RTC in local TZ | yes | аппаратные часы в локальном поясе — частая проблема на виртуалках |
Для детальной информации о текущих источниках:
Если NTP service: active и System clock synchronized: yes — всё работает. Если нет, проверьте sudo systemctl status chronyd и сетевой доступ к NTP-серверам (порт 123 UDP).