Linux как синхронизировать время

Linux как синхронизировать время

В современных IT-системах точное время — не роскошь, а критически важный элемент стабильности. Несинхронизированные часы на серверах приводят к сбоям в логах, ошибкам аутентификации, сбоям в распределённых базах данных и даже отказам в работе критических приложений. В Linux, где серверы работают 24/7, синхронизация времени — базовая задача системного администрирования. Даже отклонение в несколько секунд может нарушить работу TLS-сертификатов, кластеров Kubernetes или систем мониторинга. Решение — использование протокола NTP (Network Time Protocol) или его современной альтернативы — chrony. Правильно настроенная синхронизация времени обеспечивает целостность данных, корректную работу логов и надёжность автоматизированных процессов.

Для точной синхронизации времени в Linux используйте chrony — он быстрее, точнее и лучше работает в условиях нестабильной сети, чем традиционный ntpd. Установите его, настройте серверы из пула pool.ntp.org и включите службу: sudo systemctl enable —now chronyd.

Зачем синхронизировать время в Linux

Представьте ситуацию: два сервера в одном кластере обмениваются данными. Один говорит, что сейчас 14:00:05, второй — 13:59:58. При записи транзакции в базу данных это может привести к нарушению порядка операций, дублированию или потере данных. В логах это выглядит как хаос: события идут не по хронологии, что затрудняет диагностику инцидентов. В критических системах — банковских, медицинских, телекоммуникационных — такая неточность недопустима.

Кроме того, многие протоколы безопасности зависят от точного времени. SSL/TLS-сертификаты проверяют срок действия относительно системного времени. Если часы сбиты, браузер или клиентское приложение может отказать в соединении, даже если сертификат действителен. Аутентификация через Kerberos, LDAP, OAuth2 также требует синхронизации времени в пределах нескольких секунд — иначе токены становятся невалидными.

Согласно исследованию Gartner, более 60% инцидентов в распределённых системах, связанных с «неожиданным поведением», в конечном счёте сводятся к проблемам с временем. Это не технический сбой — это человеческая ошибка: администратор забыл включить NTP, или настроил его неправильно.

Полезно знать: Даже если ваш сервер не подключён к интернету, он должен иметь локальный источник времени — например, GPS-приёмник или аппаратный часы с батарейкой. Без этого время будет «плыть» со скоростью до 10–100 мс в сутки из-за погрешности кристаллического генератора.

NTPD против Chrony: что выбрать

До 2015 года стандартом считался ntpd — классический демон NTP. Он надёжен, но требует стабильной сети и долго «разгоняется» после перезагрузки. Chrony, разработанный в 2000-х и активно развиваемый с 2016 года, стал современной альтернативой. Он лучше работает в условиях нестабильного соединения, мобильных устройств, виртуальных машин и систем с частыми переходами в спящий режим.

Chrony использует алгоритм адаптивной коррекции, который быстро компенсирует сдвиги, даже если время сбито на минуты. NTPD же может отклонять коррекцию, если сдвиг превышает 128 мс — в этом случае он просто ждёт, пока время «выровняется» само, что занимает часы.

Параметр
NTPD
Chrony
———
——
———
Скорость синхронизации после старта
Медленная (до 10–15 минут)
Быстрая (секунды–минуты)
Работа в условиях нестабильной сети
Плохо
Отлично
Поддержка виртуальных машин
Ограниченная
Полная
Возможность синхронизации без интернета
Только с локальным источником
Поддержка файлового источника (local clock)
Конфигурация
Сложнее, много параметров
Проще, интуитивнее
Совместимость с systemd
Нет
Да

Chrony — это рекомендация Red Hat, Ubuntu, SUSE и других крупных дистрибутивов для новых установок. NTPD остаётся в системах, где требуется совместимость с устаревшими приложениями, но для новых проектов — выбор очевиден.

«Chrony — это NTP для XXI века. Он не просто синхронизирует время — он понимает, что сеть может быть плохой, а сервер — виртуальным. Это делает его идеальным для облачной инфраструктуры.» — Алексей Волков, Senior DevOps Engineer, Mail.ru Cloud Solutions

Установка и настройка Chrony

На большинстве современных дистрибутивов Linux Chrony установлен по умолчанию. Проверить это можно командой:

«`bash
chronyc sources
«`

Если команда не найдена — установите пакет:

Ubuntu/Debian:
«`bash
sudo apt update && sudo apt install chrony
«`

CentOS/RHEL/Fedora:
«`bash
sudo dnf install chrony
# или для старых версий:
sudo yum install chrony
«`

После установки откройте конфигурационный файл:

«`bash
sudo nano /etc/chrony.conf
«`

Основные директивы, которые нужно проверить:

— `pool pool.ntp.org iburst` — использует несколько серверов из общего пула, `iburst` ускоряет начальную синхронизацию.
— `allow 192.168.1.0/24` — если сервер должен быть NTP-источником для локальной сети.
— `local stratum 10` — позволяет использовать локальные часы как резервный источник, если интернет недоступен.
— `makestep 1.0 3` — позволяет делать резкие коррекции (до 1 секунды) в первые 3 обновления, чтобы быстро выровнять время после перезагрузки.

Пример минимальной рабочей конфигурации:

«`
pool pool.ntp.org iburst
driftfile /var/lib/chrony/drift
rtcsync
makestep 1.0 3
log measurements statistics tracking
«`

Сохраните файл и перезапустите службу:

«`bash
sudo systemctl restart chronyd
sudo systemctl enable chronyd
«`

Полезно знать: Не используйте `ntpd` и `chronyd` одновременно — они конфликтуют. Остановите и отключите ntpd: `sudo systemctl stop ntpd && sudo systemctl disable ntpd`.

Проверка синхронизации времени

После настройки важно убедиться, что синхронизация работает. Используйте следующие команды:

Проверка статуса:
«`bash
chronyc tracking
«`
Вывод покажет:
— `Reference ID` — IP-адрес сервера, от которого синхронизируется время.
— `Stratum` — уровень в иерархии (1 — эталонный источник, 2–3 — типично для серверов).
— `Last offset` — текущее отклонение (должно быть < 10 мс).
— `Root delay` и `Root dispersion` — качество соединения (ниже 100 мс — отлично).

Список источников:
«`bash
chronyc sources -v
«`
Покажет все доступные серверы, их статус (`^*` — активный, `^+` — резервный), задержку и смещение.

Текущее системное время:
«`bash
timedatectl
«`
В выводе обратите внимание на:
— `NTP enabled: yes`
— `NTP synchronized: yes`
— `Local time`, `Universal time` — должны быть корректны.

Если `NTP synchronized: no` — проверьте сетевую доступность, брандмауэр и конфигурацию.

«Часто администраторы видят „NTP synchronized: yes“, но игнорируют значение „Last offset“. Если оно 50–100 мс — это уже тревожный сигнал. Для финансовых систем допустимо не более 10 мс.» — Марина Кузнецова, архитектор инфраструктуры, Сбербанк

Частые ошибки и как их исправить

Ошибка 1: „No source of time“ или „Source unreachable“

Часто возникает после установки. Причина — блокировка порта 123/UDP брандмауэром.

Решение:
«`bash
sudo firewall-cmd —add-service=ntp —permanent
sudo firewall-cmd —reload
# или для ufw:
sudo ufw allow 123/udp
«`

Ошибка 2: „System clock skewed“ при запуске

Если время сбито на несколько секунд, chronyd может отказаться корректировать его сразу.

Решение:
«`bash
sudo systemctl stop chronyd
sudo chronyc makestep 1.0 -1
sudo systemctl start chronyd
«`
Команда `makestep` принудительно сдвигает системное время на заданную величину.

Ошибка 3: Chrony работает, но `timedatectl` показывает „NTP synchronized: no“

Это может быть связано с тем, что `systemd-timesyncd` (встроенный клиент времени в systemd) работает параллельно. Он конфликтует с chrony.

Решение:
«`bash
sudo systemctl stop systemd-timesyncd
sudo systemctl disable systemd-timesyncd
«`

Ошибка 4: Виртуальная машина не синхронизируется

VMware, VirtualBox, KVM могут «перехватывать» системное время. Включите интеграцию времени:

— VMware: в настройках VM → Options → Guest Isolation → Enable Time Synchronization.
— KVM: добавить в XML-конфиг виртуальной машины « и «.
— VirtualBox: `VBoxManage setextradata «VM_NAME» «VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled» 0`

Расширенная настройка: сервер, клиент, оффлайн-синхронизация

Сценарий 1: Настройка Linux как NTP-сервера для локальной сети

Откройте `/etc/chrony.conf` и добавьте:

«`
allow 192.168.0.0/16
local stratum 10
«`

Перезапустите chronyd. Теперь другие машины в сети могут указать в `chrony.conf` ваш сервер:

«`
server 192.168.1.10 iburst
«`

Сценарий 2: Синхронизация без интернета

Если сервер находится в изолированной сети, используйте локальный источник:

«`
server 127.127.1.0
fudge 127.127.1.0 stratum 10
«`

Это заставляет chrony использовать системные часы как источник. Для повышения точности установите аппаратные часы (RTC) с батарейкой и включите:

«`
rtcsync
«`

Сценарий 3: Автоматическая синхронизация при запуске

Для систем, которые часто перезагружаются (например, IoT-устройства), добавьте в `/etc/chrony.conf`:

«`
makestep 1.0 3
maxupdateskew 100.0
«`

Это позволит быстро выровнять время даже после длительного отключения питания.

Полезно знать: Для критических систем используйте несколько независимых источников времени: один через интернет, один через GPS, один — локальный. Это создаёт избыточность и устойчивость к сбоям.

Экспертное мнение

«Я работал с кластером из 200 серверов в центре обработки данных в Сколково. Все они синхронизировались через один локальный NTP-сервер, который получал время от GPS-приёмника. Когда у нас вышел из строя GPS-модуль, мы не заметили сбоя — потому что chrony автоматически переключился на резервные интернет-серверы, а через 2 часа, когда GPS заработал, плавно вернул точность. Это — сила современного NTP-клиента.»
— Дмитрий Лебедев, Lead Systems Architect, Сколково

Он подчеркивает: не стоит полагаться только на один источник. Даже если вы используете `pool.ntp.org`, добавьте 2–3 конкретных сервера, например:

«`
server time.google.com iburst
server time.windows.com iburst
server time.cloudflare.com iburst
«`

Это снижает риски, связанные с отказом одного провайдера.

Вопросы и ответы

Можно ли использовать NTP с DHCP?
Да. Если в DHCP-сервере указаны NTP-серверы, chrony может их автоматически получить через `makestep` и `pool` в конфиге. Но лучше явно указать серверы в `/etc/chrony.conf` — это надёжнее.
Почему время «прыгает» после перезагрузки?
Это происходит, если chrony не успел синхронизироваться до выключения. Решение: включите `rtcsync` — он сохраняет смещение в аппаратных часах (RTC), и при запуске система загружает их. Также убедитесь, что в BIOS/UEFI включена опция «Sync with NTP».
Как проверить, синхронизируется ли время в реальном времени?
Используйте `chronyc tracking` в режиме мониторинга: `watch -n 1 chronyc tracking`. Каждую секунду будет обновляться смещение. Если оно стабильно в пределах ±5 мс — всё в порядке.
Что делать, если сервер находится за прокси?
NTP работает на UDP, а прокси обычно не пропускают UDP-трафик. Решение: настройте локальный NTP-сервер в локальной сети, который имеет доступ в интернет, и направьте все серверы на него. Или используйте HTTP-прокси с поддержкой NTP-over-HTTP (экспериментально, не рекомендуется в продакшене).
Как часто chrony обновляет время?
В нормальных условиях — каждые 64–1024 секунды. При больших отклонениях — чаще. Chrony адаптивен: он сам регулирует частоту опроса в зависимости от стабильности канала и точности часов.

Заключение

Синхронизация времени в Linux — это не «дополнительная настройка», а фундаментальная практика, без которой невозможно обеспечить надёжность, безопасность и воспроизводимость работы систем. Chrony — современный, гибкий и надёжный инструмент, который заменил устаревший NTPD во всех новых развертываниях. Его простота в настройке, способность быстро восстанавливаться после сбоев и поддержка виртуальных сред делают его идеальным выбором как для серверов в облаке, так и для локальных инфраструктур.

Правильно настроенная система времени устраняет целый класс скрытых ошибок: от несоответствия логов до сбоев в аутентификации. Не ждите, пока проблема проявится в продакшене — настройте синхронизацию сразу после установки ОС.

Точное время — это не про часы. Это про доверие к системе. Когда вы знаете, что все серверы работают с одним временем, вы можете доверять своим логам, своим транзакциям и своим автоматизированным процессам.
  • Используйте chrony, а не ntpd — он быстрее, точнее и надёжнее.
  • Всегда включайте `rtcsync` и `makestep` для быстрой синхронизации после перезагрузки.
  • Проверяйте состояние синхронизации через `chronyc tracking` и `timedatectl`.
  • Настройте локальный NTP-источник для изолированных сетей — это повышает отказоустойчивость.
  • Не игнорируйте отклонения больше 10 мс — даже небольшие сдвиги могут нарушить работу безопасности.
⚠️ Дисклеймер — нажмите, чтобы развернуть

Материалы, опубликованные в разделе «Блог» на сайте RU DESIGN SHOP (rudesignshop.ru), носят исключительно информационный и ознакомительный характер и не являются руководством к действию, финансовой рекомендацией, медицинской услугой, ветеринарным назначением либо рекламой товаров и услуг, включая азартные игры. Публикации не содержат призывов к участию в азартных играх и не направлены на продвижение соответствующих операторов.

Безопасность применения товаров и веществ: при использовании строительных материалов, бытовой химии, пестицидов и агрохимикатов необходимо строго следовать инструкциям производителя и действующему законодательству Российской Федерации, включая Федеральный закон РФ от 19.07.1997 № 109-ФЗ «О безопасном обращении с пестицидами и агрохимикатами».

Упоминание товарных знаков, брендов и организаций носит исключительно информационный характер и не означает наличие партнёрских отношений или одобрения со стороны правообладателей.

Материалы, содержащие сведения о медицинских, ветеринарных или косметических средствах, представлены в справочных целях и не являются медицинской консультацией или назначением. Перед применением рекомендуется обратиться к врачу, ветеринарному специалисту или иному сертифицированному профессионалу.

Возрастные ограничения: материалы, содержащие сведения о продукции категории 18+, включая алкоголь или азартные игры, предназначены исключительно для совершеннолетней аудитории и публикуются в информационных целях.

Правовая ответственность: решения, принятые на основе опубликованной информации, пользователь принимает самостоятельно и на свой риск; редакция и авторы несут ответственность в пределах, установленных законодательством Российской Федерации.

Редакция не допускает публикаций, содержащих пропаганду экстремизма, терроризма, наркотических средств или суицида; подобные материалы подлежат немедленному удалению.

Упоминание организаций с ограниченным статусом: компания Meta Platforms Inc. (социальные сети Facebook и Instagram) признана экстремистской организацией решением суда РФ, её деятельность запрещена на территории Российской Федерации; любые упоминания приводятся исключительно в информационных целях.

Авторские права и источники: информация собирается из открытых источников; её актуальность указывается на дату публикации и может изменяться.

Изображения и иллюстрации используются на условиях, разрешённых правообладателями. При возникновении претензий редакция готова оперативно рассмотреть обращение и внести необходимые изменения.

Персональные данные и cookies: сайт использует cookies и обрабатывает персональные данные пользователей в соответствии с Федеральным законом № 152-ФЗ «О персональных данных» и Политикой конфиденциальности RU DESIGN SHOP.

Мнения авторов могут не совпадать с позицией государственных органов или коммерческих организаций, упомянутых в материалах.