Chrony

В системах базирующихся на SystemD клиентом синхронизации времени, по умолчанию, выступает служба systemd-timesyncd.

Эта служба использует конфиг /etc/systemd/timesyncd.conf, именно в нём прописаны NTP сервера с которыми сервер синхронизирует своё время.

Сервера времени называют NTP серверами, так как они используют NTP протокол. Для Linux таких серверов несколько, например chronyntpopenntpd.

# apt install chrony

При установке этого пакета будет создана одноименная служба, которая будет запущена и помещена в автозапуск. А служба systemd-timesyncd будет выключена.

Конфигом для службы является файл /etc/chrony/chrony.conf. В нем нужно закомментировать используемый пул и добавить свои NTP сервера. А также можно указать разрешённую сеть для клиентов:

# nano /etc/chrony/chrony.conf
server 0.ru.pool.ntp.org iburst
server 1.ru.pool.ntp.org iburst
server 2.ru.pool.ntp.org iburst
server 3.ru.pool.ntp.org iburst
allow 192.168.0.0/24
stratumweight 0
driftfile /var/lib/chrony/drift
makestep 10 3
logdir /var/log/chrony

Приведенная выше конфигурация содержит следующую информацию:

  • server — данная директива описывает NTP-сервер, с которым необходимо синхронизироваться.
  • stratumweight — какую задержку следует добавить к источнику синхронизации для каждой группы. Значение по умолчанию — 0,0001.
  • driftfile —расположение и имя файла, содержащего данные смещения.
  • Makestep — эта директива заставляет сервис постепенно корректировать любое смещение во времени путем снижения скорости или замедления хода часов по мере необходимости.
  • logdir — путь к файлу журнала chrony.
После настройки сервера нужно перезапустить службу:
# systemctl restart chrony
Проверим источники времени. Опция -N указывает что нужно вывести оригинальные имена источников времени:
# chronyc -N sources
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^- 0.ru.pool.ntp.org 2 8 377 197 +1306us[+1337us] +/- 134ms
^- 1.ru.pool.ntp.org 2 7 377 524 +35ms[ +35ms] +/- 100ms
^- 2.ru.pool.ntp.org 2 7 377 67 -476us[ -476us] +/- 81ms
^* 3.ru.pool.ntp.org 1 9 377 67 -197us[ -164us] +/- 14ms

В выводе, сервер обозначенный звездочкой (3.ru.pool.ntp.org) является наилучшим и текущем сервером для синхронизации времени.

Сервер времени chrony, также как и другие NTP сервера слушает порт udp 123:

$ sudo ss -ulpn | grep chronyd
UNCONN 0 0 127.0.0.1:323 0.0.0.0:* users:((«chronyd»,pid=1507,fd=5))
UNCONN 0 0 0.0.0.0:123 0.0.0.0:* users:((«chronyd»,pid=1507,fd=7))
UNCONN 0 0 [::1]:323 [::]:* users:((«chronyd»,pid=1507,fd=6))
Кроме этого, вы можете посмотреть количество активных и не активных источников:
# chronyc activity
200 OK
4 sources online
0 sources offline
0 sources doing burst (return to online)
0 sources doing burst (return to offline)
0 sources with unknown address
Теперь нужно, на остальных серверах, прописать наш сервер Chrony в качестве источника синхронизации времени. Для этого укажем его адрес в /etc/systemd/timesyncd.conf на остальных серверах.
Также, на сервере времени вы можете посмотреть клиентов, которые к нему подключились:
# chronyc clients
Hostname        NTP Drop Int IntL Last Cmd Drop Int Last
===============================================================================
192.168.0.2          4        0       5     —        5        0          0      —      —

В выводе:

  • Hostname — имя или адрес клиента;
  • NTP — количество NTP-пакетов, полученных от клиентов;
  • Drop — сколько NTP-пакетов было отброшено из-за ограничения скорости отклика;
  • Int — средний интервал между NTP-пакетами;
  • Last — время с момента получения последнего NTP-пакета;

Чтобы проверить, синхронизирован ли chrony на самом деле, мы будем использовать его программу командной строки chronyc, которая имеет опцию отслеживания для предоставления соответствующей информации.

# chronyc tracking
chronyc

Перечисленные пункты содержат следующую информацию:

  • Reference ID — идентификатор и имя, с которым компьютер в настоящее время синхронизирован.
  • Stratum — количество переходов к компьютеру с установленными основными часами.
  • Ref time — это время по Гринвичу, в которое было выполнено последнее измерение из эталонного источника.
  • System time — задержка системных часов от синхронизированного сервера.
  • Last offset — расчетное смещение последнего обновления часов.
  • RMS offset — долгосрочное среднее арифметическое значения смещения.
  • Frequency — это частота, на которой часы системы будут работать неправильно, если хронограф не проведет коррекцию. Она выражена в ppm — ч/м (частей на миллион).
  • Residual freq — остаточная частота указывает на разницу между измерениями от опорного источника и используемой в настоящее время частотой.
  • Skew — расчетная погрешность, связанная с погрешностью частоты.
  • Root delay — суммарная задержка сетевого пути к опорному серверу, с которым синхронизируется компьютер.
  • Leap status — это статус, который может иметь одно из следующих значений — нормальное, добавить второй, удалить второй или не синхронизироваться.

 

Если нужно немедленно перейти к настройке системных часов и игнорировать текущие настройки, воспользуйтесь следующей командой: