Порты для синхронизации времени
Порты для синхронизации времени
ФГУП «ВНИИФТРИ» предоставляет открытый доступ к серверам синхронизации шкалы времени по протоколу NTP . На данный момент работает группа из 4-х серверов stratum 1, подключенных к государственному первичному эталону времени РФ , 4-х серверов stratum 1, подключенных к вторичным эталонам и один сервер stratum 2 синхронизирующийся с основной группировкой серверов. Все сервера предоставляют доступ по протоколу NTPv4 IPv4 в соответствии с международным стандартом RFC-5905 .
Протокол NTPv4 предоставляет точность синхронизации порядка десятков миллисекунд при взаимодействии через Интернет. Поддержка данного протокола реализована для большинства операционных систем:
- демон ntpd для Unix-подобных систем
- встроенные средства настройки даты и времени или W32tm.exe для операционных систем MS Windows
Описание выпускаемых изделий:
Адрес | Порт | Уровень | Устройство | Доступ |
---|---|---|---|---|
ntp1.vniiftri.ru | IPv4 UDP 123 | stratum 1 | Meinberg LANTIME M300/MRS | свободный |
ntp2.vniiftri.ru | IPv4 UDP 123 | stratum 1 | Meinberg LANTIME M300/MRS | свободный |
ntp3.vniiftri.ru | IPv4 UDP 123 | stratum 1 | Meinberg LANTIME M300/MRS | свободный |
ntp4.vniiftri.ru | IPv4 UDP 123 | stratum 1 | Symmetricom SyncServer S250i | свободный |
ntp21.vniiftri.ru | IPv4 UDP 123 | stratum 2 | Linux kernel ntpd 4.2.6 Intel Xeon | свободный |
ntp1.niiftri.irkutsk.ru | IPv4 UDP 123 | stratum 1 | свободный | |
ntp2.niiftri.irkutsk.ru | IPv4 UDP 123 | stratum 1 | свободный | |
vniiftri.khv.ru | IPv4 UDP 123 | stratum 1 | Meinberg LANTIME M300/MRS | свободный |
vniiftri2.khv.ru | IPv4 UDP 123 | stratum 1 | Meinberg LANTIME M300/MRS | свободный |
NTP использует для своей работы протокол UDP. Система NTP чрезвычайно устойчива к изменениям латентности среды передачи.
NTP использует алгоритм Марзулло (предложен Кейтом Марзулло (Keith Marzullo) из Университета Калифорнии, Сан-Диего), включая такую особенность, как учёт времени передачи. В версии 4 способен достигать точности 10 мс (1/100 с) при работе через Интернет, и до 0,2 мс (1/5000 с) и лучше внутри локальных сетей.
Время представляется в системе NTP 64-битным числом (8 байт), состоящим из 32-битного счётчика секунд и 32-битного счётчика долей секунды, позволяя передавать время в диапазоне 2 32 секунд, с теоретической точностью 2 −32 секунды. Поскольку шкала времени в NTP повторяется каждые 2 32 секунды (136 лет), получатель должен хотя бы примерно знать текущее время (с точностью 50 лет).
Порты для синхронизации времени
Network Time Protocol — сетевой протокол для синхронизации внутренних часов компьютера с использованием сетей с переменной латентностью, основанных на коммутации пакетов.
Хотя традиционно NTP использует для своей работы протокол UDP, он также способен работать и поверх TCP. Система NTP чрезвычайно устойчива к изменениям латентности среды передачи.
Время, представляется в системе NTP 64-битным числом, состоящим из 32-битного счетчика секунд и 32-битного счетчика долей секунды, позволяя передавать время в диапазоне 2 32 секунд, с теоретической точностью 2 -32 секунды. Поскольку шкала времени в NTP повторяется каждые 2 32 секунды (136 лет), получатель должен хотя бы примерно знать текущее время (с точностью 68 лет). Также следует учитывать, что время отсчитывается с полуночи 1 января 1900 года, а не с 1970, поэтому из времени NTP нужно вычитать почти 70 лет (с учетом високосных лет), чтобы корректно совместить время с Windows или Unix-системами.
Как это работает
NTP-серверы работают в иерархической сети, каждый уровень иерархии называется ярусом (stratum). Ярус 0 представлен эталонными часами. За эталон берется сигнал GPS (Global Positioning System) или службы ACTS (Automated Computer Time Service). На нулевом ярусе NTP-серверы не работают.
NTP-серверы яруса 1 получают данные о времени от эталонных часов. NTP-серверы яруса 2 синхронизируются с серверами яруса 1. Всего может быть до 15 ярусов.
NTP-серверы и NTP-клиенты получают данные о времени от серверов яруса 1, хотя на практике NTP-клиентам лучше не делать этого, поскольку тысячи индивидуальных клиентских запросов окажутся слишком большой нагрузкой для серверов яруса 1. Лучше настроить локальный NTP-сервер, который ваши клиенты будут использовать для получения информации о времени.
Иерархическая структура протокола NTP является отказоустойчивой и избыточной. Рассмотрим пример его работы. Два NTP-сервера яруса 2 синхронизируются с шестью различными серверами яруса 1, каждый — по независимому каналу. Внутренние узлы синхронизируются с внутренними NTP-серверами. Два NTP-сервера яруса 2 координируют время друг с другом. В случае отказа линии связи с сервером яруса 1 или с одним из серверов уровня 2 избыточный сервер уровня 2 берет на себя процесс синхронизации.
Аналогично узлы и устройства яруса 3 могут использовать любой из серверов яруса 2. Что еще более важно, так это то, что наличие избыточной сети серверов NTP гарантирует постоянную доступность серверов времени. Синхронизируясь с несколькими серверами точного времени, NTP использует данные всех источников, чтобы высчитать наиболее точное временя.
Стоит отметить, что протокол NTP не устанавливает время в чистом виде. Он корректирует локальные часы с использованием временного смещения, разницы между временем на NTP-сервере и локальных часах. Серверы и клиенты NTP настраивают свои часы, синхронизируясь с текущим временем постепенно либо единовременно.
Почему NTP требует двунаправленного доступа брандмауэра к порту UDP 123?
. ntpd требует полного двунаправленного доступа к привилегированному UDP-порту 123. .
У меня вопрос, почему? Для тех, кто не знаком с NTP, это выглядит как потенциальная дыра в безопасности, особенно когда я прошу моего клиента открыть этот порт в своем брандмауэре, чтобы мои серверы могли синхронизировать свое время. У кого-нибудь есть достойное оправдание, которое я могу дать своему клиенту, чтобы убедить его, что мне нужен этот доступ в брандмауэре? Помощь приветствуется! 🙂
Разрешить входящий трафик для портов NTP необходимо только в том случае, если вы действуете как сервер, позволяющий клиентам синхронизироваться с вами.
В противном случае наличие состояния NTP автоматически определит, заблокирован ли входящий пакет NTP или разрешен существующим состоянием брандмауэра, которое мы инициировали.
iptables -A OUTPUT -p udp —sport 123 —dport 123 -j ПРИНЯТЬ
iptables -A INPUT -m состояние — УСТАНОВЛЕНО, СОПУТСТВУЕТ -j ПРИНЯТЬ
Пожалуйста, дайте мне знать, если правила iptables являются правильными. У меня нет опыта работы с iptables. Мой NTP-клиент синхронизируется на моем маршрутизаторе pfSense с использованием только правила исходящего разрешения, потому что pfSense — это межсетевой экран с отслеживанием состояния.
NTP требует двунаправленного доступа через порт 123, потому что в NTP RFC указывается следующее относительно исходного порта клиента:
При работе в симметричных режимах (1 и 2) это поле должно содержать номер порта NTP PORT (123), назначенный IANA.
Поскольку исходный порт клиента — 123, когда сервер отправляет ответ обратно, он отправляет его на порт 123. Естественно, чтобы иметь возможность получить этот ответ, клиент должен разрешить входящие ответы на порт 123. Обычно ответы возвращаются на некотором эфемерном диапазоне портов .
В качестве упоминал Бен Кук , это требуется только при работе с брандмауэром без сохранения состояния, так как брандмауэр с состоянием позволяет получить ответ без явного правила.
Я думаю, что лучшим решением является включение порта 123 для входа, только для IP-адресов, которые, как ожидается, дадут вашему серверу сигнал ntp.
Внутри конфигурационного файла ntp, /etc/ntp.conf, есть адреса нескольких серверов ntp, на которые должен указывать ваш сервер. Вы можете использовать команду lookup, чтобы найти соответствующий ip для каждого адреса.
host -t a 0.debian.pool.ntp.org
Затем вы можете добавить правило в брандмауэр сервера:
iptables -I INPUT -p udp -s 94.177.187.22 -j ACCEPT
. и так далее.
Это может помешать любому злоумышленнику повредить ваш сервер.
Я думаю, что бесполезно ограничивать вывод.
Связь ntp-сервер с портом источника и назначения 123. Наиболее удобно явно разрешить это, по крайней мере, хостам, на которых вы запускаете службу ntp.
Вы могли бы рассмотреть только выставление внешнего хоста в Интернет, чтобы получить время из внешних источников. Внутренняя служба ntp, синхронизирующаяся с этим, может быть источником для всех устройств. Если эти хосты предназначены для этой цели, возможное воздействие ограничено: они принимают только трафик ntp и не хранят другие данные.
Альтернативно, вообще не используйте внешнюю IP-сеть. Например, используйте источник радио, например, GPS.
Как проверить, готов ли порт 123 к синхронизации времени?
Я собираюсь сделать синхронизацию времени для своего сервера.
Попробовал portqry на сервер времени с приведенными ниже результатами:
C:PortQryV2>portqry -n «time server» -e 123 -p оба
Вызывается целевая система запроса:
«time server»
Попытка преобразовать адрес IP в имя.
Не удалось разрешить IP address to name
запрос.
TCP порт 123 (неизвестная служба): не прослушивается
UDP порт 123 (служба ntp): LISTENING или FILTERED
UDP порт 123 (служба ntp): LISTENING или FILTERED
Я не уверен, доступен ли порт для синхронизации времени или нет. Но наша команда подтвердила, что никакой брандмауэр не должен блокировать это.
Он не показывает «LISTENING», потому что это порт UDP?
2 ответа
- как проверить, установлен ли принтер и готов ли он к работе с помощью C#?
Как программно проверить, установлен ли принтер или нет (а если он есть, то как проверить, включен ли он и готов ли к использованию?) в C# с помощью .NET 3.5 и Visual Studio 2008? Заранее спасибо,
Я отправил код данных (ZPL) по TCP/IP — SOCKET. Я хотел бы проверить состояние принтера zebra, если принтер zebra подключен к сети и готов. Я погуглил его, но не нашел решения. Я знаю статический адрес IP принтера zebra, а также порт.
ПРОСЛУШИВАНИЕ или FILTERED просто означает, что Portqry не получает ответа от указанного порта. Проблема должна быть в
Не удалось разрешить IP адрес в имя
разрешите имя хоста и повторите попытку.
Я попробовал PC, который не будет делать time syn. Он может разрешить имя хоста, но получил тот же результат для запроса UDP:
C:PortQryV2>portqry -n «IP Address» -e 123 -p оба
Запрос целевой системы называется:
«IP Address»
Попытка преобразовать адрес IP в имя.
IP адрес разрешен на xxx.corp.com
спрашиваю.
TCP порт 123 (неизвестная служба): НЕ ПРОСЛУШИВАЕТСЯ
UDP порт 123 (служба ntp): LISTENING или FILTERED
Похожие вопросы:
Создание приложения windows для проверки подключения к нескольким серверам. Как можно проверить, существует ли соединение с указанным портом на удаленном ip? Существует ли какая-либо встроенная.
У меня есть сторонняя библиотека, которая действует как сервер HTTP. Я передаю ему адрес и порт, которые он затем использует для прослушивания входящих соединений. Эта библиотека слушает таким.
Как проверить, готов ли документ (все js-файлы загружены, DOM готов) через jQuery? Там есть какой-нибудь флаг? Возникают проблемы, если некоторые файлы не загружаются полностью, и событие вызывается.
Как программно проверить, установлен ли принтер или нет (а если он есть, то как проверить, включен ли он и готов ли к использованию?) в C# с помощью .NET 3.5 и Visual Studio 2008? Заранее спасибо,
Я отправил код данных (ZPL) по TCP/IP — SOCKET. Я хотел бы проверить состояние принтера zebra, если принтер zebra подключен к сети и готов. Я погуглил его, но не нашел решения. Я знаю статический.
В новой ветви 0.5.1 есть официальный Windows исполняемый файл Node.js. Версия Linux Node.js использует установленные библиотеки, такие как v8, libev, libeio. Поскольку libev и libeio предназначены.
Следуя этому руководству , мне удалось настроить адаптер синхронизации для синхронизации данных между приложением Android и веб-сервером. Я вижу, что синхронизация работает, когда я заставляю.
У меня есть Cassandra, работающий в Docker, и я хочу запустить сценарий CQL, когда база данных будет готова. Я попытался проверить порт, чтобы определить, когда он готов : while ! nc -z localhost.
В моем приложении нужно проверить, открыт порт или нет. Вот ссылка на эту ссылку iOS SDK: как я могу проверить, открыт ли порт? Но ДНТ получит любое решение. А также обратитесь к этим двум github.
Я хотел бы сделать следующее: запустите контейнер docker когда 1-й процесс будет завершен, запустите второй контейнер когда 2-й будет закончен, запустите 3-й Я создал скрипт bash для запуска.