Server has too high stratum — Сбой синхронизации времени systemd-timesyncd
Архитектура ошибки и симптомы сбоя
Сообщение «systemd-timesyncd: Server has too high stratum, refusing synchronization» генерируется встроенным SNTP-клиентом systemd-timesyncd. Ошибка указывает на то, что вышестоящий NTP-сервер времени вернул уровень стратума (Stratum >= 16, что означает «время не синхронизировано / Unsynchronized») либо стратум превысил допустимый порог доверия клиента. Служба systemd-timesyncd отклоняет полученные маркеры времени, оставляя сервер с несинхронизированными часами, что ведет к сбоям в Kerberos, TLS/SSL сертификатах и распределенных СУБД.
Диагностическая таблица параметров сбоя
| Параметр | Значение | Инженерный смысл сбоя |
|---|---|---|
| Stratum Level | Stratum 1–15 (Valid), 16 (Invalid) | Удаленность от эталонного источника времени (Stratum 0: атомные часы/GPS; Stratum 1: прямой сервер). |
| Stratum 16 | Clock Unsynchronized | NTP-сервер сам потерял синхронизацию и не имеет права раздавать время клиентам. |
| Impact | Kerberos / Token Auth Break | Расхождение часов более чем на 300 секунд полностью блокирует авторизацию Active Directory. |
Пошаговое дерево решений и сценарии траблшутинга
Сценарий 1: Проверка статуса синхронизации и текущего стратума
# Детальный статус службы синхронизации времени:
timedatectl timesync-status
# Общий статус системных часов:
timedatectl statusСценарий 2: Настройка надежных публичных NTP-серверов в timesyncd.conf
Замените нестабильный локальный NTP-сервер на надежные пулы Stratum 1–2:
# Отредактируйте конфигурационный файл /etc/systemd/timesyncd.conf:
cat <<EOF | sudo tee /etc/systemd/timesyncd.conf
[Time]
NTP=time.cloudflare.com pool.ntp.org
FallbackNTP=ntp.ubuntu.com time.google.com
RootDistanceMaxSec=5
PollIntervalMinSec=32
PollIntervalMaxSec=2048
EOF
# Перезапустите службу времени:
sudo systemctl restart systemd-timesyncdСценарий 3: Переход на профессиональный демон Chrony (рекомендовано)
Для корпоративных серверов с высокими требованиями к точности замените простой клиент timesyncd на полнофункциональный демон chrony:
# Установка Chrony (автоматически отключит systemd-timesyncd):
sudo apt-get install chrony || sudo dnf install chrony
# Проверка источников времени и стратумов в Chrony:
chronyc sources -v
chronyc trackingСценарий 4: Принудительная разовая установка времени
# Разовая ручная синхронизация через Chrony (если расхождение слишком велико):
sudo chronyd -q 'server pool.ntp.org iburst'ITSTM настроит высокоточную инфраструктуру синхронизации времени PTP/NTP для корпоративных кластеров.
Частые вопросы (FAQ)
Что такое Stratum в иерархии NTP?
Стратум — это уровень удаленности от физического эталона времени (GPS/атомных часов). Stratum 1 подключен к эталону напрямую, Stratum 2 синхронизируется со Stratum 1 и т.д. Stratum 16 означает, что сервер не синхронизирован и непригоден для использования.
Чем Chrony лучше встроенного systemd-timesyncd?
timesyncd — это простейший клиент SNTP, который опрашивает сервер раз в несколько минут. Chrony — полноценный NTP-демон, непрерывно корректирующий частоту системного таймера (Slewing), поддерживающий аппаратные таймстемпы и работу в изолированных сетях.
Что делает директива RootDistanceMaxSec?
Она определяет максимальную допустимую задержку до корневого сервера времени. Если суммарная сетевая задержка и погрешность выше этого значения, timesyncd отклоняет сервер.
Как включить синхронизацию времени одной командой?
Выполните команду: sudo timedatectl set-ntp true.