Добавить в корзинуПозвонить
Найти в Дзене

Настройка NTP сервера в Linux (chrony)

Проблема На серверах и рабочих станциях в локальной сети время расходится. Это приводит к проблемам с аутентификацией в домене, рассогласованию логов, ошибкам в распределённых системах и даже некорректной работе приложений, зависящих от временных меток. Встроенные часы компьютеров (CMOS) неточны и со временем уходят вперёд или назад. Для корпоративной сети необходим собственный сервер точного времени. Он будет синхронизироваться с надёжными внешними источниками и раздавать время всем внутренним устройствам. В Linux есть два основных демона для синхронизации времени: ntpd (классический NTP) и chrony (современная альтернатива). Chrony имеет преимущества для систем, которые не всегда подключены к сети, а также для виртуальных машин и сред с частыми изменениями времени. Решение Chrony это реализация NTP (Network Time Protocol), разработанная специально для систем, где важна быстрая синхронизация после загрузки, работа в условиях нестабильной сети и на виртуальном оборудовании. Chrony сост

Проблема

На серверах и рабочих станциях в локальной сети время расходится. Это приводит к проблемам с аутентификацией в домене, рассогласованию логов, ошибкам в распределённых системах и даже некорректной работе приложений, зависящих от временных меток. Встроенные часы компьютеров (CMOS) неточны и со временем уходят вперёд или назад.

Для корпоративной сети необходим собственный сервер точного времени. Он будет синхронизироваться с надёжными внешними источниками и раздавать время всем внутренним устройствам. В Linux есть два основных демона для синхронизации времени: ntpd (классический NTP) и chrony (современная альтернатива). Chrony имеет преимущества для систем, которые не всегда подключены к сети, а также для виртуальных машин и сред с частыми изменениями времени.

Решение

Chrony это реализация NTP (Network Time Protocol), разработанная специально для систем, где важна быстрая синхронизация после загрузки, работа в условиях нестабильной сети и на виртуальном оборудовании. Chrony состоит из двух компонентов: chronyd (демон) и chronyc (интерактивная консоль для управления и мониторинга).

Chrony умеет синхронизировать время с внешними NTP серверами. Выступать в роли NTP сервера для локальной сети. Корректировать время плавно (без скачков) или, при необходимости, делать мгновенные коррекции. Работать с аппаратным таймером (RTC). Хорошо адаптироваться к прерывистым соединениям и виртуализации.

Мы настроим chrony на Ubuntu Server. Инструкции подойдут для Debian, CentOS, RHEL, Astra Linux и Alt Linux с небольшими различиями. Chrony будет работать как NTP сервер для локальной сети, синхронизирующийся с внешними источниками (pool.ntp.org).

Пошаговая инструкция

Шаг 1. Установка chrony

Во многих современных дистрибутивах chrony уже установлен по умолчанию (вместо ntpd). Проверим.

text

systemctl status chrony # Ubuntu (имя службы chrony)
systemctl status chronyd # CentOS/RHEL (имя службы chronyd)

Если не установлен.

Ubuntu, Debian.

text

sudo apt update
sudo apt install chrony -y

CentOS, RHEL.

text

sudo yum install chrony -y

После установки служба автоматически запускается. Убедитесь.

text

sudo systemctl enable chrony # или chronyd
sudo systemctl start chrony

Шаг 2. Базовая настройка

Основной конфигурационный файл chrony находится.
Ubuntu, Debian: /etc/chrony/chrony.conf
CentOS, RHEL: /etc/chrony.conf

Сделаем резервную копию.

text

sudo cp /etc/chrony/chrony.conf /etc/chrony/chrony.conf.bak

Откроем файл для редактирования.

text

sudo nano /etc/chrony/chrony.conf # Ubuntu/Debian
sudo nano /etc/chrony.conf # CentOS/RHEL

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

text

# Использовать публичные NTP серверы (рекомендуется несколько)
pool 0.pool.ntp.org iburst
pool 1.pool.ntp.org iburst
pool 2.pool.ntp.org iburst
pool 3.pool.ntp.org iburst

# Сервер будет слушать все интерфейсы и отвечать на запросы
allow 192.168.0.0/16 # разрешить доступ для локальной сети
# allow 10.0.0.0/8 # при необходимости добавить другие подсети

# Для большей точности можно использовать локальные часы как fallback
local stratum 10

# Файл для хранения дрейфа (drift)
driftfile /var/lib/chrony/drift

# Логирование
logdir /var/log/chrony
log measurements statistics tracking

# Настройки для виртуальных машин
rtcsync # синхронизировать аппаратные часы

Пояснения.
pool указывает группу NTP серверов, к которым будет обращаться chrony. Ключ iburst ускоряет начальную синхронизацию.
allow разрешает доступ к NTP серверу для указанных подсетей. Без этой директивы сервер не будет отвечать на запросы извне.
local stratum 10 если внешние источники недоступны, chrony продолжит работать как сервер, но с высоким стратумом (указывает на то, что время не синхронизировано с внешним эталоном). Это полезно для изолированных сетей.
rtcsync сообщает ядру регулярно синхронизировать аппаратные часы (RTC) с системным временем.
driftfile хранит скорость дрейфа часов, вычисленную chrony.

Полная документация по формату конфигурации доступна в man странице chrony.conf или на официальном сайте chrony.

Шаг 3. Настройка разрешений для локальной сети

Убедитесь, что ваша локальная подсеть (например 192.168.1.0/24) разрешена в директиве allow. Если у вас несколько подсетей, можно добавить несколько строк.

Если сервер должен принимать запросы из любой сети, используйте.

text

allow all

Но это не рекомендуется для серверов, доступных из интернета, так как их могут использовать в DDoS атаках (открытые NTP резолверы).

Шаг 4. Открытие порта в брандмауэре

NTP использует UDP порт 123. Откройте его.

Ubuntu, Debian (ufw).

text

sudo ufw allow 123/udp

CentOS, RHEL (firewalld).

text

sudo firewall-cmd --permanent --add-service=ntp
sudo firewall-cmd --reload

Если сервер работает в виртуальной среде, также может потребоваться отключить синхронизацию времени с гипервизором (например в VMware), чтобы chrony сам управлял временем. В VMware рекомендуется добавить в параметры виртуальной машины tools.syncTime = "FALSE".

Шаг 5. Проверка работы и мониторинг

После внесения изменений перезапустите chrony.

text

sudo systemctl restart chrony # или chronyd

Проверьте статус синхронизации с помощью chronyc.

text

chronyc sources -v

Вывод покажет список источников времени, их состояние. ^* текущий выбранный источник, ^+ доступные резервные источники. Пример.

text

210 Number of sources = 4
MS Name/IP address Stratum Poll Reach LastRx Last sample
=========================================================================
^* ntp1.example.com 2 6 17 43 +0.012[ +0.012] +/- 0.023
^+ ntp2.example.com 2 6 17 45 -0.005[ -0.005] +/- 0.031

Команда chronyc tracking показывает подробную информацию о текущей синхронизации. Смещение, дрейф, частоту обновления.

Чтобы проверить, что сервер отвечает на запросы из локальной сети, выполните с клиента.

text

chronyc -n sources

или

text

ntpdate -q 192.168.1.10 # где IP вашего NTP сервера

Шаг 6. Настройка клиентов

На клиентских машинах (в том числе Windows) укажите в качестве NTP сервера IP адрес вашего chrony сервера.

Для Windows. Панель управления → Дата и время → Интернет-время → Изменить настройки. Укажите 192.168.1.10 (или имя сервера) в поле «Сервер».

Для Linux клиентов (с chrony). В /etc/chrony/chrony.conf вместо pool пропишите.

text

server 192.168.1.10 iburst

Для клиентов, использующих systemd-timesyncd (Ubuntu).

text

sudo timedatectl set-ntp true
sudo systemctl stop systemd-timesyncd
sudo nano /etc/systemd/timesyncd.conf

Укажите.

text

[Time]
NTP=192.168.1.10

Затем.

text

sudo systemctl start systemd-timesyncd
sudo systemctl status systemd-timesyncd

Шаг 7. Управление через chronyc (интерактивная консоль)

Chrony предоставляет мощную консоль chronyc для управления и мониторинга. Запустите.

text

chronyc

В интерактивном режиме доступны команды.
sources -v просмотр источников.
tracking статус синхронизации.
activity количество активных серверов и клиентов.
clients список клиентов, обращавшихся к серверу.
makestep принудительная коррекция времени (если разрешено).
Выход quit.

Шаг 8. Обеспечение точности в виртуальных средах

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

text

# Увеличить чувствительность к изменениям времени (для VM)
tempcomp /sys/class/thermal/thermal_zone0/temp # если есть датчик температуры

Более подробные рекомендации для виртуальных сред можно найти в официальной документации chrony.

Шаг 9. Устранение распространённых проблем

ПроблемаПричинаРешениеНет синхронизации с внешними источникамиНет доступа в интернет или DNS не резолвит pool.ntp.orgПроверьте сеть, временно укажите IP адреса (например server 8.8.8.8). Убедитесь, что порт 123 открыт исходяще.Сервер не отвечает клиентамНе настроена директива allowДобавьте allow 192.168.0.0/16 или allow all для теста.Время скачет, нестабильноДругие службы (например ntpd) конфликтуютУбедитесь, что ntpd отключён: sudo systemctl stop ntp && sudo systemctl disable ntpОшибка «No suitable source for synchronisation»Нет доступных источниковПроверьте chronyc sources, возможно, серверы недоступны. Добавьте iburst для ускорения.После перезагрузки время сильно отличаетсяАппаратные часы неточныУбедитесь, что включён rtcsync. Можно добавить makestep 1 3 в конфиг, чтобы chrony мог сделать резкий шаг при больших расхождениях в первые 3 обновления.

Дополнительные возможности

Аутентификация. chrony поддерживает аутентификацию NTP с помощью симметричных ключей (NTPv4). Это полезно для защиты от подделки времени в критических системах.

Активный мониторинг. можно настроить chronyc для сбора метрик и интеграции с системами мониторинга (например Prometheus).

Использование PTP (Precision Time Protocol). в версиях chrony, собранных с поддержкой PTP, можно синхронизировать время с ещё большей точностью для финансовых или промышленных систем.

Chrony это современный, гибкий и производительный NTP демон, который идеально подходит для большинства сценариев. От домашнего сервера до корпоративной инфраструктуры. Он легко настраивается, быстро достигает точного времени и надёжно работает даже в нестабильных сетях. Используя chrony, вы обеспечите единое время для всех устройств в сети, что критически важно для корректной работы домена, логов и распределённых приложений.

Для более глубокого изучения обратитесь к официальным источникам. Официальный сайт chrony: https://chrony.tuxfamily.org. Документация chrony (man страницы): man chrony, man chrony.conf, man chronyc. Red Hat Enterprise Linux 9: Configuring chrony. Ubuntu Server Guide: Time Synchronization.

Настройка NTP-сервера в Linux (chrony) | Андрей Коровин | Сисадмин | IT-инженер