Найти в Дзене

NTP синхронизация без обратной связи

Задача: Синхронизировать устройство через SPAN порт коммутатора или же через инфодиод. Для проверки возможности было создано две виртуальные машины с Windows и Ubuntu.
В качестве синхронизации в среде Windows использовался NTP клиент от Meinberg ntp-4.2.8p15a вместе с GUI NTP Time Server Monitor. Сразу скажу, что есть небольшие косяки и один из атрибутов в винде вызывает ошибку.
В качестве синхронизации в среде Linux (Ubuntu) использовался такой же ntpd. Внезапно оказалось, что в Ubuntu 20 и Debian 11 по умолчанию используется systemd-timesyncd. В сети даже есть адепты использования оного (раз и два). Основные тезисы и примеры можно прочитать на сайте meinberg (раз и два) и прочих ресурсах. В качестве источника времени используется маршрутизатор Mikrotik, благо синхронизацию наконец-то допилили. Для контроля пакетов были созданы Firewall правила input и output трафика с указанием ip адреса синхронизируемой машины. К слову в примере ниже адрес виртуальной машины у меня 172.19.1.196. А
Оглавление

Задача: Синхронизировать устройство через SPAN порт коммутатора или же через инфодиод.

Для проверки возможности было создано две виртуальные машины с Windows и Ubuntu.
В качестве синхронизации в среде Windows использовался NTP
клиент от Meinberg ntp-4.2.8p15a вместе с GUI NTP Time Server Monitor. Сразу скажу, что есть небольшие косяки и один из атрибутов в винде вызывает ошибку.
В качестве синхронизации в среде Linux (Ubuntu) использовался такой же ntpd. Внезапно оказалось, что в Ubuntu 20 и Debian 11 по умолчанию используется systemd-timesyncd. В сети даже есть адепты использования оного (
раз и два).

Основные тезисы и примеры можно прочитать на сайте meinberg (раз и два) и прочих ресурсах.

В качестве источника времени используется маршрутизатор Mikrotik, благо синхронизацию наконец-то допилили. Для контроля пакетов были созданы Firewall правила input и output трафика с указанием ip адреса синхронизируемой машины. К слову в примере ниже адрес виртуальной машины у меня 172.19.1.196. Адрес Mikrotik 172.19.1.3. Широковещательный ip обязательно указывается вручную.

Широковещательная синхронизация Windows

1. Broadcast

Для широковещательной рассылки необходимы следующие настройки ntp.conf файла:

broadcastdelay 0.001
broadcastclient #novolley
disable auth

broadcastdelay: Если не указать broadcastdelay, то ntpd будет пытаться измерить задержку передачи между нашей машиной и сервером времени. Без этой настройки синхронизация даже не будет стартовать;
broadcastclient: Тут вроде все понятно. Главное проверить, чтобы широковещательный адрес находился в диапазоне нашей маски;
novolley: Дополнительный атрибут отвечающий за отсутствие отправки пакетов в сторону источника времени. Внезапно не работает под Windows;
disable auth: отключение аутентификации. По умолчанию broadcast требует аутентификацию. Если этот атрибут не указать, то тогда придётся прописывать ключи в ntp.key, что будет показано далее.

Далее сдвигаем время на виртуалке и запускаем ntpd. Для контроля входящего трафика включаем wireshark. После прилёта пакета NTP необходимо сразу мониторить, появилась ли строка с указанием источника синхронизации и прочими атрибутами. Так как рассылка происходит каждые 64 секунды, то необходимо подождать 4-5 минуть, чтобы время грубо установилось, т.е. на несколько минут/часов (см. атрибут Offset). Через ещё 5 минут система выйдет в устойчивый режим и мы увидим следующую картину.

Как видим, строка позеленела, что не может не радовать.

2. Multicast

Для синхронизации через Multicast стандартом IANA определён ip адрес 224.0.1.1. Выставляем следующие настройки:

broadcastdelay 0.001
multicastclient 224.0.1.1
disable auth

Как видим, несмотря на стандарт, необходимо указать ip адрес multicast расссылкию.

3. Шифрование

Прежде всего нужно уточнить, что в соответствии рекомендацией meinberg ntpd в роли широковещательного клиента не желательно принимать неаутентифицированные пакеты. Поэтому в соответствии с рекомендацией создаем файл с симметричными ключами по адресу C:\Program Files\NTP\etc\ntp.keys, например:

1 M f294fa0

В данном случае единица это порядковый номер ключа, буква M означает симметричный шифр MD5 (более подробно читать здесь), далее набор символов самого ключа. Аналогичную настройку нужно сделать в маршрутизаторе.

Итого для Broadcast конфигурация будет следующая:

broadcastdelay 0.001
broadcastclient #novolley
keys "C:\Program Files\NTP\etc\ntp.keys" # path of symmetric keys file
trustedkey 1

И для Multicast:

broadcastdelay 0.001
multicastclient 224.0.1.1
keys "C:\Program Files\NTP\etc\ntp.keys" # path of symmetric keys file
trustedkey 1

Широковещательная синхронизация Linux

Наигрались с Windows теперь проверяем на Ubuntu. Делаем по аналогии. Для начала ставим NTP демон:

sudo apt install ntp

Проверяем версию:

sntp --version

Далее редактируем наш ntp.conf:

sudo nano /etc/ntp.conf

Если хотим ключи шифрования, то:

sudo nano /etc/ntp.keys

Комментируем # всё лишнее оставляем только варианты предложенные ранее. Атрибут novolley в Linux отлично работает. Сохраняем CTRL+S, выходим CTRL+X.

Для примера имеем следующую конфигурацию:

Содержание файла ntp.conf
Содержание файла ntp.conf

Далее перезапускаем NTP сервер с новыми настройками:

sudo service ntp restart

Далее мониторим состояние синхронизации командой:

ntpq -p

Если синхронизация пошла, то увидим целый ворох атрибутов:

На этом всё. Буду рад комментариям.