Что такое NTP
Network Time Protocol (NTP) — один из старейших интернет-протоколов, до сих пор широко используемых, предназначенный для синхронизации часов между компьютерами в сети. Впервые описанный Дэвидом Миллсом в 1985 году, NTP способен поддерживать точность компьютерных часов в пределах нескольких миллисекунд в публичном интернете и субмикросекундную точность в локальных сетях.
Основной алгоритм
NTP работает за счёт обмена временными метками между клиентом и сервером. Клиент отправляет запрос со своим текущим временем (T1), сервер фиксирует момент получения (T2) и отправляет ответ с T2 и временем своей отправки (T3), а клиент фиксирует момент получения (T4). На основе этих четырёх меток:
Round-trip delay = (T4 - T1) - (T3 - T2)
Clock offset = ((T2 - T1) + (T3 - T4)) / 2
Клиент использует полученное смещение для корректировки локальных часов, постепенно направляя их к правильному времени, а не совершая резкий скачок (который мог бы нарушить работу приложений).
Иерархия страт (stratum)
NTP организует источники времени в иерархию, называемую стратами:
- Страта 0: атомные часы, GPS-приёмники, радиочасы — эталонные источники времени
- Страта 1: серверы, напрямую подключённые к устройствам страты 0 (например, time.google.com, time.cloudflare.com)
- Страта 2: серверы, синхронизирующиеся со стратой 1 — то, что использует большинство организаций
- Страты 3–15: каскадно ниже, с уменьшением точности на каждом «прыжке»
Публичные NTP-серверы
time.google.com— публичный NTP от Google (со сглаживанием високосных секунд)time.cloudflare.com— NTP от Cloudflare (с поддержкой Roughtime)pool.ntp.org— глобальный волонтёрский пул NTP-серверовtime.windows.com— сервер по умолчанию в Microsoft Windows
Проверка состояния NTP
# Linux (systemd-timesyncd)
timedatectl status
timedatectl timesync-status
# Linux (ntpd)
ntpq -p
# macOS
sntp -sS time.apple.com
# Windows
w32tm /query /status
NTP и SNTP
SNTP (Simple NTP) — упрощённая версия NTP, используемая устройствами, которым не нужна полная точность NTP: смартфонами, встроенными устройствами и IoT-датчиками. Он использует тот же протокол, но реализует лишь подмножество алгоритмов, обычно достигая точности в десятки миллисекунд.
Вопросы безопасности
Стандартный NTP не имеет аутентификации, что делает его уязвимым для атак «человек посередине», способных злонамеренно сдвинуть системные часы. NTPsec и Roughtime — современные альтернативы, добавляющие криптографическую проверку. Для критически важной инфраструктуры всегда используйте аутентифицированные источники времени.