- Как настроить NTP-сервер времени
- Что такое NTP
- Почему протокол NTP важен и как он используется
- Как устроен протокол NTP
- Как синхронизировать время с NTP-сервером
- Установка сервера времени NTP в Windows
- NetTime: как синхронизировать время с сервером с помощью программы
- Настройка времени на сервере для Linux
- Заключение
- NTP – как это работает
Как настроить NTP-сервер времени
Синхронизация времени имеет решающее значение в современных компьютерных сетях, потому что такие важные задачи, как управление, обеспечение безопасности, планирование и отладка сети, требуют точно установленного времени. При этом поддержание точного времени — сложная задача, поскольку часы компьютера смещаются на несколько минут или секунд каждый день. Решить проблему синхронизации временем на устройствах помогает протокол сетевого времени (NTP — Network Time Protocol). В статье рассказываем, что такое протокол NTP, зачем нужна настройка NTP-сервера, как включить NTP и как поменять время на сервере.
Что такое NTP
Протокол сетевого времени (NTP) — это протокол, который помогает синхронизировать время устройств (компьютеров, серверов, коммутаторов, маршрутизаторов) в сети.
Внешним источником точного времени, к которому делается запрос, является NTP-сервер синхронизации времени. В то же время сам NTP-сервер получает точное всемирное координированное время (UTC — Coordinated Universal Time) от авторитетного источника времени, такого как атомные часы или GPS.
Для обозначения того, кто запрашивает время, используется термин «NTP-клиент». А источником информации о времени служит NTP-сервер.
Конечной целью NTP является синхронизация часов всех участвующих устройств с высокой точностью относительно UTC.
Почему протокол NTP важен и как он используется
Если у вас только один компьютер, то установить точное время несложно. А если вы администрируете большое количество компьютеров, серверов и других устройств, которые должны работать с одинаковым временем, то стоит использовать NTP.
Вот несколько примеров использования NTP:
- Распределенные процедуры зависят от скоординированного времени, чтобы обеспечить правильную последовательность.
- Механизмы безопасности зависят от последовательного хронометража в сети.
- Обновления файловой системы, выполняемые на нескольких компьютерах, зависят от синхронизированного времени.
- Система управления сетью полагается на точность времени для измерения производительности и устранения неполадок.
Как устроен протокол NTP
Как мы уже говорили выше, для обозначения связи между участниками синхронизации времени используют термины «NTP-сервер» и «клиент». Где клиент — это система, стремящаяся синхронизировать свои часы с сервером, а сервер — источник информации о времени. Чтобы понять, как устроен протокол сетевого времени, обратимся к его структуре.
Протокол NTP использует иерархическую структуру источников времени. Каждый уровень этой иерархии называется слоем (от англ. stratum).
Первый слой образуют первичные серверы (главные серверы), которые синхронизируются непосредственно с авторитетными и самыми точными источниками времени — атомными часами или GPS.
Вторичные серверы уже получают время от первичных серверов, а также могут синхронизироваться между собой. А серверы третьего уровня синхронизируются с вторичным серверами и так далее. Всего может быть 15 слоев. Меньшее значение указывает на более высокую точность. Но все равно разница будет незначительной и составит микросек isунды.
Часто компании настраивают свой NTP-сервер в локальной сети и указывают его для других устройств. То есть этот NTP-сервер будет узнавать время у публичных серверов в интернете и потом передавать его вашим устройствам, подключенным к локальному серверу. Это обеспечит одинаковое время для всех ваших устройств в локальной сети.
Как синхронизировать время с NTP-сервером
Обеспечить бесперебойную работу программного обеспечения NTP возможно в режиме системной службы. В операционной системе Windows — это служба W32Time, для Linux — демон Ntpd.
Далее расскажем, как установить сервер времени, на каждой из этих систем.
Установка сервера времени NTP в Windows
Служба времени W32Time в операционной системе Windows синхронизирует время в домене Active Directory. Для начала нужно открыть открыть 123 udp порт для контроллера домена.
w32tm /config /syncfromflags:manual /manualpeerlist:»0.pool.ntp.org, 1.pool.ntp.org, 2.pool.ntp.org»
w32tm /query /configuration
Готово! Синхронизация времени в домене Windows настроена.
NetTime: как синхронизировать время с сервером с помощью программы
С помощью утилиты NetTime можно быстро настроить синхронизацию времени с NTP серверами.
Так выглядят настройки программы:
В программе можно легко настроить список NTP-серверов, с которых вы хотите получать точное время, настроить интервал синхронизации и т.д.
Настройка времени на сервере для Linux
Ntpd (Network Time Protocol daemon) — это демон операционной системы Linux, который устанавливает и поддерживает системное время синхронно с серверами точного времени в интернете.
По шагам рассказываем, как установить и настроить ntpd в Linux.
Для установки используется менеджер пакетов sudo apt-get install ntp
Шаг 2. Редактирование файла конфигурации.
Шаг 3. Ввод серверов времени.
Укажите несколько NTP-серверов.
Шаг 5. Проверка результата.
Проверьте, запущен ли ntpd.
Заключение
Протокол NTP нужен для синхронизации времени компьютеров и других устройств в сети. Компьютер, который хочет получить точное время, запрашивает его у NTP-сервера. В свою очередь NTP-сервер работает с точными атомными часами и GPS и синхронизируют время между клиентами (устройствами, которые запрашивают время), используя эти точные часы в качестве эталонного времени.
У протокола NTP иерархическая структура. На первом уровне иерархии находятся серверы, которые синхронизируются с эталонными часами. Вторичные серверы запрашивают время у серверов первого уровня. Серверы, которые находятся на третьем уровне, синхронизируются с серверами второго уровня и т.д. При этом каждый уровень показывает точное время, а разница составляет микросекунды.
Также в статье мы рассказали, как поставить время на сервере в операционных системах Windows и Linux. В Windows это можно сделать с помощью службы времени W32Time. В качестве альтернативы можно установить утилиту NetTime и синхронизировать время. Для настройки времени в операционной системе Linux используется демон ntpd.
NTP – как это работает
В обычном режиме первый пакет отправляется клиентом. Непосредственно перед отправкой клиент записывает своё текущее время (метка времени t1) и запоминает это значение в переменной.
При получении пакета клиента, сервер формирует ответный пакет. В него копируется значение времени отправки из полученного запроса, и записывается текущее время сервера (метка времени t2, момент получения запроса). После завершения обработки запроса, сервер проставляет в отправляемый пакет своё текущее время (метка времени t3, момент отправки ответа) и отсылает его клиенту.
При получении ответа клиент записывает время его получения (метка времени t4). Теперь у клиента достаточно данных для расчёта значений смещения и задержки, вызванной передачей пакетов в сетевой среде. Однако, перед началом обработки данных производится их проверка, позволяющая исключить обработку продублированных, поддельных или воспроизведённых пакетов.
Смещение времени (разница между временем сервера и клиента) вычисляется как:
, а общее время передачи данных:
Как говорилось выше, передаваемые метки времени представлены 64-битными числами без знака. Для выполнения арифметических операций потребуется выделить один бит под знак – для числа остаётся 63 бита. В расчётах используются суммы и разности этих значений, поэтому необходимо выделить ещё один бит для знака, и под число остаётся 62 бита. Максимальное значение периода времени, которое можно представить таким числом – это примерно 34 года в будущем и 34 года в прошлом. Поэтому, для синхронизации время клиента должно отличаться от времени сервера не более чем на ± 34 года.
При расчётах делается предположение, что сетевая среда симметрична и время задержки, необходимое для отправки и получения данных одинаково. Однако, сетевая среда не идеальна, и это время может различаться. Поэтому при анализе рассчитанных данных используется математическая и статистическая обработка, позволяющая учесть нестабильность сети. Синхронизация с использованием протокола NTP 4-й версии позволяет достигать точности порядка 10 мс для систем, синхронизируемых через Интернет. При синхронизации в локальной сети точность достигает десятых и сотых долей миллисекунд.