Синхронизация времени с использованием Chrony

Chrony — это служба синхронизации времени, предназначенная для точного поддержания системного времени. В отличие от классического NTP-демона, Chrony обеспечивает более высокую точность в условиях нестабильных сетей, при больших задержках, а также на системах с нерегулярной загрузкой (например, на виртуальных машинах).

Chrony состоит из двух основных компонентов:

  • chronyd — демон, выполняющий синхронизацию времени;
  • chronyc — консольная утилита для управления демоном и получения статистики.

Основной файл конфигурации размещается по адресу /etc/chrony.conf.

В базовой конфигурации определяются:

  • список внешних NTP-серверов:
ыserver ntp.server.example iburst
  • файл дрейфа часов (погрешности локального кварца):
driftfile /var/lib/chrony/drift
  • параметры доступа клиентов (при использовании Chrony как сервера):
allow 192.168.0.0/24

После внесения изменений необходимо перезапустить службу:

systemctl restart chronyd

Проверка, что служба запущена и работает корректно:

systemctl status chronyd

Служба chronyd отвечает за работу Chrony как клиента или сервера синхронизации времени. Управление службой осуществляется стандартными инструментами systemd:

  • запуск и остановка службы:
systemctl start chronyd
systemctl stop chronyd
  • включение автозапуска:
systemctl enable chronyd
  • проверка статуса:
systemctl status chronyd
  • перезагрузка службы для применения изменений конфигурации:
systemctl restart chronyd

Для проверки состояния и источников времени Chrony предоставляет две основные утилиты: chronyc tracking и chronyc sources.

Для просмотра текущего статуса синхронизации, который показывает, насколько локальное время синхронизировано с источником, используется:

chronyc tracking

Основные параметры утилиты:

  • Reference ID / Name — с каким сервером синхронизируется система;
  • Stratum — уровень источника времени;
  • Last offset — последняя измеренная временная разница;
  • Frequency — корректировка частоты локального генератора;
  • Leap status — корректность времени (normal / insert / delete).

Для вывода всех доступных серверов времени используется:

chronyc sources -v

Статусы источников указываются в выводе в колонке MS:

  • * — главный используемый источник (selected);
  • + — кандидат на использование;
  • ? — источник недоступен;
  • x — источник отклонён как неверный;
  • ~ — источник нестабилен.

Проверка смещения времени:

chronyc sourcestats

Проверка корректности локального времени (используется для принудительного мгновенного исправления времени):

chronyc makestep

Настройка Chrony в качестве сервера времени

В случае необходимости центральной синхронизации времени для группы рабочих станций Chrony может быть использован как локальный NTP-сервер. Это позволяет обеспечить единообразие времени в закрытом контуре или при отсутствии доступа к внешним серверам.

Чтобы предоставить другим узлам возможность синхронизироваться с данной машиной, в файле конфигурации /etc/chrony.conf требуется добавить строку:

allow <подсеть>

Например, для разрешения доступа внутренней сети 192.168.1.0/24:

allow 192.168.1.0/24

Необходимо убедиться, что служба chronyd запущена:

systemctl restart chronyd

Если сервер должен быть эталонным источником при отсутствии доступа к Интернету или NTP-сетям, используется директива:

local stratum 10

Директива указывает, что сервер предоставляет локальное время с определённым (не нулевым) stratum.

Для проверки доступности сервера со стороны клиента на клиентских системах необходимо выполнить команду:

chronyc sources

Сервер должен отображаться в списке источников времени со статусом "*" или "+".