Время не синхронизируется: chronyd или systemd-timesyncd
Расхождение времени ломает сертификаты, журналы и распределённые системы. Служба синхронизации при этом обычно активна: проблема либо в доступности серверов времени, либо в том, что на машине работают две службы сразу.
Вероятные причины
По порядку: сверху то, что встречается чаще.
-
Работают две службы синхронизации
chronyd и systemd-timesyncd конфликтуют: обе пытаются управлять временем, и результат непредсказуем.
-
Серверы времени недоступны
Протокол работает по UDP на порту 123. В закрытых сетях он часто заблокирован, и синхронизация не проходит молча.
-
Расхождение слишком велико для плавной подстройки
Службы подстраивают время плавно и отказываются делать большой шаг без явного разрешения.
Диагностика
Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.
Общая картина: время, часовой пояс, состояние синхронизации.
timedatectl statusИсточники времени и их состояние.
chronyc sources -v 2>/dev/null | head -15Сообщения служб синхронизации.
journalctl -u chronyd -u systemd-timesyncd -n 30 --no-pagerРешение
Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.
- Почему происходит
- chronyd и systemd-timesyncd конфликтуют: обе пытаются управлять временем, и результат непредсказуем.
- Как проверить
-
Посмотрите обе службы.
systemctl is-active chronyd systemd-timesyncd 2>/dev/null timedatectl status
- Как исправить
-
Оставьте одну службу, вторую отключите и замаскируйте, чтобы она не вернулась после обновления.
sudo systemctl disable --now systemd-timesyncd && sudo systemctl mask systemd-timesyncd
- Почему происходит
- Протокол работает по UDP на порту 123. В закрытых сетях он часто заблокирован, и синхронизация не проходит молча.
- Как проверить
-
Посмотрите состояние источников времени.
chronyc sources -v 2>/dev/null || timedatectl timesync-status 2>/dev/null
- Как исправить
- Откройте исходящий доступ к серверам времени или укажите внутренний сервер в настройках.
- Почему происходит
- Службы подстраивают время плавно и отказываются делать большой шаг без явного разрешения.
- Как проверить
-
Посмотрите расхождение.
chronyc tracking 2>/dev/null | head -8 timedatectl status | head -8
- Как исправить
-
Выполните разовую принудительную подстройку, затем дайте службе работать обычным образом.
sudo chronyc makestep
Пример вывода
Синхронизация не проходит: серверы недоступны. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.
$ timedatectl status | head -6
Local time: Mon 2026-09-15 21:12:41 MSK
System clock synchronized: no
NTP service: active
chronyd[1100]: Can't synchronise: no selectable sources
Связанные ошибки
- certificate verify failed в журнале службы Проверка сертификата не прошла: истёк срок, неполная цепочка, неверное имя, нет доверенных корневых сертификатов.
- Connection timed out в журнале службы Соединение не устанавливается по таймауту: пакеты отбрасываются, узел недоступен, перегружен сервер на другой стороне.
- Address already in use при запуске службы Порт или адрес уже занят: bind() failed (98: Address already in use). Как найти владельца порта и что делать с остатками прежнего процесса.
- Automount: каталог монтируется не вовремя или отваливается Автомонтирование через .automount: как работает TimeoutIdleSec, почему ресурс отваливается и когда лучше обычный .mount.
- Broken pipe в журнале службы Запись в закрытый канал или соединение: клиент отключился, обработчик завершился, конвейер разорван.
- Cannot assign requested address при привязке Ошибка 99 при привязке: адрес не принадлежит машине или ещё не поднят. Разбор с network-online.target и ip_nonlocal_bind.
- Connection refused в журнале службы Соединение отклонено: служба не может подключиться к базе, кешу или другому сервису. Порядок запуска, адрес, брандмауэр.
- Connection reset by peer в журнале службы Соединение сброшено другой стороной: обрыв клиента, перезапуск сервера, промежуточное устройство.
Источники
- Документация chrony
-
systemd.timedatectl(1)
Состояние синхронизации времени. -
Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
Воспроизведено блокировкой исходящего UDP на порт 123.