Установка NTP на Ubuntu 22.04/20.04: настройка сервера времени | AdminWiki

Установка и настройка NTP на Ubuntu: полное руководство для точной синхронизации времени

18 декабря 2025 7 мин. чтения #chrony #linux #ntp #ntpd #systemd #ubuntu #сервер времени #синхронизация времени

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

Что такое NTP и зачем он нужен на Ubuntu?

NTP — это протокол синхронизации времени по сети, который позволяет компьютерам сверять свои системные часы с точными эталонными серверами. В современных дистрибутивах Ubuntu есть два основных решения:

Система Описание Рекомендация
chrony Современная реализация по умолчанию в Ubuntu 20.04+ Для большинства случаев, особенно в облачных средах
ntpd Классическая реализация NTP Для legacy-систем или специфических требований
Важно: Начиная с Ubuntu 16.04, chrony является стандартным демоном синхронизации времени. Он лучше работает в условиях нестабильного сетевого соединения и быстрее корректирует время.

Установка chrony на Ubuntu

Давай начнем с установки chrony — современного и рекомендуемого решения для синхронизации времени.

Шаг 1: Обновление системы и установка chrony

bash
# Обновляем список пакетов
sudo apt update

# Устанавливаем chrony
sudo apt install chrony -y

# Проверяем статус службы
sudo systemctl status chrony

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

Основной конфигурационный файл chrony находится в /etc/chrony/chrony.conf. Давай отредактируем его:

bash
# Создаем backup оригинального конфига
sudo cp /etc/chrony/chrony.conf /etc/chrony/chrony.conf.backup

# Редактируем конфигурационный файл
sudo nano /etc/chrony/chrony.conf

Вот пример минимальной конфигурации для публичных NTP-серверов:

config
# Используем пул серверов Ubuntu
pool ntp.ubuntu.com iburst maxsources 4
pool 0.ubuntu.pool.ntp.org iburst maxsources 1
pool 1.ubuntu.pool.ntp.org iburst maxsources 1
pool 2.ubuntu.pool.ntp.org iburst maxsources 2

# Разрешаем синхронизацию от локальных часов (только для изолированных сетей)
#allow 192.168.1.0/24

# Локальные часы как резервный источник
#local stratum 10

# Дополнительные настройки
makestep 1.0 3
rtcsync
keyfile /etc/chrony/chrony.keys
driftfile /var/lib/chrony/chrony.drift
logdir /var/log/chrony
maxupdateskew 100.0
hwclockfile /etc/adjtime
Внимание: Параметр iburst ускоряет первоначальную синхронизацию, отправляя несколько запросов подряд. Параметр makestep 1.0 3 позволяет делать скачкообразную коррекцию времени, если расхождение больше 1 секунды в первые 3 обновления.

Шаг 3: Перезапуск и проверка chrony

bash
# Перезапускаем chrony для применения настроек
sudo systemctl restart chrony

# Проверяем статус
sudo systemctl status chrony

# Смотрим источники времени
chronyc sources -v

# Проверяем отслеживание
chronyc tracking

Установка классического ntpd на Ubuntu

Если тебе нужна классическая реализация ntpd, вот как ее установить:

Шаг 1: Установка ntpd

bash
# Устанавливаем ntp (пакет содержит ntpd)
sudo apt install ntp -y

# Отключаем systemd-timesyncd, если он активен
sudo systemctl disable systemd-timesyncd
sudo systemctl stop systemd-timesyncd

Шаг 2: Настройка ntpd

Конфигурационный файл ntpd находится в /etc/ntp.conf:

config
# Основные серверы времени
server 0.ubuntu.pool.ntp.org
server 1.ubuntu.pool.ntp.org
server 2.ubuntu.pool.ntp.org
server 3.ubuntu.pool.ntp.org

# Использовать локальные часы как резерв (stratum 10)
#server 127.127.1.0
#fudge 127.127.1.0 stratum 10

# Ограничения доступа
restrict -4 default kod notrap nomodify nopeer noquery limited
restrict -6 default kod notrap nomodify nopeer noquery limited
restrict 127.0.0.1
restrict ::1

# Разрешить синхронизацию из локальной сети
#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap

# Drift файл
driftfile /var/lib/ntp/ntp.drift

# Log файл
logfile /var/log/ntp.log

Шаг 3: Запуск и проверка ntpd

bash
# Перезапускаем ntpd
sudo systemctl restart ntp

# Проверяем статус
sudo systemctl status ntp

# Проверяем синхронизацию
ntpq -p

# Подробная информация
ntpstat

Настройка NTP-сервера для локальной сети

Если тебе нужно настроить сервер времени для внутренней сети, добавь эти строки в конфигурацию:

config
# Для chrony (/etc/chrony/chrony.conf):
allow 192.168.1.0/24
local stratum 10

# Для ntpd (/etc/ntp.conf):
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
server 127.127.1.0
fudge 127.127.1.0 stratum 10

Мониторинг и диагностика проблем с NTP

Полезные команды для chrony

bash
# Показать все источники времени
chronyc sources

# Подробный вывод источников
chronyc sources -v

# Показать статистику отслеживания
chronyc tracking

# Показать активные соединения
chronyc activity

# Проверить, синхронизированы ли часы
chronyc waittrigger 3 0.1

# Вручную обновить время
chronyc makestep

Полезные команды для ntpd

bash
# Показать пиры (аналогично chronyc sources)
ntpq -p

# Показать системные переменные
ntpq -c rv

# Показать ассоциации
ntpq -c as

# Проверить статус синхронизации
ntpstat

# Подробные логи
tail -f /var/log/ntp.log

Проверка системного времени

bash
# Текущее системное время
date

# Аппаратные часы
sudo hwclock --show

# Разница между системными и аппаратными часами
sudo hwclock --compare

# Время в UTC
date -u

Часто задаваемые вопросы (FAQ)

Какой демон времени используется в Ubuntu по умолчанию?

Начиная с Ubuntu 16.04, chrony является демоном времени по умолчанию. В более ранних версиях использовался ntpd. Systemd-timesyncd предоставляет базовую синхронизацию, но для точного времени рекомендуется использовать chrony или ntpd.

Что делать, если время постоянно "уплывает"?

Попробуй эти шаги:

  • Проверь правильность настроек в /etc/chrony/chrony.conf или /etc/ntp.conf
  • Убедись, что фаервол не блокирует порт 123 (UDP)
  • Попробуй другие NTP-серверы из пула
  • Проверь аппаратные часы: sudo hwclock --debug
  • Увеличь параметр makestep в chrony

Как настроить NTP за прокси или в изолированной сети?

В изолированной сети:

  1. Настрой один сервер с доступом к внешним NTP-серверам
  2. На остальных серверах укажи внутренний NTP-сервер
  3. Используй local stratum 10 как резервный источник
  4. Для прокси настрой переменные окружения HTTP_PROXY/HTTPS_PROXY

В чем разница между chrony и ntpd?

Основные различия:

  • chrony: лучше работает с прерывистым сетевым соединением, быстрее корректирует большие расхождения времени, меньше ресурсов
  • ntpd: более консервативен в коррекции времени, лучше для стабильных сетей, больше функций для мониторинга
  • В большинстве случаев chrony предпочтительнее, особенно в виртуальных и облачных средах

Автоматизация и скрипты

Вот простой скрипт для быстрой установки и настройки chrony:

bash
#!/bin/bash
# Скрипт установки и настройки chrony на Ubuntu

set -e

echo "Обновление пакетов..."
sudo apt update

echo "Установка chrony..."
sudo apt install chrony -y

echo "Настройка chrony.conf..."
sudo cp /etc/chrony/chrony.conf /etc/chrony/chrony.conf.backup.$(date +%Y%m%d)

cat << EOF | sudo tee /etc/chrony/chrony.conf
pool ntp.ubuntu.com iburst maxsources 4
pool 0.ubuntu.pool.ntp.org iburst maxsources 2
makestep 1.0 3
rtcsync
keyfile /etc/chrony/chrony.keys
driftfile /var/lib/chrony/chrony.drift
logdir /var/log/chrony
maxupdateskew 100.0
hwclockfile /etc/adjtime
EOF

echo "Перезапуск chrony..."
sudo systemctl restart chrony
sudo systemctl enable chrony

echo "Проверка статуса..."
sleep 2
chronyc sources -v

echo "\nУстановка завершена!"
Совет: Для production-среды добавь мониторинг NTP-статуса в свою систему мониторинга (например, Prometheus с chrony_exporter или проверку через nrpe).

Заключение

Установка и настройка NTP на Ubuntu — критически важная задача для поддержания консистентности времени в твоей инфраструктуре. Современные дистрибутивы Ubuntu используют chrony как решение по умолчанию, и в большинстве случаев это оптимальный выбор. Помни:

  • Всегда настраивай несколько источников времени для надежности
  • Регулярно мониторь статус синхронизации
  • В изолированных сетях создавай иерархию NTP-серверов
  • Тестируй восстановление времени после перезагрузки
  • Документируй конфигурацию NTP в твоей инфраструктуре

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

Поделиться:
Сохранить гайд? В закладки браузера