Сетевой протокол времени (NTP): определение и функциональность

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

Что такое NTP?

Протокол сетевого времени является результатом разработок Дэвида Л. Миллса, профессора Университета штата Делавэр. Первая официальная спецификация протокола, который является частью семейства интернет-протоколов, была опубликована в сентябре 1985 года в RFC 958. В нем NTP описывается как протокол для синхронизации нескольких сетевых часов через набор разнесенных клиентов и серверов. Его предшественниками являются протокол времени и сообщение ICMP timestamp, функции которых были объединены в протоколе сетевого времени. NTP основан на протоколе пользовательских дейтаграмм (UDP), который обеспечивает передачу данных без установления соединения. Номер порта UDP для этого протокола — 123.

NTP предоставляет основные протокольные механизмы, необходимые для синхронизации времени различных систем с точностью до одной наносекунды. Он также содержит правила, определяющие точность и вероятные источники ошибок локальных системных часов. Протокол определяет только тип представления данных и форматы сообщений, но не предоставляет алгоритмы синхронизации и фильтрации.

Определение

NTP (протокол сетевого времени) — это протокол для синхронизации часов в компьютерных системах, описанный в RFC 958. Он основан на протоколе UDP без соединения (порт 123) и относится к семейству интернет-протоколов. Для процесса синхронизации NTP полагается на согласованное универсальное время (UTC), которое получают от отдельных клиентов и серверов в иерархической системе.

Как работает NTP?

Для синхронизации часов компьютеров с точностью до наносекунды сетевой протокол времени использует согласованное универсальное время (UTC), существующее с 1972 года. Оно определяется различными методами, включая радио и спутниковые системы. Такие важные службы, как система глобального позиционирования (GPS), оснащены специальными приемниками для приема соответствующих сигналов. Поскольку оснащать каждый компьютер таким приемником нерентабельно и нецелесообразно, существуют так называемые первичные серверы времени, которые также имеют приемник UTC. Используя такие протоколы, как NTP, эти серверы синхронизируют часы компьютеров в своей сети.

В этом процессе синхронизации существуют различные иерархически структурированные степени расстояния до источника UTC, также известные как «страты» (в переводе с латинского — «слои»). Например, все технические устройства, которые получают время от основного сервера времени или спутниковой навигационной системы, относятся к категории stratum-0. Примером могут служить атомные или радиочасы. Компьютер, получающий UTC от таких атомных или радиочасов, соответствует стратуму-1, и так далее. Каждая система является как клиентом предыдущей страты, так и сервером для систем следующей страты (по крайней мере, потенциально).

Примечание

Для устранения краткосрочных и локальных колебаний времени при синхронизации NTP используются различные алгоритмы. Например, процедуры измерения времени для одного пакета в пути между пунктами назначения (время, необходимое пакету данных, чтобы пройти от источника к пункту назначения и обратно), могут компенсировать локальные отклонения на основе алгоритма Berkeley. Например, алгоритм Марзулло используется для поиска неисправностей процессоров.

Обзор наиболее важных функций NTP

Основные характеристики сетевого протокола времени, который сейчас доступен в четвертой версии (NTPv4), можно суммировать следующим образом:

  • NTP предоставляет эталонные часы, которые выступают в качестве фиксированной точки для всех процессов синхронизации. Все часы координируются в соответствии с этими часами или временем. С самого начала для этой цели использовалось всемирное координированное время (UTC), которое признано единым мировым временем.
  • NTP — это протокол, который автоматически ищет лучшие источники времени для синхронизации. Для минимизации накопления ошибок, влияющих на синхронизацию, несколько источников могут быть объединены друг с другом. Если возможно, протокол сетевого времени распознает и игнорирует источники времени, которые временно или постоянно представляют сильно отклоняющиеся значения.
  • NTP обладает высокой масштабируемостью. В каждой сети синхронизации может быть несколько эталонных часов. Кроме того, каждый узел сети может передавать информацию о времени в иерархической структуре двунаправленно (точка-точка) или однонаправленно (в одном направлении).
  • NTP отличается высокой точностью. Благодаря возможности выбора наилучшего кандидата для синхронизации возможен результат вплоть до одной наносекунды.
  • NTP может устранять временные проблемы с сетевым соединением: для этого журнал использует прошлые показания для определения текущего времени или отклонений.

Какие операционные системы поддерживают протокол NTP?

Первоначально протокол сетевого времени был разработан специально для систем UNIX, в которых он до сих пор реализован в виде фонового процесса ntpd. Он служит как в качестве клиента, который может синхронизировать локальную систему, так и в качестве NTP-сервера для других систем. Долгое время эта служба также была первым выбором для реализации NTP в дистрибутивах Linux — более новые версии все чаще полагаются на клиентское приложение timesyncd, которое является частью системного менеджера. Операционные системы MacOS и Windows теперь также используют протокол сетевого времени для получения UTC через интернет с помощью простых системных процессов и без дополнительного программного обеспечения.

Каковы альтернативы NTP?

Хотя NTP считается во всем мире стандартом синхронизации времени, он не безупречен, особенно с точки зрения безопасности. Например, поскольку он основан на протоколе UDP без соединения, хакер может отправлять пакеты на сервер NTP с поддельными адресами отправителей посредством IP-спуфинга. В качестве адреса отправителя выбирается адрес целевой системы. Сервер отправляет свой ответ, который значительно превышает запрос, отправленный злоумышленником, обратно предполагаемому отправителю — целевой системе. Если злоумышленник будет делать это в больших масштабах, посылая большое количество таких манипулируемых запросов, он может перегрузить целевую систему — подробнее об этом можно прочитать в следующей статье: DoS und DDoS.

В результате несколько проектов сосредоточились на разработке альтернативных, более безопасных решений, которые можно использовать вместо NTP:

  • tlsdate: tlsdate был разработан Джейкобом Аппельбаумом в 2012 году и опубликован на GitHub. Вместо UDP, tlsdate использует протокол TCP для передачи данных. Служба шифрует установление соединения с помощью TLS, чтобы предотвратить манипуляции с пакетами данных. Кроме того, tlsdate использует TLS-функции «ServerHello» и «ClientHello» для синхронизации времени. Однако альтернатива NTP работает только с TLS 1.1 и 1.2.
  • Ntimed: Ntimed ориентирован на безопасность и производительность. Для этого программный код ntpd, на котором основан Ntimed, был оптимизирован. Программный пакет, состоящий из клиентского, серверного и мастер-файлов, доступен бесплатно в официальном каталоге Ntimed на GitHub.
  • NTPsec: NTPsec также является вариантом классической службы ntpd. Однако по сравнению с оригиналом в нем сохранено более 175 000 строк кода. Кроме того, команда разработчиков заменила ряд небезопасных строковых функций, таких как «strcpy», «sprint» или «gets», на безопасные аналоги. Эти и другие отличия можно подробно рассмотреть на официальном сайте проекта с открытым исходным кодом.

Помимо программных альтернатив, альтернативу также предлагает протокол точного времени (PTP). В отличие от сетевого протокола времени, этот сетевой протокол для Linux-систем отличается особенно высокой точностью синхронизации. Скорость синхронизации с помощью PTP достигает наносекунд, что даже превосходит точность NTP. Кроме того, протокол требует минимальной мощности процессора и пропускной способности сети, что делает его идеальным для простых и экономичных устройств.

Примечание

Хотя существует некоторая свобода выбора между протоколами синхронизации или сервисами, сама синхронизация — это процесс, который необходим для функционирования различных сетевых приложений (особенно в Интернете). Например, транзакции с базами данных или обмен сообщениями по электронной почте не будут работать, если клиент и сервер не находятся в одном и том же времени. Еще более важную роль играет точное системное время в управлении воздушным движением, где значения с точностью до микросекунды незаменимы для бесперебойной работы.

pool.ntp.org: интернет-кластер из тысяч NTP-серверов

Проект pool.ntp.org, инициированный Адрианом фон Биддером и управляемый Аском Бьорном Хансеном с июля 2005 года, представляет собой огромный виртуальный кластер из более чем 4 000 серверов времени NTP. Большинство серверов, распределенных по всему миру, которые используются несколькими миллионами систем, расположены в Европе. Пул NTP постоянно растет со временем благодаря сообществу проекта. Любой, у кого есть сервер со статическим IP-адресом, постоянно подключенный к Интернету, может включить его в кластер. Несмотря на растущий спрос, услуга может быть использована бесплатно и без каких-либо ограничений.

Как пользователи UNIX/Linux могут использовать пул NTP

Если вы хотите использовать пул NTP-серверов для синхронизации системного времени вашего устройства, вы можете сделать это в UNIX или Linux с помощью службы ntpd. Для этого вам нужно только настроить файл дрейфа NTP:

driftfile /var/lib/ntp/ntp.drift
server 0.pool.ntp.org
server 1.pool.ntp.org
server 2.pool.ntp.org
server 3.pool.ntp.org

Убедитесь, что системное время установлено хотя бы приблизительно точно. Чтобы проверить состояние службы ntpd, введите следующую команду через несколько минут:

ntpq -pn

NTP-клиент представит список IP-адресов из пула случайно используемых серверов времени. Если один из этих серверов отмечен звездочкой (*), системное время синхронизировано в соответствии с требованиями.

Установка pool.ntp.org в качестве источника сервера времени под Windows

Поскольку протокол сетевого времени теперь автоматически поддерживается Windows, пул NTP также всегда доступен для пользователей систем Microsoft. Необходимо лишь ввести подходящий диапазон адресов с pool.ntp.org в настройках интернет-времени. Для этого откройте панель управления и выберите «дата и время»:

На вкладке «интернет-время» вы попадете в меню сервера времени, где можно ввести адрес нужного вам NTP-сервера из пула pool.ntp.org:

Если изменения прошли успешно, Windows скорректирует системное время при следующей синхронизации:

Оцените статью
cdelat.ru
Добавить комментарий