Перейти к основному содержимому
Вернуться в категорию

Настройка часового пояса и NTP: синхронизация времени сервера

Руководство по настройке часового пояса с timedatectl, конфигурации NTP с chrony и systemd-timesyncd, синхронизации времени сервера и шагам проверки на Linux-серверах.

Время чтения: 10 мин Управление сервером
ntpчасовой поясtimedatectlchronytimesyncdсинхронизациявремя
Автор
REXE Teknoloji Network & Security Team
Редактор
REXE Teknoloji Technical Editorial
Первая публикация
Последнее обновление

Настройка часового пояса и NTP: синхронизация времени сервера

Правильная настройка времени сервера критически важна для согласованности журналов, проверки SSL-сертификатов, операций с базами данных и запланированных задач. Неправильные настройки времени могут привести к уязвимостям безопасности и ошибкам приложений. В этом руководстве рассматривается настройка часового пояса и NTP на Linux-серверах.

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

hljs bash
# Просмотр системного времени, аппаратных часов и статуса NTP
timedatectl

# Показать текущую дату и время
date

# Показать время UTC
date -u

# Показать аппаратные часы
sudo hwclock --show

Настройка часового пояса

Изменение часового пояса с timedatectl

hljs bash
# Просмотр текущего часового пояса
timedatectl | grep "Time zone"

# Список всех доступных часовых поясов
timedatectl list-timezones

# Фильтрация по региону
timedatectl list-timezones | grep Europe
timedatectl list-timezones | grep Asia

# Установка часового пояса
sudo timedatectl set-timezone Europe/Moscow
sudo timedatectl set-timezone UTC
sudo timedatectl set-timezone Europe/Berlin
sudo timedatectl set-timezone America/New_York
sudo timedatectl set-timezone Asia/Dubai

Ручная настройка через символическую ссылку

hljs bash
# Альтернативный метод (для старых систем)
sudo ln -sf /usr/share/zoneinfo/Europe/Moscow /etc/localtime

# Обновить /etc/timezone
echo "Europe/Moscow" | sudo tee /etc/timezone

# Проверить изменение
date

Серверы REXE поставляются с часовым поясом UTC по умолчанию. Хранение серверов в UTC также является хорошей практикой для анализа журналов.

Синхронизация времени NTP

NTP (Network Time Protocol) синхронизирует часы сервера с серверами времени в интернете.

systemd-timesyncd (Лёгкое решение)

hljs bash
# Проверить статус
sudo systemctl status systemd-timesyncd

# Просмотр статуса синхронизации NTP
timedatectl show-timesync --all

# Включить NTP
sudo timedatectl set-ntp true

# Отключить NTP
sudo timedatectl set-ntp false

Конфигурация timesyncd

hljs bash
# Редактировать файл конфигурации
sudo nano /etc/systemd/timesyncd.conf
hljs ini
[Time]
# Основные NTP-серверы
NTP=0.ru.pool.ntp.org 1.ru.pool.ntp.org time.cloudflare.com
# Резервные NTP-серверы
FallbackNTP=2.pool.ntp.org 3.pool.ntp.org time.google.com
RootDistanceMaxSec=5
hljs bash
# Перезапустить службу
sudo systemctl restart systemd-timesyncd

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

Chrony (Расширенное решение)

Chrony обеспечивает лучшую производительность для прерывисто подключённых или виртуализированных сред.

hljs bash
# Установить chrony (Ubuntu/Debian)
sudo apt install chrony -y

# Установить chrony (RHEL/CentOS/AlmaLinux)
sudo dnf install chrony -y

# Запустить и включить службу
sudo systemctl enable --now chronyd

Конфигурация Chrony

hljs bash
# Редактировать файл конфигурации
sudo nano /etc/chrony/chrony.conf  # Ubuntu/Debian
# или
sudo nano /etc/chrony.conf  # RHEL/CentOS
hljs bash
# Пул NTP-серверов
pool 0.ru.pool.ntp.org iburst
pool 1.ru.pool.ntp.org iburst

# Cloudflare NTP (высокая точность)
server time.cloudflare.com iburst

# Google NTP
server time.google.com iburst

driftfile /var/lib/chrony/drift
logdir /var/log/chrony
makestep 1.0 3
rtcsync
hljs bash
# Перезапустить службу
sudo systemctl restart chronyd

# Проверить статус chrony
chronyc tracking

# Список NTP-источников
chronyc sources -v

# Статистика источников
chronyc sourcestats

Рекомендуемые NTP-серверы

СерверОписаниеПрименение
pool.ntp.orgГлобальный пул NTPОбщее использование
ru.pool.ntp.orgРоссийский пул NTPРоссийские серверы
time.cloudflare.comCloudflare NTPВысокая точность
time.google.comGoogle NTPВысокая надёжность

Синхронизация аппаратных часов (RTC)

hljs bash
# Записать системное время в аппаратные часы
sudo hwclock --systohc

# Прочитать аппаратные часы в системное время
sudo hwclock --hctosys

# Установить аппаратные часы в UTC
sudo hwclock --systohc --utc

Проверка

hljs bash
# Проверить статус синхронизации NTP
timedatectl | grep synchronized

# Проверить синхронизацию с chrony
chronyc tracking | grep "System time"

Не запускайте chrony и systemd-timesyncd одновременно. При установке chrony отключите timesyncd: sudo systemctl disable --now systemd-timesyncd

Устранение неполадок

Часы не синхронизируются

hljs bash
# Проверить порт NTP (UDP 123)
sudo ufw allow 123/udp

# Проверить журнал chrony
sudo tail -f /var/log/chrony/tracking.log

# Принудительная синхронизация chrony
sudo chronyc makestep

Большое расхождение времени

hljs bash
# Установить время вручную (с отключённым NTP)
sudo timedatectl set-ntp false
sudo timedatectl set-time "2024-01-15 14:30:00"
sudo timedatectl set-ntp true

# Быстрое исправление с chrony
sudo chronyc makestep

Заключение

Правильная настройка часового пояса и NTP является фундаментальным требованием для надёжной серверной инфраструктуры. На серверах REXE вы можете поддерживать синхронизацию часов с помощью chrony или systemd-timesyncd, обеспечивая согласованность журналов и надёжность приложений.

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

Почему следует держать сервер в UTC?

UTC — универсальный стандарт без летнего времени. Хранение журналов в UTC упрощает сравнение событий между серверами в разных часовых поясах. Преобразование часового пояса для пользователей можно выполнять на уровне приложения.

В чём разница между chrony и systemd-timesyncd?

systemd-timesyncd легче и проще, достаточен для большинства случаев. chrony предлагает расширенные функции: лучшую производительность при прерывистых соединениях, более быструю синхронизацию и более точное управление часами. Для виртуализированных сред рекомендуется chrony.

Синхронизация NTP не работает, что делать?

Сначала проверьте статус NTP с помощью 'timedatectl'. Убедитесь, что порт UDP 123 открыт ('sudo ufw allow 123/udp'). При использовании chrony проверьте источники NTP с 'chronyc sources -v'. При большом расхождении времени принудительно синхронизируйте с 'sudo chronyc makestep'.

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

Используйте региональный пул pool.ntp.org для вашего местоположения (например, ru.pool.ntp.org для России). Для высокой точности добавьте 'time.cloudflare.com' или 'time.google.com'. Определение нескольких серверов в конфигурации chrony повышает надёжность.

Влияет ли изменение часового пояса на работающие приложения?

Да, работающие приложения обычно читают часовой пояс при запуске. Возможно, потребуется перезапустить приложения для применения изменения. Особенно для баз данных и веб-серверов выполните 'systemctl restart' после изменения часового пояса.

Связанные статьи

Сетевой трафикВходящий GbpsИсходящий Gbps