# Точний час на сервері: chrony та синхронізація NTP

> Точний час на VDS через chrony: встановлення, джерела NTP, команди chronyc tracking і sources, типові проблеми синхронізації годинника.

## Навіщо серверу точний час

Розбіжність системного годинника на пару хвилин ламає речі, які рідко перевіряють вручну: 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](https://www.zevshost.net/uk/kb/ufw-firewall-vps/).

## Перевірка синхронізації часу

Головні діагностичні команди 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](https://www.zevshost.net/uk/kb/cron-nastroika-linux/): розбіжність у декілька хвилин зсуває вікно бекапу чи звіту.

## Підсумок: чек-лист щодо часу на сервері

- Встановіть chrony: `apt install -y chrony`, вимкніть конфліктуючі служби на кшталт systemd-timesyncd.
- Задайте джерела NTP у `/etc/chrony/chrony.conf` із прапорцем `iburst`.
- Перевіряйте синхронізацію командами `chronyc tracking` та `chronyc sources -v`.
- Відкрийте вихідний UDP-порт 123 у файрволі.
- Додайте перевірку часу до [моніторингу ресурсів VDS](https://www.zevshost.net/uk/kb/monitoring-vds/), щоб виявити розсинхронізацію раніше, ніж вона зламає бекапи чи сертифікати.

---

Джерело: https://www.zevshost.net/uk/kb/chrony-ntp-vremya-servera/
