Как настроить системное время и часовой пояс (NTP/Chrony) на VPS?

В статье разберём:

  • как проверить текущее время и выбранный часовой пояс;
  • как задать правильный timezone через timedatectl;
  • как включить NTP-синхронизацию встроенными средствами Ubuntu;
  • как установить и настроить chrony для точного времени;
  • какие ошибки бывают и как их исправить.

Что понадобится

  • Доступ по SSH к серверу (root или sudo).

  • Ubuntu/Debian — примеры команд будем делать на этих дистрибутивах.

  • На CentOS/Rocky/AlmaLinux команды похожи, но с пакетом chrony по умолчанию.

Подключение к VPS по SSH

Проверяем текущее время и часовой пояс

Для управления временем в Ubuntu используется утилита timedatectl. Сначала посмотрим, что у нас настроено сейчас:

timedatectl status

Пример вывода:

               Local time: Tue 2025-08-26 09:42:11 UTC
           Universal time: Tue 2025-08-26 09:42:11 UTC
                 RTC time: Tue 2025-08-26 09:42:12
                Time zone: Etc/UTC (UTC, +0000)
System clock synchronized: no
              NTP service: inactive
          RTC in local TZ: no

Что здесь важно:

  • Local time — текущее локальное время (то, что видят приложения и логи).

  • Time zone — установленный часовой пояс (по умолчанию на VPS часто стоит UTC).

  • System clock synchronized — есть ли синхронизация с NTP.

  • NTP service — включена ли служба синхронизации времени.

Если время отличается от реального — значит, нужно сменить часовой пояс и включить синхронизацию.

Проверка времени и часового пояса в Ubuntu через timedatectl

Изменяем часовой пояс

По умолчанию большинство VPS работает в UTC. Это удобно для разработчиков, но для ведения логов и работы с приложениями часто требуется локальное время (например, Москва или другой регион).

Список доступных часовых поясов

timedatectl list-timezones | less

Пролистайте список или отфильтруйте по городу:

timedatectl list-timezones | grep Europe/Moscow

Устанавливаем часовой пояс

sudo timedatectl set-timezone Europe/Moscow

После этого снова проверяем статус:

timedatectl status

Теперь в поле Time zone должно отображаться Europe/Moscow или выбранный вами регион.

Важно: выбирайте именно часовой пояс (Europe/Moscow), а не сдвиг по UTC вручную. Это гарантирует автоматический переход на зимнее/летнее время в тех странах, где он используется.

Установка часового пояса Europe/Moscow в Ubuntu

Включаем синхронизацию времени через NTP

В Ubuntu по умолчанию используется systemd-timesyncd — лёгкий клиент для синхронизации часов по протоколу NTP. Проверим его статус и включим, если он не активен.

Проверка и включение

# Проверяем статус
timedatectl status

# Включаем синхронизацию
sudo timedatectl set-ntp true

# Проверяем ещё раз
timedatectl status

В поле NTP service должно появиться active, а System clock synchronizedyes.

Включение синхронизации времени через NTP в Ubuntu

Типичные ошибки

  • System clock synchronized: no — время не синхронизируется.

    sudo systemctl status systemd-timesyncd
    sudo journalctl -u systemd-timesyncd | tail -n 20

    Если видите ошибки DNS или соединения — проверьте интернет и /etc/resolv.conf.

  • NTP service: inactive — служба выключена.

    sudo systemctl enable --now systemd-timesyncd

Устанавливаем и настраиваем Chrony (альтернатива NTP-клиенту)

chrony — современный NTP-клиент/сервер, который быстро сходится по времени и устойчив к нестабильной сети. На VPS он часто точнее systemd-timesyncd. При установке chrony рекомендуется отключить systemd-timesyncd, чтобы не было двух конкурирующих служб.

Установка и базовое включение

# Ubuntu/Debian
sudo apt update
sudo apt install -y chrony

# Отключим timesyncd, чтобы избежать конфликта (если он активен)
sudo systemctl disable --now systemd-timesyncd || true

# Включим chrony
sudo systemctl enable --now chrony

# Проверим статус
sudo systemctl status chrony --no-pager
Установка и запуск chrony в Ubuntu

Проверяем источники и качество синхронизации

# Список источников времени (метки: ^ сервер, * выбранный лучший, + пригодный)
chronyc sources -v

# Диагностика точности и смещения
chronyc tracking

# Сводка состояния
chronyc activity

Что смотреть в выводе:

  • В chronyc tracking поле Reference ID/Stratum — указывает опорный сервер и уровень.

  • System time (offset) — текущее смещение; стремится к микросекундам/миллисекундам.

  • В chronyc sources -v символ * у лучшего источника, + — дополнительные годные.

Проверка chrony: tracking и sources

Настройка собственных NTP-серверов (опционально)

По умолчанию Ubuntu использует пул ntp.ubuntu.com и/or pool.ntp.org. Вы можете задать корпоративные сервера в /etc/chrony/chrony.conf:

sudo nano /etc/chrony/chrony.conf
# Пример (замените на свои):
# server time.cloudflare.com iburst
# pool pool.ntp.org iburst maxsources 4

# Сохраняем и перезапускаем
sudo systemctl restart chrony
chronyc sources -v

Типичные ошибки и их решения

  • Нет пиров (источников):

    chronyc activity
    # Пусто? Проверьте сеть и DNS:
    ping -c 1 1.1.1.1 || ping -c 1 8.8.8.8
    ping -c 1 pool.ntp.org || echo "Проблемы с DNS?"
    cat /etc/resolv.conf | sed -n '1,40p'
  • Конкурирующие службы — активны и timesyncd, и chrony:

    systemctl is-active systemd-timesyncd && sudo systemctl disable --now systemd-timesyncd
    sudo systemctl restart chrony
  • Большое смещение времени (offset очень высокий) — chrony долго «сходится»:

    # Разрешим шаговую коррекцию при старте (maxupdateskew/ makestep уже есть в дефолтной конфигурации Ubuntu)
    grep -n 'makestep' /etc/chrony/chrony.conf
    # Если строки нет, добавьте, затем перезапустите:
    # makestep 1.0 3
    sudo systemctl restart chrony

    Директива makestep 1.0 3 позволяет выполнить «скачок» времени, если расхождение >1 сек в первые 3 обновления после запуска chrony.

Итоги

  • Мы проверили текущее время и убедились, какой часовой пояс установлен.

  • Задали правильный часовой пояс через timedatectl set-timezone.

  • Включили синхронизацию времени встроенным сервисом systemd-timesyncd.

  • При необходимости установили и настроили chrony для более точной синхронизации.

  • Разобрали частые ошибки и способы их устранения.

Что дальше: стоит проверить корректность времени после перезагрузки VPS, а также убедиться, что службы, зависящие от точного времени (TLS-сертификаты, логи, cron), работают без сбоев.