Наш проект по миграции на отечественное ПО наконец то перешёл в Production-фазу и все теоретические наработки теперь переносим на физическое железо. С учётом закрытого контура и уже реальной инфраструктуры периодически наступаю на грабли.
Вчера например при запуске первого FreeIPA сервера я наступил на синхронизацию времени с Windows NTP-сервером. Таким образом я умудрился выпустить сертификат из будущего (not yet valid).
Установка и настройка chrony
Chrony — это современная, гибкая реализация протокола сетевого времени (NTP) для Linux-based систем, используемая для точной синхронизации системных часов. Она быстрее и точнее настраивает время, чем ntpd, особенно при перебоях в сети или частом включении/выключении. Состоит из демона chronyd и утилиты командной строки chronyc.
Устанавливаем и активируем chrony.
# dnf install chrony
# systemctl enable chrony
Добавляем в конфигурацию NTP-сервера из локальной сети (файл /etc/chrony.conf).
server 10.54.50.3 iburst
server 10.54.50.2 iburst
Перезапускаем сервис и проверяем статус.
# systemctl restart chronyd
# systemctl status chronyd
● chronyd.service - NTP client/server
Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; preset: enabled)
Drop-In: /usr/lib/systemd/system/service.d
└─10-timeout-abort.conf
Active: active (running) since Tue 2026-03-03 15:07:42 MSK; 11s ago
Docs: man:chronyd(8)
man:chrony.conf(5)
Process: 35103 ExecStart=/usr/sbin/chronyd $OPTIONS (code=exited, status=0/SUCCESS)
Main PID: 35105 (chronyd)
Tasks: 1 (limit: 2246)
Memory: 832.0K
CPU: 51ms
CGroup: /system.slice/chronyd.service
└─35105 /usr/sbin/chronyd
Запрашиваем статус синхронизации.
# timedatectl status
Local time: Вт 2026-03-03 15:09:42 MSK
Universal time: Вт 2026-03-03 12:09:42 UTC
RTC time: Вт 2026-03-03 12:10:56
Time zone: Europe/Moscow (MSK, +0300)
System clock synchronized: no
NTP service: active
RTC in local TZ: no
И вот здесь мы видим, что синхронизация не работает, проверим, что сервис NTP на NTP-сервере запущен.
# nmap -sU -p 123 -sV 10.54.50.3
Starting Nmap 7.98 ( https://nmap.org ) at 2026-03-03 15:11 +0300
Nmap scan report for dc02-vm-nux.sngp.com (10.54.50.3)
Host is up (0.0013s latency).
PORT STATE SERVICE VERSION
123/udp open ntp NTP v3
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 0.32 seconds
Сервис запущен, но синхронизация не работает. Теперь запросим состояние обмена данными с источниками NTP.
# chronyc sources -v
.-- Source mode '^' = server, '=' = peer, '#' = local clock.
/ .- Source state '*' = current best, '+' = combined, '-' = not combined,
| / 'x' = may be in error, '~' = too variable, '?' = unusable.
|| .- xxxx [ yyyy ] +/- zzzz
|| Reachability register (octal) -. | xxxx = adjusted offset,
|| Log2(Polling interval) --. | | yyyy = measured offset,
|| \ | | zzzz = estimated error.
|| | | \
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^? dc02-vm-nux.dom.com 2 6 377 54 +17923s[+17923s] +/- 10.4s
^? dc01-nux.dom.com 1 6 377 57 +17923s[+17923s] +/- 10.3s
Обратите внимание на статус ‘?’ = unusable для Source state. Это как раз особенность работы с Windows NTP-серверами и иногда может стрельнуть иногда нормально работает. Для устранения ошибки вносим правки в файл /etc/chrony.conf.
maxdistance 16.0
Презапускаем и проверяем, что синхронизация работает.
# systemctl restart chrony
# timedatectl status
Local time: Вт 2026-03-03 10:19:54 MSK
Universal time: Вт 2026-03-03 07:19:54 UTC
RTC time: Вт 2026-03-03 07:19:54
Time zone: Europe/Moscow (MSK, +0300)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
С этой проблемой разобрались и синхронизация теперь работает. Также стоит отметить, что NTP-сервера в сети если они выдаются при помощи DHCP можно найти командой.
# nmap --script broadcast-dhcp-discover
Настройка часового пояса
Теперь нам надо установить системный часовой пояс сервера и это можно сделать так. Первым делом ищем как правильно называется наш часовой пояс.
# timedatectl list-timezones | grep Y
America/New_York
America/Yakutat
America/Yellowknife
Asia/Yakutsk
Asia/Yangon
Asia/Yekaterinburg
Asia/Yerevan
Australia/Yancowinna
Canada/Yukon
Pacific/Yap
Устанавливаем часовой пояс.
# timedatectl set-timezone Asia/Yekaterinburg
[root@rdc02-vm-nux etc]# date
Вт 03 мар 2026 12:26:52 +05
Вот собственно так с проблемой и разобрался.
Диагностика и мониторинг
Основные команды chronyc
- tracking — показывает текущую информацию о синхронизации.
# chronyc tracking
Ключевые поля:- Reference ID — источник времени.
- Stratum — уровень иерархии NTP (1 — атомные часы, 2–3 — надёжные серверы).
- System time — насколько системные часы отличаются от эталонных.
- sources — список источников времени и их статус.
# chronyc sources
Поля:- ^* — текущий активный сервер.
- ^- — сервер в списке, но не используется.
- MS — метрика качества (чем меньше, тем лучше).
- sourcestats — статистика по каждому источнику.
# chronyc sourcestats # Показывает дрейф, задержки и другие параметры. - activity — количество активных/онлайн источников.
# chronyc activity - manual — ручное управление (например, коррекция времени).
# chronyc -a manual on chronyc -a manual set 10 # скорректировать на 10 секунд
# chronyc -a manual off
Дополнительные настройки
- Ограничение скорости запросов (чтобы не перегружать серверы): maxupdateskew 100
- Автоматическое переключение на резервные серверы:
Chrony делает это автоматически, если указаны несколько server/pool. - Синхронизация аппаратных часов (RTC):
Добавьте в конфиг: rtcsync




