Linux как синхронизировать время
В современных IT-системах точное время — не роскошь, а критически важный элемент стабильности. Несинхронизированные часы на серверах приводят к сбоям в логах, ошибкам аутентификации, сбоям в распределённых базах данных и даже отказам в работе критических приложений. В Linux, где серверы работают 24/7, синхронизация времени — базовая задача системного администрирования. Даже отклонение в несколько секунд может нарушить работу TLS-сертификатов, кластеров Kubernetes или систем мониторинга. Решение — использование протокола NTP (Network Time Protocol) или его современной альтернативы — chrony. Правильно настроенная синхронизация времени обеспечивает целостность данных, корректную работу логов и надёжность автоматизированных процессов.
Зачем синхронизировать время в Linux
Представьте ситуацию: два сервера в одном кластере обмениваются данными. Один говорит, что сейчас 14:00:05, второй — 13:59:58. При записи транзакции в базу данных это может привести к нарушению порядка операций, дублированию или потере данных. В логах это выглядит как хаос: события идут не по хронологии, что затрудняет диагностику инцидентов. В критических системах — банковских, медицинских, телекоммуникационных — такая неточность недопустима.
Кроме того, многие протоколы безопасности зависят от точного времени. SSL/TLS-сертификаты проверяют срок действия относительно системного времени. Если часы сбиты, браузер или клиентское приложение может отказать в соединении, даже если сертификат действителен. Аутентификация через Kerberos, LDAP, OAuth2 также требует синхронизации времени в пределах нескольких секунд — иначе токены становятся невалидными.
Согласно исследованию Gartner, более 60% инцидентов в распределённых системах, связанных с «неожиданным поведением», в конечном счёте сводятся к проблемам с временем. Это не технический сбой — это человеческая ошибка: администратор забыл включить NTP, или настроил его неправильно.
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
На большинстве современных дистрибутивов 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
«`
Проверка синхронизации времени
После настройки важно убедиться, что синхронизация работает. Используйте следующие команды:
Проверка статуса:
«`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` — проверьте сетевую доступность, брандмауэр и конфигурацию.
Частые ошибки и как их исправить
Ошибка 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
«`
Это позволит быстро выровнять время даже после длительного отключения питания.
Экспертное мнение
Он подчеркивает: не стоит полагаться только на один источник. Даже если вы используете `pool.ntp.org`, добавьте 2–3 конкретных сервера, например:
«`
server time.google.com iburst
server time.windows.com iburst
server time.cloudflare.com iburst
«`
Это снижает риски, связанные с отказом одного провайдера.
Вопросы и ответы
Заключение
Синхронизация времени в 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.
Мнения авторов могут не совпадать с позицией государственных органов или коммерческих организаций, упомянутых в материалах.