NTP Service

NTP (Network Time Protocol) - протокол для синхронизации времени компьютерных систем через сеть.

Обзор

VyOS использует chrony (начиная с версии 1.4) для реализации NTP клиента и сервера.

NTP обеспечивает:

  • Синхронизацию системного времени с точностью до миллисекунд
  • Автоматическую коррекцию времени
  • Обработку leap seconds (високосных секунд)
  • Иерархическую систему time servers (stratum)
  • Работу как клиента и сервера одновременно

Протокол: UDP порт 123

Текущая версия: NTPv4 (RFC 5905)

Базовая конфигурация

NTP клиент

Синхронизация с публичными NTP серверами:

set service ntp server 0.pool.ntp.org
set service ntp server 1.pool.ntp.org
set service ntp server 2.pool.ntp.org
commit

По умолчанию VyOS использует:

  • time1.vyos.net
  • time2.vyos.net
  • time3.vyos.net

NTP сервер

Разрешение клиентам синхронизироваться с VyOS:

set service ntp listen-address '192.168.1.1'
set service ntp allow-client address '192.168.1.0/24'
commit

Конфигурация NTP серверов

Добавление сервера

set service ntp server <hostname|IP>

Примеры:

set service ntp server pool.ntp.org
set service ntp server time.google.com
set service ntp server 216.239.35.0

Опции сервера

prefer - Предпочтительный сервер

Приоритет сервера при выборе источника времени:

set service ntp server 0.pool.ntp.org prefer

noselect - Не использовать для синхронизации

Сервер мониторится, но не используется:

set service ntp server backup.ntp.org noselect

pool - Pool режим

Автоматическое разрешение имени и добавление нескольких серверов:

set service ntp server pool.ntp.org pool

Один DNS-запрос может вернуть множество IP-адресов, все будут использованы.

nts - Network Time Security

Шифрованное NTP соединение:

set service ntp server time.cloudflare.com nts

NTS обеспечивает аутентификацию и конфиденциальность NTP трафика.

ptp - PTP Transport

Использование Precision Time Protocol транспорта:

set service ntp server ntp.example.com ptp

interleave - Interleaved Mode

Улучшенная точность синхронизации:

set service ntp server ntp.example.com interleave

NTP Pool

Публичные NTP Pools

NTP Pool Project (pool.ntp.org):

set service ntp server 0.pool.ntp.org
set service ntp server 1.pool.ntp.org
set service ntp server 2.pool.ntp.org
set service ntp server 3.pool.ntp.org

Региональные pools:

# Россия
set service ntp server 0.ru.pool.ntp.org
set service ntp server 1.ru.pool.ntp.org

# Европа
set service ntp server 0.europe.pool.ntp.org
set service ntp server 1.europe.pool.ntp.org

# Северная Америка
set service ntp server 0.north-america.pool.ntp.org

Вендор-специфичные:

# Debian
set service ntp server 0.debian.pool.ntp.org

# Ubuntu
set service ntp server ntp.ubuntu.com

Крупные провайдеры

Google Public NTP:

set service ntp server time.google.com
set service ntp server time1.google.com
set service ntp server time2.google.com
set service ntp server time3.google.com
set service ntp server time4.google.com

Cloudflare NTP (с NTS):

set service ntp server time.cloudflare.com nts

Facebook NTP:

set service ntp server time.facebook.com

NTP Server Configuration

Listen Address

Адреса для прослушивания NTP запросов:

set service ntp listen-address '192.168.1.1'
set service ntp listen-address '10.0.0.1'
set service ntp listen-address '2001:db8::1'

По умолчанию слушает на всех интерфейсах.

Allow Client

Разрешение клиентам синхронизироваться:

set service ntp allow-client address '192.168.1.0/24'
set service ntp allow-client address '10.0.0.0/8'
set service ntp allow-client address '2001:db8::/32'

Без allow-client сервер будет только синхронизироваться сам, но не обслуживать клиентов.

Leap Second

Обработка високосных секунд:

set service ntp leap-second <mode>

Режимы:

  • ignore - игнорировать leap second
  • smear - размазывать коррекцию на несколько часов
  • system - использовать системную обработку
  • timezone - использовать timezone данные

Рекомендуется:

set service ntp leap-second smear

Hardware Timestamping

Аппаратные временные метки для повышения точности:

set service ntp timestamp interface eth0

Опции фильтра:

set service ntp timestamp interface eth0 receive-filter all

Режимы фильтра:

  • all - все пакеты
  • ntp - только NTP
  • ptp - только PTP
  • none - нет аппаратных меток

VRF Support

Запуск NTP в определенном VRF:

set service ntp vrf MGMT

Примеры конфигурации

Базовый NTP клиент

# Синхронизация с публичными серверами
set service ntp server 0.pool.ntp.org
set service ntp server 1.pool.ntp.org
set service ntp server time.google.com prefer

commit

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

# Upstream серверы
set service ntp server 0.pool.ntp.org
set service ntp server 1.pool.ntp.org
set service ntp server 2.pool.ntp.org

# Слушать на LAN интерфейсе
set service ntp listen-address '192.168.1.1'

# Разрешить клиентам из LAN
set service ntp allow-client address '192.168.1.0/24'

commit

Корпоративная конфигурация

# Корпоративные NTP серверы
set service ntp server ntp1.corp.local prefer
set service ntp server ntp2.corp.local
set service ntp server ntp3.corp.local

# Резервные публичные
set service ntp server time.google.com
set service ntp server time.cloudflare.com nts

# Сервер для подсетей
set service ntp listen-address '192.168.10.1'
set service ntp listen-address '192.168.20.1'

# Разрешить корпоративные сети
set service ntp allow-client address '192.168.0.0/16'
set service ntp allow-client address '10.0.0.0/8'

# Leap second
set service ntp leap-second smear

commit

High-precision NTP

# Stratum 1 серверы
set service ntp server ntp1.example.com interleave
set service ntp server ntp2.example.com interleave
set service ntp server ntp3.example.com interleave

# Hardware timestamping
set service ntp timestamp interface eth0
set service ntp timestamp interface eth0 receive-filter ntp

commit

Региональная конфигурация (Россия)

# Российские NTP серверы
set service ntp server 0.ru.pool.ntp.org pool
set service ntp server 1.ru.pool.ntp.org pool
set service ntp server ntp.ix.ru
set service ntp server ntp1.vniiftri.ru
set service ntp server ntp2.vniiftri.ru

# Резервные глобальные
set service ntp server time.google.com

# Локальный сервер
set service ntp listen-address '192.168.1.1'
set service ntp allow-client address '192.168.1.0/24'

commit

Multi-site с VRF

# Management VRF
set service ntp vrf MGMT

# Upstream в management сети
set service ntp server 10.0.0.10
set service ntp server 10.0.0.11

# Слушать в management
set service ntp listen-address '10.0.1.1'
set service ntp allow-client address '10.0.0.0/8'

commit

Secure NTP с NTS

# Только серверы с NTS
set service ntp server time.cloudflare.com nts
set service ntp server ntppool1.time.nl nts
set service ntp server nts.ntp.se nts

# Leap second
set service ntp leap-second smear

commit

Операционные команды

Просмотр статуса синхронизации

show ntp

Вывод показывает:

  • Текущее состояние синхронизации
  • Список серверов и их статус
  • Stratum уровень
  • Offset (смещение времени)
  • Jitter (дрожание)

Информация о NTP

show ntp info

Детальная информация о NTP демоне.

Источники времени

show ntp sources

Список всех upstream NTP серверов.

Статистика

show ntp activity

Статистика активности NTP.

Рестарт сервиса

restart ntp

Мониторинг и диагностика

Проверка синхронизации

show ntp

Обратите внимание на:

  • Символ * перед сервером означает текущий источник синхронизации
  • Offset должен быть близок к нулю (< 10ms в норме)
  • Jitter должен быть низким (< 5ms хорошо)

Логи

show log | grep ntp
monitor log | grep chronyd

Проверка доступности сервера

С клиента:

ntpdate -q 192.168.1.1

или

chronyc -h 192.168.1.1 tracking

Проверка firewall

Убедитесь что UDP порт 123 открыт:

show firewall ipv4 input filter

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

Время не синхронизируется

Проверьте статус:

show ntp

Проверьте доступность upstream серверов:

ping 0.pool.ntp.org

Проверьте firewall на WAN:

show firewall ipv4 output filter

Перезапустите NTP:

restart ntp

Большое смещение времени

Если offset > 1 секунда, может потребоваться ручная установка времени:

set system time-zone UTC

Или использовать ntpdate для первоначальной синхронизации.

NTP сервер не отвечает клиентам

Проверьте allow-client:

show service ntp

Проверьте firewall:

set firewall ipv4 input filter rule 50 action accept
set firewall ipv4 input filter rule 50 destination port 123
set firewall ipv4 input filter rule 50 protocol udp
set firewall ipv4 input filter rule 50 source address 192.168.1.0/24
commit

Проверьте listen-address:

show service ntp

Конфликт с systemd-timesyncd

chrony конфликтует с systemd-timesyncd. Убедитесь что только один сервис запущен.

Безопасность

Ограничение клиентов

Всегда используйте allow-client:

set service ntp allow-client address '192.168.1.0/24'

Firewall правила

# Входящие NTP запросы
set firewall ipv4 input filter rule 50 action accept
set firewall ipv4 input filter rule 50 destination port 123
set firewall ipv4 input filter rule 50 protocol udp
set firewall ipv4 input filter rule 50 source address 192.168.1.0/24

# Исходящие для синхронизации
set firewall ipv4 output filter rule 50 action accept
set firewall ipv4 output filter rule 50 destination port 123
set firewall ipv4 output filter rule 50 protocol udp

Rate limiting

Защита от NTP amplification атак:

set firewall ipv4 input filter rule 50 limit rate 10/second

NTS

Используйте Network Time Security где возможно:

set service ntp server time.cloudflare.com nts

Лучшие практики

  1. Множественные источники - используйте минимум 3-4 NTP сервера
  2. Географическая близость - выбирайте серверы близко к вашей локации
  3. Stratum diversity - используйте серверы разных stratum уровней
  4. prefer сервер - выбирайте наиболее надежный как предпочтительный
  5. Резервирование - комбинируйте локальные и публичные серверы
  6. Firewall - ограничивайте доступ к NTP сервису
  7. Мониторинг - отслеживайте offset и jitter регулярно
  8. NTS - используйте где доступно для безопасности
  9. Leap second - настройте обработку для критичных систем
  10. Hardware timestamping - включайте для высокой точности

Stratum иерархия

  • Stratum 0 - Атомные часы, GPS (reference clocks)
  • Stratum 1 - Серверы напрямую подключенные к Stratum 0
  • Stratum 2 - Серверы синхронизированные со Stratum 1
  • Stratum 3-15 - Последующие уровни

VyOS обычно работает как Stratum 3-4 когда синхронизируется с публичными серверами.

Производительность

Типичная точность:

  • LAN: ±1ms
  • WAN: ±10ms
  • Интернет: ±50ms
  • С hardware timestamping: ±10μs (микросекунды)

Следующие шаги