Настройка часового пояса и синхронизации времени в Linux
Часовой пояс на Linux-сервере задаётся командой timedatectl set-timezone, а точность времени обеспечивает синхронизация по NTP — через systemd-timesyncd или chrony. Правильное время критично для логов, TLS-сертификатов, cron-задач и баз данных. Ниже — полная настройка.
Почему время важно
Рассинхронизация часов ломает проверку TLS-сертификатов, путает порядок записей в логах, сбивает cron и репликацию БД. На VPS время может «уплывать», поэтому синхронизация по NTP обязательна.
Шаг 1. Текущее состояние
timedatectl
Вывод покажет локальное время, UTC, часовой пояс и статус NTP-синхронизации (System clock synchronized: yes/no).
Шаг 2. Установка часового пояса
Посмотреть список поясов:
timedatectl list-timezones | grep -i riga
Установить нужный:
timedatectl set-timezone Europe/Riga
Другие примеры: Europe/Moscow, Europe/Kyiv, UTC. Проверьте:
date
Для серверов часто оставляют UTC — это упрощает работу с распределёнными системами и логами.
Шаг 3. Включение NTP-синхронизации
На большинстве современных дистрибутивов работает встроенный systemd-timesyncd:
timedatectl set-ntp true
Проверьте статус:
timedatectl show-timesync --all
systemctl status systemd-timesyncd
Строка System clock synchronized: yes означает, что время подтягивается автоматически.
Смена NTP-серверов у timesyncd
Отредактируйте /etc/systemd/timesyncd.conf:
[Time]
NTP=0.pool.ntp.org 1.pool.ntp.org
FallbackNTP=2.pool.ntp.org 3.pool.ntp.org
Перезапустите:
systemctl restart systemd-timesyncd
Альтернатива: chrony (точнее)
chrony лучше держит точность при нестабильной сети и на VPS. Установка:
apt install -y chrony
systemctl enable --now chrony
На Ubuntu сервис называется chrony, на некоторых системах — chronyd. Проверка источников времени:
chronyc sources -v
chronyc tracking
chronyc tracking покажет смещение (offset) и точность синхронизации. Настройка серверов — в /etc/chrony/chrony.conf:
pool 0.pool.ntp.org iburst
pool 1.pool.ntp.org iburst
iburst ускоряет первую синхронизацию.
Форсировать немедленную синхронизацию:
chronyc makestep
Аппаратные часы (RTC)
Записать системное время в аппаратные часы:
hwclock --systohc
На VPS часы обычно виртуальные и синхронизируются гипервизором, но команда полезна для контроля.
systemd-timesyncd или chrony
| Параметр | timesyncd | chrony |
|---|---|---|
| Установка | Встроен | Отдельный пакет |
| Точность | Хорошая | Выше |
| Роль NTP-сервера | Нет | Да |
| Подходит для | Клиентов | Клиентов и серверов |
Для одиночного VPS достаточно timesyncd. Если сервер сам раздаёт время в сеть или нужна максимальная точность — chrony.
Диагностика проблем синхронизации
Если timedatectl показывает System clock synchronized: no, пройдите по шагам.
Проверьте, доступны ли NTP-серверы (используют UDP-порт 123):
timedatectl timesync-status
Убедитесь, что firewall не блокирует исходящий UDP 123:
ufw status | grep 123
Для исходящих подключений обычно ничего открывать не нужно, но если политика deny outgoing — добавьте:
ufw allow out 123/udp
Посмотрите журнал сервиса времени:
journalctl -u systemd-timesyncd -n 30
Ручная проверка расхождения
Сравните время сервера с публичным источником. Установите ntpdate для разовой сверки:
apt install -y ntpdate
ntpdate -q pool.ntp.org
Флаг -q только запрашивает и показывает смещение, не меняя часы. Значение offset близкое к нулю означает, что время точное.
Локаль и формат даты
Часовой пояс и локаль — разные вещи. Проверить локаль:
localectl status
Установить, например, для корректного формата даты:
localectl set-locale LANG=en_US.UTF-8
Это влияет на вывод date и логи, но не на само системное время.
Автоматизация для нескольких серверов
Если серверов много, единый пул NTP лучше прописать в конфигурации через систему управления (Ansible, cloud-init). Так все узлы синхронизируются с одними источниками, а логи между машинами остаются сопоставимыми по времени — это критично при разборе распределённых инцидентов.
Частые вопросы
Не работают одновременно timesyncd и chrony?
Нет, они конфликтуют. При установке chrony отключите timesyncd: systemctl disable --now systemd-timesyncd.
Почему время сбивается после перезагрузки?
Значит NTP не включён. Выполните timedatectl set-ntp true или установите chrony.
Ставить локальный пояс или UTC? Для серверов удобнее UTC. Локальный пояс — если так требуют приложения или отчётность.
Как проверить точность синхронизации?
chronyc tracking показывает смещение в секундах. Значения порядка миллисекунд — норма.
Влияет ли время на TLS? Да. При большом расхождении часов сертификаты считаются недействительными и HTTPS ломается.
Стабильный сервер начинается с базовой настройки. Разверните проект на аренде VPS или VPS для VPN и безопасности. Полное обслуживание возьмёт на себя Администрирование серверов.
