Точное время в Linux: chrony vs ntpd vs systemd-timesyncd
В Linux три основных способа синхронизации времени: chrony, ntpd, systemd-timesyncd. Каждый имеет свои плюсы. Этот гайд объясняет разницу, показывает настройку каждого, даёт рекомендации для серверов и рабочих станций.
Рекомендация: для серверов — chrony (точность 1-5 мс, быстрая синхронизация после потери связи). Для десктопов — systemd-timesyncd (уже установлен, не требует настройки).
Сравнение NTP-клиентов
| Клиент | Точность | Установка | Где используется |
|---|---|---|---|
| chrony | 1-5 мс | apt install chrony | RHEL, CentOS, Fedora по умолчанию |
| ntpd | 1-10 мс | apt install ntp | Классика, Debian/Ubuntu до 16.04 |
| systemd-timesyncd | 10-100 мс | Предустановлен | Ubuntu 18.04+, все systemd-системы |
Вариант 1: chrony (рекомендуется)
Установка
sudo apt update sudo apt install chrony
Настройка /etc/chrony/chrony.conf
pool ru.pool.ntp.org iburst maxsources 4 pool pool.ntp.org iburst maxsources 3 makestep 1.0 3 rtcsync
Параметр iburst — отправить 4 пакета сразу при старте (быстрая синхронизация). makestep 1.0 3 — корректировать время скачком если расхождение больше 1 секунды, в первые 3 итерации после старта.
Запуск
sudo systemctl enable --now chrony sudo chronyc tracking
Команда chronyc tracking покажет Reference ID, Stratum, Offset (в миллисекундах), Last offset.
Проверка точности
chronyc sourcestats -v chronyc makestep
Вариант 2: ntpd (классика)
Установка
sudo apt install ntp
Настройка /etc/ntp.conf
pool 0.ru.pool.ntp.org iburst pool 1.ru.pool.ntp.org iburst pool 2.ru.pool.ntp.org iburst pool 3.ru.pool.ntp.org iburst restrict default kod nomodify notrap nopeer noquery restrict 127.0.0.1 restrict ::1
Запуск
sudo systemctl enable --now ntp sudo ntpq -p
Команда ntpq -p покажет активные пиры с offset и jitter.
Вариант 3: systemd-timesyncd (минимум настроек)
systemd-timesyncd — это SNTP-клиент, который уже установлен во всех современных дистрибутивах. Точность 10-100 мс, но для десктопа хватает.
Настройка /etc/systemd/timesyncd.conf
[Time] NTP=ru.pool.ntp.org FallbackNTP=pool.ntp.org time.apple.com RootDistanceMaxSec=5 PollIntervalMinSec=32 PollIntervalMaxSec=2048
Применение
sudo systemctl restart systemd-timesyncd timedatectl timesync-status
Как выбрать?
- Серверы (production): chrony — лучший выбор, рекомендация Red Hat
- Рабочие станции: systemd-timesyncd — уже работает, не надо ставить
- Legacy-системы (CentOS 6, Debian 7): ntpd — единственный вариант
- Встраиваемые системы (Raspberry Pi): chrony — минимальные требования
Атомные часы как источник
В России первичный эталон времени — Государственный первичный эталон единиц времени, частоты и национальной шкалы времени (ГЭВЧ), расположен во ВНИИФТРИ (Менделеево, Московская область). Доступен через NTP-сервер ntp1.vniiftri.ru и ntp2.vniiftri.ru (stratum 1).
В мире лучшие публичные stratum-1 серверы: time1.google.com, time2.google.com, time.cloudflare.com (любой IP).
Типичные проблемы
Время убегает на 1 секунду в день
На сервере без NTP кварцевый резонатор даёт drift 1-10 ppm (1-864 мс в день). Решение: включить NTP.
chronyc tracking показывает offset 500+ мс
Это значит NTP-сервер далеко или перегружен. Смените пул на ru.pool.ntp.org.
systemd-timesyncd не запускается
Проверьте: timedatectl status. Если NTP synchronized: no, проверьте firewall (порт 123/UDP) и доступ к NTP-серверу.
FAQ
Stratum 2 (зеркала stratum 1). Точность такая же как у time.apple.com, но задержка в 5 раз меньше.
Да, через gpsd + chrony. Точность до 100 нс. Используется на биржах и телеком-операторами.
chrony. Разработка ntpd прекращена (EOL). chrony — активный проект, рекомендация Red Hat, SUSE, Debian.
Отключите sync с гипервизором, поставьте chrony на гостевую ОС. Иначе время «прыгает» при миграции VM.