В системах базирующихся на SystemD клиентом синхронизации времени, по умолчанию, выступает служба systemd-timesyncd.
Эта служба использует конфиг /etc/systemd/timesyncd.conf, именно в нём прописаны NTP сервера с которыми сервер синхронизирует своё время.
Сервера времени называют NTP серверами, так как они используют NTP протокол. Для Linux таких серверов несколько, например chrony, ntp, openntpd.
# apt install chrony
При установке этого пакета будет создана одноименная служба, которая будет запущена и помещена в автозапуск. А служба systemd-timesyncd будет выключена.
Конфигом для службы является файл /etc/chrony/chrony.conf. В нем нужно закомментировать используемый пул и добавить свои NTP сервера. А также можно указать разрешённую сеть для клиентов:
# nano /etc/chrony/chrony.confserver 0.ru.pool.ntp.org iburstserver 1.ru.pool.ntp.org iburstserver 2.ru.pool.ntp.org iburstserver 3.ru.pool.ntp.org iburstallow 192.168.0.0/24stratumweight 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
# chronyc -N sourcesMS 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 chronydUNCONN 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 activity200 OK4 sources online0 sources offline0 sources doing burst (return to online)0 sources doing burst (return to offline)0 sources with unknown address
# chronyc clientsHostname 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
Перечисленные пункты содержат следующую информацию:
- Reference ID — идентификатор и имя, с которым компьютер в настоящее время синхронизирован.
- Stratum — количество переходов к компьютеру с установленными основными часами.
- Ref time — это время по Гринвичу, в которое было выполнено последнее измерение из эталонного источника.
- System time — задержка системных часов от синхронизированного сервера.
- Last offset — расчетное смещение последнего обновления часов.
- RMS offset — долгосрочное среднее арифметическое значения смещения.
- Frequency — это частота, на которой часы системы будут работать неправильно, если хронограф не проведет коррекцию. Она выражена в ppm — ч/м (частей на миллион).
- Residual freq — остаточная частота указывает на разницу между измерениями от опорного источника и используемой в настоящее время частотой.
- Skew — расчетная погрешность, связанная с погрешностью частоты.
- Root delay — суммарная задержка сетевого пути к опорному серверу, с которым синхронизируется компьютер.
- Leap status — это статус, который может иметь одно из следующих значений — нормальное, добавить второй, удалить второй или не синхронизироваться.
Если нужно немедленно перейти к настройке системных часов и игнорировать текущие настройки, воспользуйтесь следующей командой:
# chronyc makestep