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

Настройка NTP-сервера и клиентов в Linux (chrony)

NTP(Network Time Protocol) — это сетевой протокол для синхронизации системного времени между компьютерами в сети. Точное время критически важно для работы серверов, ведения логов, аутентификации, планировщиков задач и многих других системных сервисов. В современных дистрибутивах Linux, включая ALT Linux, CentOS, Rocky Linux и другие, для работы с NTP чаще всего используется демон chrony — современная, быстрая и надёжная замена классического ntpd. Chrony особенно эффективен в условиях нестабильных сетей и на устройствах, которые не работают круглосуточно. Принцип работы chrony основан на постоянном анализе задержек сети и плавной корректировке системных часов. Это позволяет избежать резких скачков времени, которые могут нарушить работу приложений. Ключевые преимущества chrony: - Быстрая синхронизация даже при нестабильном соединении; - Поддержка работы в оффлайн-режиме с запоминанием дрейфа часов; - Гибкая настройка источников времени (серверы, локальные часы); - Встроенные инструменты

NTP(Network Time Protocol) — это сетевой протокол для синхронизации системного времени между компьютерами в сети. Точное время критически важно для работы серверов, ведения логов, аутентификации, планировщиков задач и многих других системных сервисов.

В современных дистрибутивах Linux, включая ALT Linux, CentOS, Rocky Linux и другие, для работы с NTP чаще всего используется демон chrony — современная, быстрая и надёжная замена классического ntpd. Chrony особенно эффективен в условиях нестабильных сетей и на устройствах, которые не работают круглосуточно.

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

Ключевые преимущества chrony:

- Быстрая синхронизация даже при нестабильном соединении;

- Поддержка работы в оффлайн-режиме с запоминанием дрейфа часов;

- Гибкая настройка источников времени (серверы, локальные часы);

- Встроенные инструменты мониторинга и диагностики;

- Минимальное потребление ресурсов.

> ⚠️Важно: даже идеально настроенный NTPне заменит резервное копирование и мониторинг. Но без точного времени многие механизмы безопасности и аудита просто не будут работать корректно.

Ниже приведён пример настройки NTP-сервера и клиента в корпоративной сети с использованием chrony.

🖥️Настройка NTP-сервера (host-1)

Предположим, что роль центрального сервера времени выполняет маршрутизатор или выделенный сервер host-01 с IP-адресом **IP-адрес вашего NTP-сервера**.

Шаг 1. Отключаем стандартные пулы серверов

Чтобы сервер не синхронизировался с внешними источниками, а использовал локальную конфигурацию:

bash

[root@host-01 ~] sed -i 's/^pool/ pool/' /etc/chrony.conf

Шаг 2. Добавляем конфигурацию сервера

Настраиваем chrony на работу в режиме сервера со стратумом 5 и разрешаем подключения из локальной сети:

bash

[root@host-01 ~] cat <<EOF >> /etc/chrony.conf

server ntp0.ntp-servers.net iburst prefer minstratum 4

local stratum5

allow0.0.0.0/0

EOF

> 📌*Параметр `local stratum5` указывает, что при отсутствии внешних источников сервер будет считать себя источником времени 5-го уровня. `allow0.0.0.0/0` разрешает подключения любым клиентам — в продакшене рекомендуется ограничить диапазон.

Шаг 3. Добавьте логирование для отладки.

bash

logdir /var/log/chrony

log measurements statistics tracking

Шаг 4. Перезапускаем службу

bash

[root@host-01 ~] systemctl restart chronyd

[root@host-01 ~] systemctl enable chronyd

Шаг 5. Настройте автозапуск и мониторинг.

bash

Проверка статуса службы

[root@host-01 ~] systemctl status chronyd

Добавление в мониторинг (например, для Prometheus)

chronyc tracking | grep "Stratum\|System time"

Шаг 6. Проверяем работу

bash

[root@host-1 ~] chronyc tracking

Ожидаемый вывод:

Reference ID : XXXXXXXX (источник)

Stratum : 5

Ref time (UTC) : Mon Mar 02 07:07:28 2024

System time : 0.000000316 seconds slow of NTP time

Last offset : +0.000360014 seconds

Root delay : 0.052456934 seconds

Leap status : Normal

> ✅ Если `Leap status: Normal` и `Stratum: 5` — сервер готов к работе.

Шаг 7. Проверьте открытые порты.

bash

Убедитесь, что порт 123/UDPоткрыт для клиентов

[root@host-01 ~] firewall-cmd --list-services | grep ntp

[root@host-01 ~] firewall-cmd --add-service=ntp --permanent

[root@host-01 ~] firewall-cmd --reload

💻 Настройка NTP-клиентов

🔹 Клиент host-2

Шаг 1. Отключаем стандартные пулы

bash

[root@host-02 ~] sed -i 's/^pool/ pool/' /etc/chrony.conf

Шаг 2. Указываем наш NTP-сервер

bash

[root@host-02 ~] echo "server**IP-адрес_вашего_NTP-сервера** iburst" >> /etc/chrony.conf

> 📌*Параметр `iburst` ускоряет начальную синхронизацию, отправляя пакет запросов "пачкой".

Шаг 3. Добавьте резервный сервер для отказоустойчивости.

bash

echo"server**IP-адрес_резервного_NTP-сервера** iburst minpoll 6 maxpoll 10" >> /etc/chrony.conf

Шаг 4. Перезапускаем chrony

bash

[root@host-02 ~] systemctl restart chronyd

[root@host-02 ~] systemctl enable chronyd

Шаг 5. Проверяем синхронизацию

bash

[root@host-02 ~] chronyc sources -v

Шаг 6. Настройте автоматическую проверку расхождения времени.

bash

Создайте скрипт проверки /usr/local/bin/check-ntp.sh

!/bin/bash

OFFSET=$(chronyc tracking | grep "System time" | awk '{print $4}')

if (( $(echo "$OFFSET > 1.0" | bc -l) )); then

echo "WARNING: NTP offset > 1 second!" | logger -t ntp-monitor

fi

Добавьте в cron каждые 15 минут

*/15 * * * * /usr/local/bin/check-ntp.sh

Шаг 7. Добавьте настройку для экономии трафика в медленных сетях.

bash

В /etc/chrony.conf добавьте:

minpoll8

maxpoll10

makestep1.0 3

> Это уменьшит частоту опроса сервера и позволит резкую подстройку только в первые 3 обновления.

Проверка:

bash

[root@host-03 ~] chronyc sources

Шаг 8. Включите синхронизацию аппаратных часов (RTC).

bash

В /etc/chrony.conf раскомментируйте или добавьте:

rtcsync

> Это позволит ядру периодически обновлять аппаратные часы, что полезно после перезагрузки.

> 🔔Подпишитесь на канал, чтобы не пропустить новые руководства по настройке Linux-сервисов!

*Статья подготовлена на основе практического опыта развёртывания NTPв корпоративных сетях. Все команды протестированы в среде ALT Linux и совместимых дистрибутивах.*