Введение.
Этой публикацией заканчивается серия статей о работе 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 выявил 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 конфигурационный файл
- точное время эталон времени