Как работает Chrony клиент Linux

Введение.

Этой публикацией заканчивается серия статей о работе NTP Linux. Напомним, в предыдущих публикациях рассматривались вопросы использования OpenNTP и NTPD в дистрибутиве ALT Linux сервер. Теперь давайте разберёмся, как устроена работа NTP на уровне рабочей станции ALT Linux из «коробки». Разговор пойдёт не о сервере NTP, а клиенте NTP установленного на рабочей станции, по умолчанию, для синхронизации времени с доменом организации. От правильной работы службы времени на рабочей станции зависит работа многих служб; LDAP, SMTP, ftp, SAMBA, GIFS ..

Подготовка.

  • Стенд:
  • ALT Linux, имя lin-ntp; ip-10.0.2.11;
  • Simply Linux, имя: lin-sl, IP=10.0.2.33

У нас имеется ALT Linux Simply Linux. Воспользуемся графическим менеджером пакетов Synaptic и посмотрим какие NTP установлены из «коробки». Нас интересуют не утилиты NTP, а клиент NTP для синхронизации времени ПК.

Вид: synaptic, поиск клиента ntp.
Вид: synaptic, поиск клиента ntp.

Поиск в Synaptic выявил chrony — клиентскую программу для синхронизации времени с NTP сервером.

Программа chrony состоит из двух частей: фонового демона chronyd и утилиты командной строки chronic, лицензия GPLv2. Сам chrond хорош тем, что может работать в медленных сетях, где возможны отключение интернета. Страна у нас большая, погодные и природные условия разные, всё это может приводить к временным отключениям и сбоям в сети.

Задача chrony клиента сводится к проверки соединения с сервером NTP. Клиент периодически отправляет запросы на сервер NTP, для мягкой коррекции времени. Период синхронизации с опорными часами проходит примерно через ~ 10 мин.

Клиент chrony, допускает установку времени на ПК без синхронизации с сервером NTP. Используя всё, что есть под руками; наручные часы, GPS, ГЛОНАСС, по солнцу и т.д. В дальнейшем, при соединение с сервером NTP, время на ПК «догонит» эталонное значение на сервере. В службах ntpd и openntpd время можно только корректировать, без разрыва связи с сервером NTP.

Установка chrony.

Убедимся, что chrony установлен на рабочей станции.

# apt-cache search chrony
chrony - Chrony clock synchronization program
...

Управление chrony.

Выполнить управление chrony можно следующими командами.

# systemctl start|enable|stop|restart|status chronyd

Рассмотрим файл конфигурации /etc/chrony.conf.


driftfile /var/lib/chrony/drift
...
makestep 1.0 3
...
rtcsync

logdir /var/log/chrony
...
pool lin-ntp iburst
  • Пояснения:
    • driftfile — записывает время +/- дрейфа системных часов при старте
    • makestep — пошаговая коррекция времени, 1 сек 3 шага
    • rtcsync — синхронизацию ядра с часами реального времени
    • logdir — журнал
    • pool — сервер опорного времени

Программы для работы chrony.

Проверить работу chrony клиента можно, с помощью утилит из пакета для диагностики службы времени, в устройствах ОС linux.

chronyc

Утилита командной строки имеет широкий набор инструкций, некоторые из которых приводятся ниже. Вводить команды для управления демоном chronyd, можно двумя синтаксическими способами.

$ chronyc
...
chronyc> tracking

или

$ chronyc tracking

По ходу публикации, будут использованы оба варианта.

tracking

Команда показывает производительность системных часов на клиенте.

$ chronyc tracking
Reference ID    : 00000000 ()
Stratum         : 0
Ref time (UTC)  : Thu Jan 01 00:00:00 1970
System time     : 0.000000017 seconds slow of NTP time
Last offset     : +0.000000000 seconds
RMS offset      : 0.000000000 seconds
Frequency       : 14.997 ppm slow
Residual freq   : +0.000 ppm
Skew            : 0.000 ppm
Root delay      : 1.000000000 seconds
Root dispersion : 1.000000000 seconds
Update interval : 0.0 seconds
Leap status     : Not synchronised
  • Пояснения:
    • Reference ID — идентификатор и имя NTP сервера синхронизации*
    • Stratum — количество переходов к NTP серверу
    • Ref time — время, UTC, последнего измерения от эталонного источника*
    • System time — скорость задержки системных часов от NTP сервера
    • Last offset — локальное смещение при последнем обновлении часов от NTP
    • RMS offset — долгосрочное среднее значение смещения времени
    • Frequency — частота скорости ошибки, без исправления chronyd, в ppm — ч/м частей на миллион
    • Residual freq — разница частоты между NTP и локальным источником времени
    • Skew — предполагаемая ошибка, связанная с частотой
    • Root delay — общая задержка сетевого пути к NTP серверу синхронизации
      • Update interval — интервал между двумя последними обновлениями часов*
    • Leap status — статус скачка, «нормальный», «вставить секунду», «удалить секунду», «не синхронизировано»*

* Отмечены строки, которые в режиме клиента NTP не работают.

sources

Проверка источника опорного времени, ключ -v, вывод подробно.

$ chronyc sources -v
210 Number of sources = 1
...    
MS Name/IP address   Stratum Poll Reach LastRx Last sample     
^? lin-ntp              0  10  0  -  +0ns[  +0ns] +/-  0ns

sourcestats

Скорость дрейфа и оценка смещения опорного источника.

$ chronyc sourcestats 
210 Number of sources = 1
Name/IP Addr NP NR Span Frequency Freq Skew  Offset Std Dev
===========================================================
lin-ntp   0  0   0   +0.000   2000.000 +0ns  4000ms

add server

Добавить новый опорный NTP сервер в список.

chronyc> add server 10.0.2.16
200 OK
chronyc> sources 
210 Number of sources = 1
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================
^? 10.0.2.11            0   6   0   -  +0ns[   +0ns] +/-    0ns
^? 10.0.2.16            0   6   0   -  +0ns[   +0ns] +/-    0ns

delete

Удалить опорный NTP сервер из списка.

chronyc> delete 10.0.2.16
200 OK
chronyc> sources 
210 Number of sources = 1
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================
^? 10.0.2.8               0   7   0  - +0ns[ +0ns] +/-    0ns

makestep

Быстрое исправление коррекции времени на клиенте NTP.

chronyc> makestep
200 OK

waitsync

Ожидание синхронизация с опорным NTP сервером, ключ 0 — ожидание не ограниченно.

chronyc> waitsync
try: 1, refid: 00000000, correction: 0.000000007, skew: 0.000
try: 2, refid: 00000000, correction: 0.000000008, skew: 0.000
try: 3, refid: 00000000, correction: 0.000000009, skew: 0.000
...

Пример: ожидание 10 мин, 60 раз по 10 секунд, коррекция ~10 мс.

waitsync 60 0.01
try: 1, refid: 00000000, correction: 0.000000009, skew: 0.000
...
try: 5, refid: 00000000, correction: 0.000000010, skew: 0.000
...
try: 12, refid: 00000000, correction: 0.000000011, skew: 0.000
...

allow all

Разрешает доступ к chronyd NTP, сервера синхронизации находится в локальной сети.

chronyc> allow all
200 OK

accheck

Проверяет доступ с рабочего ПК к серверу синхронизации NTP.

chronyc> accheck lin-sl
208 Access allowed

cmdallow

Разрешает мониторинг опорного NTP сервера синхронизации от ПК. По умолчанию chronyd опорного NTP принимает команды только с localhost (127.0.0.1).

chronyc> cmdallow lin-sl
200 OK

cmdaccheck

Проверка доступа мониторинг chronyd, опорного NTP сервера с именованного ПК.

chronyc> cmdaccheck lin-sl
208 Access allowed

refresh

Обновление IP адресов после остановки или сбоя сети.

chronyc> refresh
200 OK

local

Заставляет ПК работать в режиме NTP сервера в изолированной сети, при сбоях с опорным узлом точного времени.

chronyc> local     
200 OK

local off

Отключает режим узла NTP сервера, точное время получает с опорного NTP сервера.

chronyc> local off
200 OK

Журнал.

Следить за сообщением о работе chrony можно с помощью системного журнала.

# journalctl -uf chronyd

Заключение.

Применение chrony, в качестве клиента NTP, является хорошим примером для сетей с неустойчивой инфраструктурой. Электропитание, обрывистый интернет, разобщённость подразделений, нехватка специалистов, санкции, маленькая зарплата, плохая/хорошая погода всё это может влиять на работу оборудования и его грамотную эксплуатацию. Клиент chrony не прихотлив, не требует к себе особого внимания. После штатного или нештатного отключения оборудования, штаммы (не путать с вирусами) времени сохраняются в файле drift. При включении, демон chronyd проверяет drift, выставляя time на основе полученного значения. После синхронизации с опорным сервером NTP, происходит плавная корректировка частоты отметок временных колебаний.

Основная задача chrony, «выпрямить» время так, что бы работающие приложения не почувствовали скачков и резких изменений в своей работе. В следующей публикации, по просьбе читателей, будет рассказано как перевести chrony в режим сервера точного времени.

Полезные ссылки.

  • chronyd фоновый демон ntp
  • chrony утилита поддержки точности часов
  • chronyc командная строка для chronyd
  • chrony.conf конфигурационный файл
  • точное время эталон времени

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Copyright © 2020-2024
Все права защищены.
При перепечатке указать источник: kabtim-t.ru
Контакты