Синхронизация времени в Linux с NTP и Chrony
Синхронизация системного времени в Linux решает проблему смещения часов и важна для логов, сертификатов и распределённых систем. На современных дистрибутивах обычно уже есть клиент NTP (systemd-timesyncd, ntpd или chrony). В статье объяснено, как проверить статус, установить и настроить ntpdate, ntpd и Chrony, как мониторить службу, а также приведены практичные руководства по отладке, безопасности и переходу между реализациями.

Часы компьютера — не идеальны. Со временем они дрейфуют: через дни или недели система может показывать время с погрешностью в несколько секунд. Раньше администраторы корректировали время вручную. Сегодня большинство систем автоматически синхронизируют время по сети с помощью NTP.
Содержание
- Что такое NTP
- Как включить синхронизацию времени в Linux
- Установка клиента ntpdate
- Установка демона ntpd
- Мониторинг ntpd
- Установка и преимущества Chrony
- Руководство по переходу и отладке
- Безопасность и приватность
- Часто задаваемые вопросы
Что такое NTP
NTP (Network Time Protocol) — протокол для синхронизации часов устройств по сети. Он использует алгоритмы для оценки задержек и смещения между хостом и сервером времени и корректирует локальные часы.
Определение: NTP — сетевой протокол, который позволяет компьютеру поддерживать точное системное время относительно зеркал/серверов времени.
Важно: точность NTP обычно составляет миллисекунды в локальных сетях и десятки миллисекунд через Интернет. Для микросекундных задач используют специализированное оборудование или PTP.
Как включить синхронизацию времени в Linux
Большинство современных дистрибутивов уже включают какой‑то клиент NTP. Если вы не замечали дрейфа часов относительно телефона — вероятно, у вас уже настроен клиент.
На дистрибутивах с systemd
Системы с systemd обычно используют systemd-timesyncd как лёгкий NTP‑клиент. Чтобы проверить статус синхронизации, выполните:
timedatectl
Если в выводе видно Network time on: yes, синхронизация по сети включена. Значение NTP synchronized: no может означать, что время ещё не синхронизировалось или используется другой клиент.
Если Network time on: no, включите синхронизацию командой:
sudo timedatectl set-ntp trueЭто обычно всё, что требуется на большинстве дистрибутивов.
Важно: systemd-timesyncd — лёгкий клиент. Для повышенной точности или серверных задач рассмотрите ntpd или Chrony.
На дистрибутивах без systemd
Некоторые дистрибутивы (или особые случаи вроде MX Linux) используют собственные механизмы. Чтобы найти, какой инструмент управляет временем, можно искать записи в системных логах:
sudo cat /var/log/syslog | grep ntp
В примере видно, что срабатывал клиент ntpdate — он запускается эпизодически, синхронизирует время и завершает работу. Это нормально для ноутбуков и домашних машин.
Если в логах вы видите ntpd, значит запущен демон, который поддерживает постоянную синхронизацию и обычно обеспечивает более высокую точность при длительной работе.
Если вы хотите устанавливать ntp или ntpdate на системе с systemd, сначала отключите systemd‑модуль синхронизации:
sudo timedatectl set-ntp false(Эта команда не нужна на системах без systemd.)
Установка ntpdate (клиент для разовых синхронов)
ntpdate подходит для домашних компьютеров и устройств, которые не всегда в сети. Он подходит, если вам нужно быстро корректировать время при подключении к сети.
На Debian/Ubuntu и их производных:
sudo apt install ntpdateНа многих Debian‑системах ntpdate настраивается на запуск при подключении сети. Вы можете отключить сеть и подключиться снова, чтобы инициировать синхронизацию.
Примечание: ntpdate на некоторых дистрибутивах объявлен устаревшим. Предпочтительнее использовать ntpd или Chrony, особенно на серверах, где требуется стабильность и автоматизация.
Почему ntpdate устарел:
- Некоторые дистрибутивы объединяют функциональность в пакет ntp.
- Часто отсутствует автоматическая интеграция в события подключения сети — нужно вручную добавить вызов в скрипты.
Если вам нужен простой одноразовый синхрон — ntpdate подходит. Для постоянного контроля времени выбирайте демон.
Установка демона ntpd
ntpd — классический демон NTP. Он работает постоянно и со временем повышает точность за счёт расчёта смещений и задержек.
Установка на популярных дистрибутивах:
Debian/Ubuntu/Mint/Zorin:
sudo apt install ntpFedora:
sudo dnf install ntpArch Linux:
sudo pacman -S ntpopenSUSE:
sudo zypper install ntpПосле установки включите сервис и запустите его:
sudo systemctl enable ntpd
sudo systemctl start ntpdНа системах без systemd команды могут выглядеть так:
sudo update-rc.d ntpd enable
sudo service ntpd startЕсли сервис называется иначе (например ntp вместо ntpd), используйте соответствующее имя при enable/start.
Мониторинг ntpd
Проверка статуса синхронизации и доступных серверов помогает понять, какова точность и стабильность времени.
Быстро проверить, синхронизирован ли хост:
ntpstat
Список серверов и их состояние:
ntpq -p
Интерактивный режим ntpq полезен для углублённой диагностики. Запустите:
ntpqЗатем в интерактивном режиме введите ? для списка команд. Пример команды для установки версии NTP:
ntpversion 4
Полезные команды для мониторинга и отладки
- timedatectl — проверить общее состояние времени в systemd
- ntpstat — узнать, синхронизировано ли время
- ntpq -p — список пиров и их метрик
- chronyc sources — для Chrony: список источников
- journalctl -u ntpd — просмотреть журналы демона ntpd
Установка и преимущества Chrony
Chrony — современная реализация NTP, оптимизированная для ноутбуков и виртуальных машин, которые не всегда в сети. Chrony быстро корректирует большие смещения времени и лучше адаптируется к переменным условиям сети.
Преимущества Chrony:
- Быстрая коррекция больших смещений.
- Хорошо работает на ноутбуках и в виртуальных средах.
- Автоматически оценивает дрейф локального кварца и компенсирует его.
- Поддерживает NTP и может работать как сервер для локальной сети.
Установка:
Debian/Ubuntu:
sudo apt install chronyArch Linux:
sudo pacman -S chronyFedora:
sudo dnf install chronyПроверить источники:
chronyc sources
После установки обычно требуется перезагрузка или перезапуск демона, чтобы убедиться, что система использует Chrony для синхронизации.
Когда использовать ntpdate, ntpd или Chrony — краткая подсказка
- ntpdate — одноразовый запуск, подходит для редких подключений к сети.
- ntpd — классический демон, хорош для серверов, работающих постоянно.
- Chrony — современное решение для ноутбуков, виртуальных машин и ситуаций с переменным сетевым доступом.
Руководство по переходу от одного клиента к другому
Шаги для безопасного перехода:
- Проверить текущий клиент: timedatectl, ntpq, chronyc.
- Отключить текущую автоматическую синхронизацию (если нужно):
sudo timedatectl set-ntp false- Установить желаемый пакет (
ntpилиchrony). - Включить и запустить сервис через systemctl.
- Проверить синхронизацию командой ntpstat или chronyc sources.
- Мониторить логи в течение суток.
Пример: переход на Chrony
sudo apt remove --purge systemd-timesyncd ntpdate
sudo apt install chrony
sudo systemctl enable chrony --now
chronyc tracking
chronyc sourcesНастройки конфигурации — основные моменты
ntpd: файл конфигурации обычно /etc/ntp.conf. В нём указывают список серверов, ограничения доступа и разрешения для клиентов.
Пример minimal ntp.conf:
server 0.pool.ntp.org iburst
server 1.pool.ntp.org iburst
server 2.pool.ntp.org iburst
driftfile /var/lib/ntp/ntp.drift
restrict default kod nomodify notrap nopeer noquery
restrict 127.0.0.1Chrony: файл конфигурации обычно /etc/chrony/chrony.conf или /etc/chrony.conf.
Пример minimal chrony.conf:
server 0.pool.ntp.org iburst
server 1.pool.ntp.org iburst
server 2.pool.ntp.org iburst
driftfile /var/lib/chrony/drift
allow 192.168.0.0/16
local stratum 10Комментарии к конфигурации:
- iburst ускоряет первичную синхронизацию.
- driftfile хранит оценку дрейфа локального кварца.
- Параметры restrict/allow управляют доступом к вашему серверу времени.
Отладочный план действий (playbook)
Если время не синхронизируется, следуйте этому плану:
- Проверить сетевое подключение и DNS.
- Убедиться, что клиент запущен:
systemctl status ntpdилиsystemctl status chrony. - Посмотреть логи:
journalctl -u ntpdилиjournalctl -u chrony. - Проверить список серверов:
ntpq -pилиchronyc sources. - Выполнить локальную синхронизацию вручную:
sudo ntpd -gq(для ntpd) илиchronyc makestep. - При необходимости временно отключить брандмауэр или открыть UDP порт 123.
- Проверить системное время и аппаратные часы:
timedatectlиhwclock --show. - При подозрении на аппаратный дрейф — мониторить дрейф в течение дней и заменить батарейку CMOS, если нужно.
Тесты и критерии приёмки
Критерии приёмки настройки синхронизации времени:
- Система показывает
System clock synchronized: yesв timedatectl. - ntpq/chronyc возвращает по крайней мере один надёжный сервер (статус с символом
*или+). - Локальная погрешность меньше требуемого порога (обычно <100 ms для большинства приложений).
- После перезагрузки служба автоматически стартует и синхронизируется.
Минимальные тесты:
- Проверить выход
timedatectl. - Запустить
ntpq -pилиchronyc trackingи подтвердить связь с серверами. - Смоделировать отключение сети и повторное подключение (для ntpdate) и убедиться, что синхронизация выполняется.
Безопасность и приватность
NTP использует UDP/123 и традиционно не шифрует трафик. Это создаёт несколько рисков:
- Возможна MITM‑атака, где злоумышленник подменяет ответ сервера времени.
- Неправильная настройка сервера может позволить злоумышленнику влиять на время клиентов.
Рекомендации по безопасности:
- Используйте доверенные серверы времени (официальные пул‑серверы, внутренние серверы организации).
- Ограничьте доступ к вашему NTP‑серверу (параметры restrict/allow).
- Для критически важных систем рассмотрите Network Time Security (NTS) — современный механизм аутентификации и шифрования для NTP.
- Применяйте обновления безопасности для пакетов ntp/chrony.
- Мониторьте подозрительные скачки времени в логах.
Приватность: NTP‑запросы отправляют IP клиента на сервер времени. Серверы времени и пул‑сервисы могут логировать IP‑адреса. Если это критично для вашей организации, используйте внутренние часы или собственный локальный NTP‑сервер.
Совместимость и миграция
Советы по миграции:
- На systemd‑системах отключайте systemd‑timesyncd перед установкой альтернативы.
- Если вы используете виртуальные машины, отдавайте предпочтение Chrony.
- При переходе с ntpd на Chrony проверьте конфигурацию ACL и список серверов.
Совместимость с облаком и контейнерами:
- В некоторых облачных средах время синхронизирует гипервизор. Убедитесь, что вы не запускаете несколько конфликтующих механизмов.
- В контейнерах обычно не запускают собственный демон NTP — контейнер наследует время хоста.
Ментальные модели и контрольные точки
- «Точность против устойчивости»: ntpd хорошо для стабильного сервера; Chrony — для изменчивых условий.
- «Одноразово против постоянно»: ntpdate корректирует время один раз; демоны поддерживают постоянную синхронизацию.
- «Сервер против клиента»: можно настроить локальный сервер времени в LAN, чтобы уменьшить внешние зависимости.
Быстрая шпаргалка команд
- timedatectl — состояние времени (systemd)
- sudo timedatectl set-ntp true/false — включить/выключить сетевую синхронизацию
- ntpstat — общая информация о синхронизации (ntpd)
- ntpq -p — список серверов (ntpd)
- ntpd -gq — принудительная одноразовая синхронизация
- chronyc sources — список серверов (Chrony)
- chronyc tracking — статус синхронизации (Chrony)
- hwclock –show — аппаратные часы
Шаблоны и примеры конфигураций
Пример /etc/ntp.conf (расширенный):
# NTP конфигурация
driftfile /var/lib/ntp/ntp.drift
restrict default kod nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict ::1
server 0.pool.ntp.org iburst
server 1.pool.ntp.org iburst
server 2.pool.ntp.org iburst
fudge 127.127.1.0 stratum 10Пример /etc/chrony/chrony.conf (расширенный):
# Chrony конфигурация
driftfile /var/lib/chrony/drift
makestep 1.0 3
server 0.pool.ntp.org iburst
server 1.pool.ntp.org iburst
server 2.pool.ntp.org iburst
allow 192.168.0.0/16
rtcfile /var/lib/chrony/rtcТестовые сценарии и кейсы приёма
- Установка Chrony на чистой системе: сервис активен после перезагрузки.
- Имитация большого дрейфа (вручную установить системное время отставшим на 5 минут) и проверка, что Chrony/ntpd корректирует время безопасно без резких шагов (или с допустимым makestep).
- Отключение сети и проверка, что демон продолжает корректно учитывать дрейф до повторного подключения.
- Проверка логирования неожиданных смещений времени.
Руководство по реагированию на инциденты: время резко изменилось
- Зафиксировать текущее время и логи:
journalctl -u ntpd --since "1 hour ago". - Определить источник: локальная проблема (аппаратные часы) или внешний сервер.
- При подозрении на внешнюю атаку — переключиться на доверенный локальный сервер или остановить синхронизацию и уведомить команду безопасности.
- Если проблема аппаратная — заменить батарею CMOS и продолжить мониторинг.
- Восстановить корректное время через
ntpd -gqилиchronyc makestep.
Часто задаваемые вопросы
Можно ли установить одновременно Chrony и ntpd?
Нет. Нельзя запускать одновременно два демона, которые управляют системным временем. Они будут конфликтовать. Установите и используйте только один демон. Перед установкой нового демона остановите и удалите старый.
Увеличивает ли смешивание серверов точность часов?
Да. Использование пула серверов (pool) даёт агрегированную оценку времени и помогает устранить ошибки отдельных серверов. Дистрибутивы часто используют пул серверов — например, ubuntu.pool.ntp.org.
Взаимодействуют ли Chrony и systemd-timesyncd?
Systemd‑timesyncd — опция systemd и не обязательна. При установке Chrony или ntpd systemd‑timesyncd обычно отключается или заменяется. Убедитесь, что активен только один механизм синхронизации.
Что безопаснее: публичный пул или внутренний сервер?
Для конфиденциальности и устойчивости внутренний сервер предпочтительнее. Публичные пул‑сервера удобны и надёжны, но внешние сервисы видят IP ваших клиентов.
Итог и рекомендации
- Для большинства десктопов systemd-timesyncd или ntpdate подходят по умолчанию.
- Для серверов используйте ntpd или Chrony. Для виртуальных машин и ноутбуков Chrony часто даёт лучшие результаты.
- Настройте мониторинг и логи. Быстрое обнаружение резких изменений времени сокращает риск проблем с логами, сертификатами и распределёнными системами.
Короткая контрольная карта администратора:
- Проверить: timedatectl
- Если нужен демон: установить chrony или ntp
- Мониторить: chronyc tracking / ntpq -p
- Защитить: ограничить доступ и рассмотреть NTS
Автор снимков: Unsplash. Все скриншоты и правки сделаны администратором системы.
Summary
- Убедитесь, что в вашей среде работает только один механизм синхронизации.
- Выбирайте Chrony для динамичных окружений и ntpd для стабильных серверов.
- Следите за логами и настраивайте ограничения доступа к серверу времени.
Важно: регулярно проверяйте состояние синхронизации и обновляйте пакеты времени для безопасности.