Linux синхронизация времени (Установка настройка и диагностика chrony)

Оцените статью

Наш проект по миграции на отечественное ПО наконец то перешёл в 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

Related Posts

Интеграция Zabbix и FreeIPA (авторизация пользователей домена)

Когда в Zabbix появился функционал «JIT provisioning» настройка интеграции с LDAP стала приобретать хоть какой-то смысл. Теперь можно наконец-то настроить автоматическое создание пользователя при авторизации. Итак, давайте настроим авторизацию пользователей…

Собираем корпоративный AI-чат: от выбора модели до работающего прототипа

Представляю вашему вниманию материалы открытого вебинара Cloud.ru «Собираем корпоративный AI-чат: от выбора модели до работающего прототипа». В программе вебинара: Демонстрация: смотрим, как самостоятельно развернуть работающий чат.

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

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

You Missed

Linux синхронизация времени (Установка настройка и диагностика chrony)

Linux синхронизация времени (Установка настройка и диагностика chrony)

Интеграция Zabbix и FreeIPA (авторизация пользователей домена)

Интеграция Zabbix и FreeIPA (авторизация пользователей домена)

Собираем корпоративный AI-чат: от выбора модели до работающего прототипа

Собираем корпоративный AI-чат: от выбора модели до работающего прототипа

Настройка сервера приложений 1С с базой данных PostgresPRO (Ubuntu Linux 24.04)

Настройка сервера приложений 1С с базой данных PostgresPRO (Ubuntu Linux 24.04)

Установка PostgresPRO в Ubuntu Linux

Установка PostgresPRO в Ubuntu Linux

Авторизация в Wiki Outline при помощи Keycloak

Авторизация в Wiki Outline при помощи Keycloak