Навіщо серверу точний час
Розбіжність системного годинника на пару хвилин ламає речі, які рідко перевіряють вручну: TLS-сертифікати, у яких точка перевірки — точний час випуску та закінчення дії; логи, які стає неможливо зіставити між кількома серверами; завдання cron, що спрацьовують не у той час; реплікацію баз даних та розподілені системи, де важливий порядок подій. На VDS без гіпервізорної синхронізації годинник здатен «спливати» на секунди за добу — за місяць накопичується відчутна похибка.
Синхронізацію часу в сучасних дистрибутивах Linux забезпечує chrony — заміна класичному ntpd та вбудованому systemd-timesyncd.
chrony, systemd-timesyncd та ntpd: різниця
| Інструмент | Особливість |
|---|---|
| chrony | швидко сходиться після перезавантаження, стійкий за нестабільної мережі |
| systemd-timesyncd | мінімальний клієнт, входить у systemd, менш точний |
| ntpd | класична реалізація NTP, зараз застосовується рідше |
Ubuntu 20.04+ та Debian 11+ за замовчуванням застосовують systemd-timesyncd, проте для серверів, де важлива точність (бази даних, платіжні системи, розподілені кластери), варто поставити chrony — він точніший і швидше відновлює синхронізацію після простою віртуальної машини.
Встановлення та перевірка статусу chrony
apt install -y chrony
systemctl enable --now chrony
systemctl status chrony
Працюючий systemd-timesyncd варто вимкнути, щоб два клієнти не конфліктували:
systemctl disable --now systemd-timesyncd
Для CentOS, Rocky Linux та AlmaLinux пакет встановлюється через dnf install -y chrony, а служба зветься так само — chronyd.
Налаштування джерел часу
Конфігурація лежить у /etc/chrony/chrony.conf (Debian/Ubuntu) чи /etc/chrony.conf (RHEL-based). Джерела задаються директивою pool чи server:
pool 2.pool.ntp.org iburst
pool time.cloudflare.com iburst
Прапорець iburst пришвидшує первинну синхронізацію одразу за стартом служби. Після правки конфігурації служба перезапускається:
systemctl restart chrony
За налаштованого файрвола для NTP відкривають вихідний трафік на UDP-порт 123 — жорстку конфігурацію варто перевірити у правилах, описаних у статті про налаштування файрвола UFW.
Перевірка синхронізації часу
Головні діагностичні команди chrony:
chronyc tracking
chronyc sources -v
chronyc sourcestats
chronyc tracking показує поточну розбіжність (System time) і статус синхронізації (Leap status: Normal означає справну роботу). chronyc sources -v виводить перелік джерел часу і позначає зірочкою (*) основне. За розбіжності понад пару сотень мілісекунд тривалий час перевіряють мережеву зв'язність із серверами з пулу.
Часті проблеми із синхронізацією часу
- Велика розбіжність одразу за старту VDS — зазвичай усувається за хвилину-дві, поки chrony виконує першу синхронізацію з прапорцем
iburst. - Файрвол блокує UDP-порт 123 — синхронізація не відбувається взагалі,
chronyc sourcesпоказує джерела зі статусом «недоступний». - Часовий пояс заданий неправильно — стосунку до NTP це не має, проте часто плутають: перевіряється командою
timedatectlі виправляється черезtimedatectl set-timezone. - На сервері одночасно працюють chrony та systemd-timesyncd — конфлікт за системний годинник усувають вимкненням однієї зі служб.
Для завдань, критичних до часу — резервного копіювання за розкладом чи звітів, — варто пересвідчитись, що chrony синхронізований до спрацювання завдання у планувальнику cron: розбіжність у декілька хвилин зсуває вікно бекапу чи звіту.
Підсумок: чек-лист щодо часу на сервері
- Встановіть chrony:
apt install -y chrony, вимкніть конфліктуючі служби на кшталт systemd-timesyncd. - Задайте джерела NTP у
/etc/chrony/chrony.confіз прапорцемiburst. - Перевіряйте синхронізацію командами
chronyc trackingтаchronyc sources -v. - Відкрийте вихідний UDP-порт 123 у файрволі.
- Додайте перевірку часу до моніторингу ресурсів VDS, щоб виявити розсинхронізацію раніше, ніж вона зламає бекапи чи сертифікати.