Обзор
Протокол NTP (англ. Network Time Protocol — протокол сетевого времени) — сетевой протокол синхронизирующий хронометраж времени между распределенными серверами времени и клиентами . С помощью этой синхронизации возможна активация лицензий на устройстве, ведение системных журналов с сопоставлением по времени и прочих событий, возникающих на устройстве
NTP использует UDP в качестве транспортного протокола с портом 123. Для всех сообщений NTP используется UTC (англ. Universal Coordinated Time) - всемирное координированное время , которое совпадает со средним временем по Гринвичу.
Устройства линейки ESR могут не синхронизировать время с другими хостами, время которых может быть неоднозначным или некорректным по следующим причинам:
- если устройство, с которым ESR необходимо синхронизироваться , само не синхронизировано
- если устройство, с которым ESR необходимо синхронизироваться, имеет значительно отличающееся время ( параметр root dispersion ), даже если его stratum ниже (лучше), чем у других
- если ESR не синхронизирован с другими серверами времени
Далее по тексту будут использоваться такие понятия как синхронизировать и синхронизироваться. В первом случае понятие подразумевает подвергнуть синхронизации устройства согласно переданным им данных времени (временные метки). Во втором случае устройство само будет синхронизировано по параметрам, полученным от другого устройства.
Устройства Eltex ESR поддерживают следующие режимы ассоциаций:
- Client
- Server
- Symmetric active
- Symmetric passive
- Broadcast client
Client-Server
Для внешнего NTP сервера в сети Интернет ESR выступает в качестве NTP клиента. В то же время он может выступать и NTP сервером для хостов, расположенных в локальном сегменте сети, предоставляя точное время всем устройствам, настроенным на запрос времени у него.
Ниже приведён базовый пример настройки ESR, выступающего в роли NTP клиента, синхронизируемого внешним сервером времени NTP Server, и в качестве NTP сервера для хостов в локальной сети:
ntp enable ntp server 46.146.231.187 minpoll 1 maxpoll 4 exit
Команда | Значение |
|---|---|
| ntp enable | Активация работы протокола NTP |
| ntp server | Указание NTP сервера, с которым будет осуществляться синхронизация времени |
| minpoll / maxpoll | Минимальный и максимальный интервалы времени между отправкой сообщений NTP-серверу |
Для прохождения UDP дейтаграмм протокола NTP необходимо прописать разрешающее правило в паре зон, одна из которых определена на интерфейсе, ведущем к внешним NTP серверам . В качестве порта назначения укажем значение 123. Вы так же можете настроить отдельное разрешающее правило для зон, ведущих в локальный сегмент сети ( в нашем примере это зона trusted ), чтобы разрешить пропуск трафика NTP из локального сегмента сети к ESR :
object-group service NTP
port-range 123
exit
security zone untrust
exit
security zone trusted
exit
interface gigabitethernet 1/0/1
security-zone untrust
ip address 198.19.0.1/30
exit
interface gigabitethernet 1/0/4
security-zone trusted
ip address 192.168.0.1/24
exit
security zone-pair untrust self
rule 1
action permit
match protocol udp
match destination-port object-group NTP
enable
exit
exit
security zone-pair trusted self
rule 1
action permit
match protocol udp
match destination-port object-group NTP
enable
exit
exit
Пример полной базовой конфигурации настройки ESR в качестве NTP сервера, синхронизируемого внешним сервером времени NTP Server и отдающий синхронизацию времени устройствам в локальной сети:
object-group service NTP
port-range 123
exit
security zone untrust
exit
security zone trusted
exit
interface gigabitethernet 1/0/1
security-zone untrust
ip address 198.19.0.1/30
exit
interface gigabitethernet 1/0/4
security-zone trusted
ip address 192.168.0.1/24
exit
security zone-pair untrust self
rule 1
action permit
match protocol udp
match destination-port object-group NTP
enable
exit
exit
security zone-pair trusted self
rule 1
action permit
match protocol udp
match destination-port object-group NTP
enable
exit
exit
ntp enable
ntp server 46.146.231.187
minpoll 1
maxpoll 4
exit
Symmetric Active / Symmetric Passive
В симметричном режиме оба устройства выступают равноправными пирами, обменивающимися данными хронометража и, в зависимости от этих данных, синхронизируют время с пиринговой машиной или же сами синхронизируют её.
Хост, работающий в симметричном активном режиме отправляет периодические сообщения независимо от состояния доступности или уровня своего однорангового узла-соседа. Работая в этом режиме, хост объявляет о своей готовности к синхронизации и быть синхронизированным одноранговым узлом.
Симметричный пассивный режим активируется при поступление сообщения о работе в симметричном активном режиме соседнего однорангового узла, и сохраняется только до тех пор, пока одноранговый узел доступен и работает на уровне stratum, меньшем или равном хосту; в противном случае связь разрывается. Однако связь всегда будет сохраняться до тех пор, пока в ответ не будет отправлено хотя бы одно сообщение. Работая в этом режиме, хост объявляет о своей готовности к синхронизации и будет синхронизирован одноранговым узлом.
Как правило, настройка симметричного режима работы осуществляется между устройствами, имеющие синхронизацию с точным времени внешних серверов времени.
В контексте настроек ESR симметричный режим настраивается с помощью команды ntp peer <ip-address> . Чтобы между двумя устройствами ESR установился симметричный активный режим, необходимо на каждом из устройств настроить данные команды. Команды указания интервала отправки NTP меток соответствуют тем же, что и при режиме работы с сервером:
ntp peer 192.168.0.1 minpoll 1 maxpoll 4 exit
Типовая полная конфигурация одного пира ( второй настраивается с симметричными настройками ):
object-group service NTP
port-range 123
exit
security zone untrust
exit
security zone trusted
exit
interface gigabitethernet 1/0/1
security-zone untrust
ip address 198.19.0.1/30
exit
interface gigabitethernet 1/0/4
security-zone trusted
ip address 192.168.0.1/24
exit
security zone-pair untrust self
rule 1
action permit
match protocol udp
match destination-port object-group NTP
enable
exit
exit
security zone-pair trusted self
rule 1
action permit
match protocol udp
match destination-port object-group NTP
enable
exit
exit
ntp enable
ntp server 46.146.231.187
minpoll 1
maxpoll 4
exit
ntp peer 192.168.0.100
minpoll 1
maxpoll 4
exit
Broadcast Client
Данный режим рекомендуется использовать в случаях, когда малое количество серверов обслуживает большое количество клиентов ( как правило - конечных устройств ). Работая в этом режиме, сервер периодически рассылает пакеты, используя широковещательный адрес подсети. Клиент, настроенный на синхронизацию таким способом, получает широковещательный пакет сервера и производит синхронизацию с сервером. Особенностью этого режима является то, что время доставляется в рамках одной подсети (ограничение broadcast-пакетов).
Устройства линейки ESR поддерживают только broadcast-client режим и способны получать синхронизацию времени от внешних серверов времени, работающих в broadcast режиме:
ntp enable ntp broadcast-client enable
Работа в Virtual Routing and Forwarding
На устройствах линейки ESR имеется возможность задания VRF, в котором устройство будет устанавливать Peer-to-Peer или Client-Server (в качестве Client) отношения. Для этого необходимо использовать команду vrf <INSTANCE> после указания адреса удалённой устройства времени:
ntp server 10.0.0.1 vrf LAN ntp peer 198.18.0.1 vrf WAN
При этом, все устройства, выступающие в роли NTP-клиентов для данного ESR, и находящиеся в других VRF, смогут получать синхронизацию времени. Значение таймштампов, отправляемое ESR NTP-клиентам, определяет маршрутизатор на основании полученных значений от NTP-устройств, с которыми настроены Peer-to-Peer или Client-Server (ESR - в качестве Client) соседства.
FQDN-pool
В отличие от server и peer функционал pool позволяет обеспечить клиент-серверное взаимодействие не с одним, а группой устройств посредством протокола DNS. Данный способ обеспечивает более надёжную и отказоустойчивую связь с несколькими машинами, позволяя вести обмен актуального времени непрерывно. В случае отказа отдного из устройств в пуле, новый сервер будет выбран согласно иерархии, а его IP-адрес будет известен через FQDN-запрос.
Для работы ntp pool необходимо активировать службу DNS на ESR (см. статью Настройка DNS на маршрутизаторе ESR).
Чтобы обеспечить более быструю синхронизацию времени в момент начального этапа используется опция iburst: маршрутизатор посылает серию из 8 пакетов, когда сервер недоступен (пытаясь выяснить, доступен ли хост), а затем сокращает время до первой синхронизации. Данная опция считается "агрессивной" для некоторых публичных NTP-серверов, в результате чего добиться синхронизации с ними будет сложней. Если сервер NTP не отвечает, в режиме iburst маршрутизатор продолжит посылать частые запросы, пока сервер не ответит и не начнется синхронизация времени.
После успешной синхронизации с сервером в NTP-пуле используется опция burst: маршрутизатор посылает серию из восьми* пакетов вместо обычного одного, используется для точного измерения джиттера с большими интервалами опроса:
* - в опции burst количество пакетов в серии определяется разницей между текущей экспонентой опроса и минимальной экспонентой опроса как мощность 2. Например, при минимальной экспоненте опроса (minpoll) по умолчанию 6 (64 с) в каждом опросе отправляется только один пакет, а при экспоненте опроса 9 (512 с) и более отправляется полное количество пакетов - восемь. Это гарантирует, что средний интервал никогда не превысит минимальный интервал.
ntp pool pool.ntp.org burst iburst minpoll 1 maxpoll 4 exit
Команда | Значение |
|---|---|
| ntp pool <pool_name> | Указание NTP-пула серверов, с которым будет осуществляться синхронизация времени. |
| burst | Посылает серию из восьми* пакетов, когда сервер доступен. Используется для точного измерения джиттера с большими интервалами опроса. |
| iburst | Посылает серию из 8 пакетов в момент начального этапа установления синхронизации. |
Механизмы защиты NTP
Для защиты NTP на устройствах линейки ESR необходимо использовать NTP object-group.
Данный функционал ограничивает NTP-запросы в сторону NTP-сервера и позволяет фильтровать NTP-сообщения от несанкционированных устройств.
Режим работы serve-only подразумевает обработку и ответ на NTP-query ( запрос времени ) от NTP-клиентов и одноранговых пиров. При этом сам NTP-сервер не будет пытаться синхронизироваться ( Selection Algorithm - RFC5905 ) с временем, полученным в запросе от однорангового пира. Так же в данном режиме запрещены control message.
Режим работы query-only подразумевает обработку и ответ на NTP-query ( запрос времени ) от NTP-клиентов и одноранговых пиров. При этом сам NTP-сервер не будет пытаться синхронизироваться ( Selection Algorithm - RFC5905 ) с временем, полученным в запросе от однорангового пира, но будет отвечать на control message.
Схема:
Задача:
Необходимо установить client-server ассоциации между ESR и NTP Servers из определённого пула адресов для получения времени и распространения его в LAN-сегмент. NTP-клиенты в LAN сегменте должны лишь получать NTP-reply на запросы времени NTP-сервера от ESR, не пытаясь синхронизировать его. В LAN-сегменте имеется так же сервер для мониторинга NTP-сервера внутри периметра.
Решение:
Предвариетльная настройка
Предварительно нужно выполнить следующие действия:
- создать зону безопасности
- описать взаимодействие между созданной зоной и зоной self
- указать зону безопасности для интерфейса gi1/0/1;
- настроить IP-адрес для интерфейса gi1/0/1, чтобы обеспечить IP-связность с NTP-сервером.
security zone untrust
exit
object-group service NTP
port-range 123
exit
interface gigabitethernet 1/0/1
security-zone untrust
ip address 192.168.52.8/24
exit
interface gigabitethernet 1/0/7
ip firewall disable
ip address 192.168.54.1/24
exit
interface gigabitethernet 1/0/8
ip firewall disable
ip address 192.168.154.1/24
exit
security zone-pair untrust self
rule 10
action permit
match protocol udp
match destination-port object-group NTP
enable
exit
exit
Основной этап конфигурирования
Этап 1. Настройка конфигураций для внешнего NTP-сервера.
Сконфигурируем настройки с внешним NTP-сервером:
esr(config)# ntp server 192.168.52.1
Укажем версию протокола:
esr(config-ntp)# version 4
Укажем предпочтительность данного NTP-сервера:
esr(config-ntp)# prefer
Укажем интервалы времени между отправкой NTP-запросов серверу:
esr(config-ntp)# minpoll 1 esr(config-ntp)# maxpoll 4 esr(config-ntp)# exit
Создадим список IP-адресов доверенных NTP-серверов, от которых будет разрешено получать NTP-запросы для синхронизации времени:
esr(config)# object-group network NTP_Servers esr(config-object-group-network)# ip address-range 192.168.52.1 esr(config-object-group-network)# exit
Укажем список IP-адресов внешних NTP-серверов и пиров, с которым будет разрешён обмен NTP-пакетами:
esr (config)# ntp access-addresses NTP_Servers
Этап 2. Настройка доступа к NTP-серверу на маршрутизаторе ESR.
Создадим несколько списков IP-адресов. Первым списком опишем лишь клиентов, которым необходимо лишь получать время от NTP-сервера. Вторым списком опишем хосты мониторинга, с которых будут разрешены control message в сторону NTP-сервера:
esr(config)# object-group network NTP_Clients esr(config-object-group-network)# ip address-range 192.168.54.2 esr(config-object-group-network)# exit esr(config)# object-group network NTP_Monitor esr(config-object-group-network)# ip address-range 192.168.154.2 esr(config-object-group-network)# exit
Укажем object-group для разделения прав доступа к NTP-серверу: object-group query-only будут опрашивать NTP-сервер в качестве сервера мониторинга, object-group serve-only будут лишь опрашиват NTP-сервер актуальное время:
esr(config)# ntp object-group query-only NTP_Monitor esr(config)# ntp object-group serve-only NTP_Clients
Активируем протокол NTP на ESR и сохраним настройки:
esr (config)# ntp enable esr (config)# end esr# commit esr# confirm
Диагностика NTP
Диагностика на ESR
Команда для просмотра текущей конфигурации протокола NTP:
esr # show ntp configuration
NTP status: Enabled NTP mode: client/server NTP DSCP: 46 Address VRF instance Type Version Min poll Max poll Prefer ---------------------------------------------- -------------------------------- ------ ------- -------- -------- ------ 192.168.52.1 1 server 4 1 4 Yes
Команда для просмотра текущего состояние NTP-серверов (пиров):
esr# show ntp peers
Clock is synchronized, stratum 3, reference is 192.168.52.1
remote vrf refid st t when poll reach delay offset jitter
- ------------------------- ---------- --------------- -- - ---- ---- ----- -------- -------- --------
* 192.168.52.1 194.190.168.1 2 u 5 8 255 0.236 3.941 0.544
Диагностика NTP на сервере мониторинга.
Для просмотра текущего пула пиров NTP у указанного сервера используйте команду ntpq -p <IP_адрес_сервера> :
ntpq -p 192.168.154.1
remote refid st t when poll reach delay offset jitter
==============================================================================
192.168.52.1 16 p - 64 0 0.000 0.000 0.000
0.ubuntu.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000
1.ubuntu.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000
2.ubuntu.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000
3.ubuntu.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000
ntp.ubuntu.com .POOL. 16 p - 64 0 0.000 0.000 0.000
Чтобы посмотреть подробную информацию по текущему NTP состоянию хоста воспользуйтесь командой ntpq -c sysinfo :
ntpq -c sysinfo associd=0 status=0615 leap_none, sync_ntp, 1 event, clock_sync, system peer: 91.206.16.3 (tms04.deltatelesystems.ru):123 system peer mode: client leap indicator: 00 stratum: 2 log2 precision: -24 root delay: 29.148 root dispersion: 31.738 reference ID: 91.206.16.3 reference time: e92e5d4c.b1222172 Thu, Dec 21 2023 13:44:28.691 system jitter: 10.929530 clock jitter: 3.121 clock wander: 0.386 broadcast delay: -50.000 symm. auth. delay: 0.000
Чтобы посмотреть на текущие ассоциации с пирами воспользуйтесь командой ntpq -c associations :
ntpq -c associations ind assid status conf reach auth condition last_event cnt =========================================================== 1 981 8811 yes none none reject mobilize 1 2 982 8811 yes none none reject mobilize 1 3 983 8811 yes none none reject mobilize 1 4 984 8811 yes none none reject mobilize 1 5 985 8811 yes none none reject mobilize 1 6 986 8811 yes none none reject mobilize 1 7 987 132a no yes none outlier sys_peer 2 8 994 148a no yes none candidate sys_peer 8 9 1001 163a no yes none sys.peer sys_peer 3 10 1002 1414 no yes none candidate reachable 1
Для сопоставления режима ассоциаций, используйте параметр столбца assid в выводе команды ntpq -c apeers :
ntpq -c apeers
remote refid assid st t when poll reach delay offset jitter
==============================================================================
0.ubuntu.pool.n .POOL. 981 16 p - 64 0 0.000 0.000 0.000
1.ubuntu.pool.n .POOL. 982 16 p - 64 0 0.000 0.000 0.000
2.ubuntu.pool.n .POOL. 983 16 p - 64 0 0.000 0.000 0.000
3.ubuntu.pool.n .POOL. 984 16 p - 64 0 0.000 0.000 0.000
ntp.ubuntu.com .POOL. 985 16 p - 64 0 0.000 0.000 0.000
10.0.0.255 .BCST. 986 16 B - 8 0 0.000 0.000 0.000
-ntp1.doorhan.ru c2bea801 987 2 u 556 1024 377 43.485 -1.493 232.904
+ntp.ix.ru .GLN. 994 1 u 646 1024 377 22.341 7.570 0.359
*91.206.16.3 (tm .GPS. 1001 1 u 504 1024 377 29.148 -3.963 0.556
+time.cloudflare a570cb4 1002 3 u 562 1024 377 42.908 -2.125 3.308




