ntp offset что это
Синхронизация времени NTP.
Синхронизация времени является важной задачей, хотя не многие задумывались об этом. Ну что плохого в убежавшем на сервере времени? А знаете ли вы, что многие проблемы с часами влияют на протоколы, связанные с криптографией? По этой причине в Active Directory разница в часах более 5 минут будет приводить к проблемам аутентификации Kerberos.
Часовые уровни. Strata.
Как понятно из схемы, stratum 4 берёт время у вышестоящего stratum 3. stratum 5 у stratum 4 и так далее. stratum 16 считается самым нижним слоем и время там считается несинхронизированным.
Чтобы синхронизировать время с помощью протокола NTP, следует сначала вручную выставить ваше время. Недопустима разница между вашим точным временем и показаниями ваших часов более 1000 секунд. Если используемый вами сервер времени врёт более 1000 миллисекунд (1 секунда), то он будет исключён из списка и будут использоваться другие вместо него. Данный механизм позволяет отсеивать плохие источники времени.
Клиент времени.
Сколько добавлять? Следует иметь в виду:
Проект NTP Pool.
Есть такой проект NTP Pool по адресу которого pool.ntp.org/zone/ru/ можно найти рекомендованные для русских пользователей сервера времени.
server 0.ru.pool.ntp.org
server 1.ru.pool.ntp.org
server 2.ru.pool.ntp.org
server 3.ru.pool.ntp.org
Такие операционные системы, как Debian и Ubuntu, предлагают пользователям свои сервера времени.
server 0.debian.pool.ntp.org
server 1.debian.pool.ntp.org
server 2.debian.pool.ntp.org
server 3.debian.pool.ntp.org
server 0.ubuntu.pool.ntp.org
server 1.ubuntu.pool.ntp.org
server 2.ubuntu.pool.ntp.org
server 3.ubuntu.pool.ntp.org
О чём говорят названия столбцов:
В поле refid могут быть следующие значения:
Рекомендации для клиента серверов времени.
Во-вторых, помните, что подключение к ближайшему серверу времени не всегда идеальный вариант. Важнее не территориальная близость, а уровень stratum. Проект NTP Pool публикует список серверов только уровня stratum 1 и stratum 2 и лучше взять до 10 серверов времени из данного списка, что будет просто замечательно.
В-третьих, если вы простой домашний пользователь-клиент, то рекомендованные вам сервера в вашей операционной системе будут идеальным вариантом, не требующим лишних телодвижений.
Для крупных контор, лучшим вариантом будет поднятие своего сервера времени для рабочих компьютеров. Данный сервер будет получать точное время от серверов времени в Интернете и предоставлять его локальным компьютерам. На серверах Debian и Ubuntu достаточно раскомментировать строку
В-четвёртых, NTP никак не связан, в какой стране и какие часовые пояса используются и как происходит переход на летнее и зимнее время и делается ли в данной стране такой переход. Это обязанность лежит на операционной системе, которую вам нужно обновлять, если в стране происходят изменения в часовых делах. В системах Debian и Ubuntu за это отвечает пакет tzdata, который должен быть актуальным.
В-пятых, лучше не поднимать свой NTP сервер на высоконагруженной системе.
Настройка NTP на сервере
В операционных системах существует немало служб, нормальное функционирование которых зависит от точности хода системных часов. Если на сервере не установлено точное время, это может стать причиной различных проблем.
Например, в локальной сети требуется, чтобы часы машин, совместно использующих файлы, были синхронизированы — иначе невозможно будет правильно устанавливать время модификации файлов. Это, в свою очередь может стать причиной конфликта версий или перезаписи важных данных.
Если на сервере не установлено точное время, возникнут проблемы с заданиями Cron — неясно, когда они будут запускаться. Будет очень трудно анализировать журналы системных событий для диагостики причин сбоев и неисправностей…
Продолжать можно долго…
Чтобы избежать всех описанных проблем, необходимо настроить синхронизацию системных часов. В Linux для этого используется протокол NTP (Network Time Protocol). В этой статье мы подробно расскажем о том, как на сервере осуществить установку и настройку NTP. Начнем с небольшого теоретического введения.
Как работает протокол NTP
В основе протокола NTP лежит иерархическая структура серверов точного времени, в которой выделяются различные уровни (англ. strata). К уровню 0 относятся эталонные часы (атомные часы или часы GPS). На нулевом уровне NTP-серверы не работают.
С эталонными часами синхронизируются NTP-серверы первого уровня, которые являются источниками для серверов уровня 2. Серверы уровня 2 синхронизируются с серверами уровня 1, но могут также синхронизироваться и между собой. Аналогичным образом работают серверы уровня 3 и ниже. Всего поддерживается до 256 уровней.
Иерархическая структура протокола NTP характеризуется отказоустойчивостью и избыточностью. В случае отказов соединения с вышестоящими серверами резервные серверы берут процесс синхронизации на себя. За счет избыточности обеспечивается постоянная доступность NTP-серверов. Синхронизируясь с несколькими серверами, NTP использует данные всех источников, чтобы рассчитать наиболее точное время.
Установка и настройка NTP-сервера
Самым известным и распространенным программным средством для синхронизации времени является демон ntpd. В зависимости от настроек, указанных в конфигурационном файле (об этом еще пойдет речь ниже), он может выступать как в качестве сервера, так и в качестве клиента (т.е может как принимать время с удаленных хостов, так и раздавать его другим хостам). Ниже мы подробно расскажем о том, как осуществляется установка и настройка этого демона в OC Ubuntu.
Установка
Программа NTP входит в состав дистрибутивов большинства современных Linux-систем и устанавливается при помощи стандартного менеджера пакетов:
Настройка
По завершении установки откроем в текстовом редакторе файл /etc/ntp.conf. В нем хранятся все настройки программы. Рассмотрим их более подробно.
Параметры логирования
Первая строка конфигурационного файла выглядит так:
В ней указывается файл для хранения информации о частоте смещения времени. В этом файле хранится значение, получаемое в результате предшествующих корректировок времени. Если внешние NTP-серверы по той или иной причине становятся недоступными, значение будет взятого из него.
Далее указывается файл, в который будут сохраняться логи синхронизации:
Список серверов для синхронизации
В конфигурационном файле указывается список NTP-серверов, с которыми будет осуществляться синхронизация. По умолчанию он выглядит так:
Каждая строка означает группу серверов, которые будут cообщать нашему серверу корректное время. Повысить точность синхронизации можно с помощью опции iburst (она указывает, что на сервер для синхронизации нужно посылать не один, а несколько пакетов):
Можно также указать предпочитаемый сервер при помощи опции prefer:
NTP-серверы разбросаны по всему миру (вот, например, список доступных публичных NTP-серверов ). Чтобы обеспечить более точную установку системных часов, рекомендуется синхронизироваться только с ntp-серверами того региона, в котором географически расположен наш сервер. Для этого в конфигурационном файле /etc/ntp.conf нужно указать в адресах серверов региональный поддомен для pool.ntp.org:
Можно также указывать поддомены для отдельных стран (подробнее см. здесь ). Имеется свой поддомен и для России — ru.pool.ntp.org
Резервный сервер точного времени
NTP-сервер, по какой-либо причине отключенный от Интернета, может передавать для синхронизации данные своих системных часов. Для этого в конфигурационный файл нужно добавить следующую строку:
Ограничения
В последнее время участились случаи использования NTP-серверов для усиления трафика в DDoS-атаках (подробнее об этом см., например, здесь ). Чтобы наш сервер не стал жертвой злоупотреблений, нелишним будет установить ограничения на доступ для внешних клиентов. По умолчанию в файлe /etc/ntp.conf установлены следующие ограничения:
Параметры nomodify, notrap, nopeer и noquery запрещают сторонним клиентам изменять что-либо на сервере. Параметр kod (эта аббревиатура означает kiss of death — «поцелуй смерти») обеспечивает дополнительную защиту: клиент, отправляющий слишком частые запросы, сначала получит так называемый kod-пакет (предупреждение об отказе в обслуживании), а затем будет отключен от сервера.
Чтобы с NTP-сервером могли синхронизироваться машины из локальной сети, добавим в конфигурационный файл следующую строку:
Для локального хоста можно установить доступ к NTP-серверу без ограничений:
Проверка синхронизации
После того, как все необходимые изменения внесены в конфигурационный файл и сохранены, перезапустим NTP-сервер:
Затем выполним следующую команду:
Ее вывод будет представлен в виде таблицы:
В таблице указываются следующие параметры:
Слева от адреса сервера могут быть указаны следующие символы:
Проверить, пригоден ли сервер из списка для синхронизации, можно при помощи команды:
Из приведенного вывода видно, что сервер пригоден для синхронизации, его уровень — 2, смещение — 0,127936 мс, задержка — 0.026 мс.
О том, как проходила синхронизация (успешно или с ошибками) можно также узнать из логов:
Установка локальной даты и времени
С помощью команды ntpdate можно установить на сервере локальную дату и время, отправив соответствующий запрос к NTP-серверу:
Текущий статус ntpd можно проверить с помощью следующей команды:
Как сделать недорогую, но надежную систему единого времени на предприятии
Для чего нужно точное время?
Из функций, которые позволяет выполнять сервер времени, можно назвать корректное формирование хронологии событий в системах управления для ведения соответствующих логов, журналов, архивирования информации, построения трендов, графиков и пр.
В системах видеонаблюдения таймсервер обеспечивает привязку отснятых видеозаписей к астрономическому времени. Также устройство позволяет безошибочно сопоставлять информацию от разных информационных систем на предприятии. Например, это могут быть системы видеонаблюдения и системы безопасности, такие как СКУД, системы РЗА и независимые системы телемеханики и пр.
Ряд протоколов информационного обмена используют метки времени напрямую в составе пакетов передаваемых данных. К таким протоколам можно отнести МЭК-101/104, применяемые в современных системах телемеханики.
Одним из важных требований, предъявляемых в ряде промышленных приложений, являются требования информационной безопасности, исключающие выход в Интернет для выполнения функции синхронизации времени.
В силу своей простоты и ряда исторических причин для решения задачи синхронизации времени наибольшее распространение получил протокол NTP. В качестве NTP-клиентов на предприятии, помимо серверов, архивных и операторских станций систем управления, могут выступать контроллеры и HMI-панели, сетевое оборудование систем связи (управляемые коммутаторы, маршрутизаторы и пр).
Протокол NTP
Network time protocol (NTP) — это сетевой протокол для синхронизации часов в компьютерных системах по сетям передачи данных с коммутацией пакетов и переменной задержкой (латентностью). Высокая популярность протокола объясняется активным развитием систем на основе Ethernet. Одним из ключевых преимуществ протокола является возможность передачи меток времени непосредственно по сети передачи данных, что позволяет отказаться от отдельной шины точного времени, как например в системах 1PPS или IRIG–B. Протокол был разработан в 1985 году и является одним из старейших Интернет-протоколов, используемых в настоящее время.
NTP обеспечивает приемлемую точность синхронизации для большинства приложений. Протокол может поддерживать время с точностью до десятков миллисекунд в сети Интернет и до 0,2 мс в локальных сетях при идеальных условиях. Асимметричные маршруты передачи данных и перегрузка сети могут привести к ошибкам в 100 мс и более.
NTP синхронизирует устройства относительно всемирного координированного времени (UTC). При этом протокол учитывает появление високосной секунды в результате неравномерности вращения Земли, но никакой информации о местных часовых поясах или переходе на летнее время не передает.
Структура системы
NTP использует иерархическую систему источников точного времени. Каждый уровень иерархии называется Stratum (стратой, слоем) и ему присваивается номер, начинающийся с 0 для эталонных часов на вершине иерархии. Сервер времени на слое N синхронизируется от серверов на уровне N-1. Число N представляет собой расстояние от эталонных часов и используется для предотвращения цикличности в процессе синхронизации. Stratum не всегда является показателем качества или надежности. Например, можно найти источники времени на слое 3, которые имеют более высокое качество, чем источники времени на слое 2.
В качестве эталонных часов на Stratum 0 выступают системы спутниковой навигации (ГЛОНАСС, GPS и пр.), атомные часы или радиопередатчики. Раз в секунду они генерируют импульсный сигнал (1PPS), который вызывает прерывание и генерирует метку времени на подключенных устройствах. Устройства слоя 0 также известны как опорные часы. Серверы NTP не могут позиционировать себя в системе как Stratum 0. Если в пакете передачи данных в поле Stratum установлен 0, это указывает на неопределенный слой.
Логическая структура системы синхронизации на основе NTP
На этом слое находятся устройства, системное время которых синхронизировано с точностью до нескольких микросекунд от эталонных часов. Серверы времени на этом уровне могут работать в одноранговом режиме с другими серверами Stratum 1 для резервирования и проверки точности. Их также называют первичными серверами времени.
Это устройства, которые синхронизируются по сети от серверов уровня 1. Часто устройства уровня 2 опрашивают несколько серверов уровня 1. Компьютеры Stratum 2 также могут быть одноранговыми с другими компьютерами Stratum 2, чтобы обеспечить более стабильное и надежное время для всех устройств в группе одноранговых узлов.
Максимальное теоретическое число слоев равно 15; Stratum 16 используется для указания того, что устройство не синхронизировано. Механизмы протокола NTP на каждом устройстве системы взаимодействуют таким образом, чтобы построить кратчайший путь к серверам Stratum 1 для всех клиентов. Это позволяет минимизировать накопленную задержку в передаче данных и повысить точность синхронизации. В основе алгоритма построения связующего дерева с минимальной длиной пути лежит алгоритм Беллмана-Форда.
Метки времени
Последняя версия протокола NTPv4 вводит 128-битный формат представления времени: 64 бита для секунд и 64 бита для долей секунды, что дает временную шкалу более 584 млрд лет и разрешение в 0,05 аттосекунд. Дополнительно было введено 32-битное поле номера эры, которое устранило даже ставшей теоретической проблему окончания каждой эпохи.
Алгоритм синхронизации часов
Клиент NTP регулярно опрашивает один или несколько серверов. При этом он вычисляет смещение времени и круговую задержку. Смещение времени θ представляет собой разницу в абсолютном времени между часами сервера и клиента и определяется по формуле:
Круговая задержка δ определяется как время передачи сигнала по линиям связи от клиента к серверу и обратно. Это время, затраченное на отправку сигнала, плюс время, которое требуется для подтверждения, что сигнал был получен:
где t0 — метка времени клиента для передачи пакета запроса,
t1 — метка времени сервера приема пакета запроса,
t2 — метка времени сервера для передачи ответного пакета,
t3 — метка времени клиента приема ответного пакета.
Алгоритм расчета смещения времени и круговой задержки
Вычисляемые значения θ и δ пропускаются через фильтры и подвергаются статистическому анализу. Выбросы из общей выборки отбрасываются и оценка временного смещения производится на основе оставшихся значений. Зная величины смещения времени и круговую задержку клиент подстраивает собственное время, чтоб добиться θ равного нулю.
Точная синхронизация достигается, когда входящие и исходящие маршруты между клиентом и сервером симметричны, то есть имеют одинаковую задержку. Если маршруты несимметричны, то существует систематическое смещение в половину разницы между временем передачи пакета от клиента к серверу и обратно.
Механизмы передачи
В большинстве случаев протокол NTP использует классическую клиент-серверную модель работы, в которой клиент отправляет запрос и через некоторое время получает ответ от сервера. Однако протокол допускает работу и в одноранговых системах, где два одноранговых узла (peer) рассматривают друг друга как потенциальный источник времени. Этот режим работы также называют симметричным. Для сетевого взаимодействия NTP использует протокол UDP, по умолчанию работая на порту 123. Для передачи данных могут быть использованы различные механизмы – unicast, broadcast, multicast и manycast.
Протокол NTP для передачи данных чаще всего использует режим Unicast. В этом режиме данные передаются от одного устройства сети к другому индивидуально. В Unicast пакетах в качестве IP-адреса назначения используется конкретный адрес устройства, для которого этот пакет предназначен.
Этот режим удобен в тех случаях, когда малое количество NTP-серверов обслуживает большое количество клиентов. В этом режиме сервер периодически рассылает пакеты, используя широковещательный адрес подсети. Клиент, настроенный на синхронизацию таким способом, получает широковещательный пакет сервера и производит синхронизацию с ним.
Этот режим имеет ряд особенностей. Во-первых, режим Broadcast обеспечивает меньшую точность синхронизации по сравнению с Unicast. Во-вторых, широковещательные пакеты могут передаваться только в рамках одной подсети. Кроме того, для защиты от злоумышленников желательно использовать методы аутентификации.
Режим Multicast работает аналогично Broadcast. Разница заключается в том, что для доставки пакетов используется не широковещательный адрес подсети, а адрес Multicast-группы. Для клиентов и серверов задается групповой IP-адрес, который они используют для синхронизации времени. Это делает возможным синхронизацию групп машин, расположенных в различных подсетях, при условии, что соединяющие их маршрутизаторы поддерживают протокол IGMP и настроены на передачу группового трафика.
Этот режим является нововведением последней версии (v4) протокола NTP. Режим Manycast функционирует как режим Multicast только с неизвестными IP-адресами серверов NTP. Путем рассылки Multicast-сообщений клиент ищет в сети Manycast-сервера, получает от каждого из них образцы времени и производит выбор трех «лучших», с которыми будет производить синхронизацию. В случае выхода из строя одного из серверов клиент автоматически обновляет свой список.
Для передачи образцов времени клиенты и серверы, работающие в Manycast-режиме, также используют адреса Multicast-групп. Клиенты и серверы, использующие один и тот же адрес, формируют одну ассоциацию. Количество ассоциаций определяется количеством используемых Multicast-адресов.
Версии протокола
С момента своего появления в 1985 года протокол начал активно развиваться и уже к 1992 году сменил четыре версии (от NTPv0 до NTPv3). Каждая новая версия добавляла функционал и оптимизировала его работу, но оставляла неизменным формат данных и сохраняла совместимость различных версий между собой. Последняя четвертая версия протокола датирована 2010 годом. NTP продолжает развитие и в наши дни, ведутся работы по созданию решения, технически схожего с более точным протоколом PTP (Precision Time Protocol).
Одновременно с NTPv3 в 1992 году была представлена более простая версия протокола – SNTP (Simple NTP). В протоколе SNTP используется одинаковый с протоколом NTP формат передачи и представления данных. При этом SNTP не касается алгоритмов работы сервера, а упрощает алгоритмы работы клиентов. Именно поэтому протокол чаще всего используется во встраиваемых системах и устройствах, не требующих высокой точности.
Разница между NTP и SNTP заключается в методах определения оптимальных серверов для синхронизации и методе коррекции времени. Так NTP позволяет клиенту использовать математический алгоритм пересечений (переработанную версию алгоритма Марзулло) для выбора нескольких лучших серверов в сети и плавно корректировать свое время. В SNTP для синхронизации используется один предопределенный NTP сервер, в то время как другие могут являться лишь резервными на случай потери связи с основным устройством. При этом клиент, использующий SNTP, способен корректировать время только скачком по факту получения ответа от сервера.
Типовая схема системы синхронизации и ее недостатки
Традиционно система точного времени на промышленных объектах строится на основе NTP-сервера, состоящего из головного устройства, монтируемого в одном шкафу с сетевым оборудованием, и выносной антенны, которая устанавливается на улице и подключается к серверу при помощи коаксиального кабеля. При этом на головном устройстве имеется несколько сетевых интерфейсов (Ethernet или RS-232/485) для подключения клиентов в одной или нескольких сетях.
Типовая схема системы точного времени
Если посмотреть на это решение более внимательно, то в нем можно выделить несколько недостатков. Во-первых, в такой системе отсутствует полноценное резервирование. Несмотря на то, что головное устройство обладает несколькими сетевыми интерфейсами и способно обеспечивать точное время в нескольких сетях, его сбой или выход из строя приведет к потере источника точного времени на всем объекте. Полное же резервирование головного устройства в подобном решении сделает без того дорогую систему синхронизации еще дороже.
Вторым недостатком можно назвать необходимость установки сервера времени в шкафу. Для больших проектов это не является минусом, но для небольших локальных систем управления это может стать серьезной проблемой.
Также к недостаткам можно отнести необходимость применения выносной антенны и коаксиального кабеля. Почему? Прежде всего, стоимость качественной GPS/ГЛОНАСС антенны с длинным кабелем и защитой от грызунов легко может перевалить за 10 000 руб. в ценах 2020 года. При этом коаксиальные кабели имеют ограниченную длину для передачи сигналов спутниковых систем. При длине более 50 м сигнал будет значительно затухать, что является серьезным ограничивающим фактором в больших зданиях.
Главным же недостатком традиционного подхода в создании систем синхронизации является его высокая стоимость (часто более 150 000 рублей), что существенно сказывается на смете не только небольших проектов, но и вполне крупных.
Как сделать систему дешевле и надежнее
Безусловным трендом современных технологий является создание более компактных и простых для пользователя электронных устройств. В этом плане сервера точного времени не являются исключением.
Всё решение, связанное с системой синхронизации, включая GPS/ГЛОНАСС антенну, может уместиться в небольшую коробочку, как это сделано в
FL TIMESERVER от Phoenix Contact. Устройство выполнено по принципу smart-антенны, то есть совмещает в себе непосредственно функционал сервера времени и антенну GPS/ГЛОНАСС приемника. Конструктивное исполнение – это единственное, что отличает его от привычных решений.
Сервер времени FL TIMESERVER NTP
В плане функционала никаких отличий нет: устройство способно принимать метки времени и данные геолокации от спутниковых систем навигации (ГЛОНАСС, GPS) и транслировать эту информацию для клиентов в сети Ethernet.
Система точного времени на основе решения Phoenix Contact
При использовании подобного решения система синхронизации значительно упрощается и позволяет избавиться от недостатков традиционного подхода. FL TIMESERVER имеет только один порт Ethernet, но при необходимости использовать несколько интерфейсов достаточно подключить его в коммутатор или же использовать несколько smart-антенн. В этом случае мы получим полноценное резервирование серверов времени, а не только его сетевого интерфейса. При этом конечное решение все равно окажется дешевле многих существующих аналогов. FL TIMESERVER можно вынести за пределы сетевого шкафа или шкафа автоматизации, сэкономив место внутри. В этом решении не требуется отдельная антенна, здесь она уже встроена и к сети предприятия мы можем подключаться обычным Ethernet кабелем. В свою очередь это позволяет вынести сервер времени на расстояние до 100 м от основного оборудования без опасения, что сигнал затухнет. Самым главным преимуществом подобного решения является совсем другой порядок цен. Стоимость одного сервера времени менее 300 евро, что делает его удобным в применении как в небольших, так и в крупных проектах.