МКИ: различия между версиями
Dima (обсуждение | вклад) |
Dima (обсуждение | вклад) |
||
| Строка 182: | Строка 182: | ||
</syntaxhighlight>Ссылка на руководство: https://chrisjhart.com/Bridge-Network-Interfaces-on-Ubuntu-22.04/ | </syntaxhighlight>Ссылка на руководство: https://chrisjhart.com/Bridge-Network-Interfaces-on-Ubuntu-22.04/ | ||
Для сохранения настроек моста '''docker0''' после перезагрузки сервера необходимо в каталоге '''/etc/netplan''' создать файл с расширением .yaml (например, 01-network.yaml) со следующим содержимым:<syntaxhighlight lang="yaml"> | Для сохранения настроек моста '''docker0''' после перезагрузки сервера необходимо в каталоге '''/etc/netplan''' создать файл с расширением .yaml (например, '''01-network.yaml''') со следующим содержимым:<syntaxhighlight lang="yaml"> | ||
network: | network: | ||
version: 2 | version: 2 | ||
| Строка 208: | Строка 208: | ||
# Для интерфейса '''enp5s0''' вместо 192.168.2.15/24 следует указать нужный статический адрес сервера, также при необходимости следует указать фактически используемые адреса шлюза и DNS (в '''via''' и '''nameservers''' соответственно). | # Для интерфейса '''enp5s0''' вместо 192.168.2.15/24 следует указать нужный статический адрес сервера, также при необходимости следует указать фактически используемые адреса шлюза и DNS (в '''via''' и '''nameservers''' соответственно). | ||
# Для удобства проще скопировать готовый файл с компьютера администратора и положить его в '''/etc/netplan''' . | # Для удобства проще скопировать готовый файл с компьютера администратора и положить его в '''/etc/netplan''' . | ||
# Если нет необходимости сразу задействовать интерфейсы '''enp6s0/enp7s0/enp8s0''' в мосте '''docker0''', то можно предыдущие команды '''ip link set dev''' не выполнять, а | # Если нет необходимости сразу задействовать интерфейсы '''enp6s0/enp7s0/enp8s0''' в мосте '''docker0''', то можно предыдущие команды '''ip link set dev''' не выполнять, а вместо этого отредактировать/скопировать файл в '''/etc/netplan'''. | ||
# В существующем в '''/etc/netplan''' файле конфигурации по умолчанию '''50-cloud-init.yaml''' следует для интерфейса '''enp5s0''' установить параметр '''dchp4: false''', иначе у интерфейса будет 2 адреса - статический из настроек в '''01-network.yaml''' и динамический, который будет дополнительно прилетать по DHCP и создавать путаницу. | |||
После выполнения настройки интерфейсов следует проверить, что пинг с MCM-NODE1 (10.0.0.1) на MCM-NODE2 (10.0.0.2) в обе стороны проходит успешно, т.е. узлы общаются между собой напрямую через мост docker0. | |||
После выполнения настройки интерфейсов следует проверить, что пинг с MCM-NODE1 (10.0.0.1) на MCM-NODE2 (10.0.0.2) в обе стороны проходит успешно, т.е. узлы общаются между собой напрямую через мост '''docker0'''. | |||
==== Установка компонентов системы МКИ ==== | ==== Установка компонентов системы МКИ ==== | ||
Версия от 05:37, 10 февраля 2025
Система мониторинга качества измерений (МКИ)
Схема тестового стенда

Подключение и настойка оборудования
Подключение компонентов стенда производится в соответствии со схемой подключения. При этом для корректного выполнения дальнейших инструкций подключение устройств к физическим портам и сетевые настройки интерфейсов должны быть выполнены согласно табл. 1:
Таблица 1 - Параметры сетевых настроек устройств стенда
| Хост | Порт | Интерфейс | IP | Подключен к
устройство/порт |
Описание |
|---|---|---|---|---|---|
| MCM-SNIFFER | Eth1 | enp5s0 | 192.168.2.15/24 | L2 Switch | Интерфейс управления для Sniffer |
| MCM-SNIFFER | Eth2 | enp6s0 | - | MCM-NODE1 / Eth2 | Участвует в L2 Bridge |
| MCM-SNIFFER | Eth3 | enp7s0 | - | MCM-NODE2 / Eth2 | Участвует в L2 Bridge |
| MCM-SNIFFER | Eth4 | enp8s0 | - | ZLAN / Eth | Участвует в L2 Bridge |
| MCM-NODE1 | Eth1 | EXTERNAL | 192.168.2.156/24 | L2 Switch | Интерфейс управления для Node1 |
| MCM-NODE1 | Eth2 | INTERNAL | 10.0.0.1/24 | MCM-SNIFFER / Eth2 | Интерфейс обмена данными для Node1 |
| MCM-NODE2 | Eth1 | EXTERNAL | 192.168.2.195/24 | L2 Switch | Интерфейс управления для Node2 |
| MCM-NODE2 | Eth2 | INTERNAL | 10.0.0.2/24 | MCM-SNIFFER / Eth3 | Интерфейс обмена данными для Node2 |
| ZLAN | Eth | - | - | MCM-SNIFFER / Eth4 | Интерфейс обмена данными для ZLAN |
| ZLAN | RS-485 #1 | ZLDEV0001 | 10.0.0.241/24 | Подключение датчика с MODBUS-адресом 5 | |
| ZLAN | RS-485 #2 | ZLDEV0002 | 10.0.0.242/24 | Подключение датчика с MODBUS-адресом 6 | |
| ZLAN | RS-485 #3 | ZLDEV0003 | 10.0.0.243/24 | Подключение датчика с MODBUS-адресом 7 |
Развертывание системы
Установка базовых систем
Установка ОС Windows на компьютерах MCM-NODE1 и MCM-NODE2 производится обычным образом, при этом соответствующим сетевым интерфейсам должны быть присвоены адреса согласно данным табл. 1, также для совместимости должны быть указаны следующие параметры настройки системы:
| Параметр | Значение |
|---|---|
| Имя компьютера | MCM-NODE1/MCM-NODE2 |
| Имя пользователя c правами локального администратора | entcor |
| Пароль | 1 |
Установка базовой системы Ubuntu 22.0x Server на компьютер MCM-SNIFFER производится обычным образом в режиме инсталляции по умолчанию, при этом при выборе параметров установки необходимо включить установку сервера OpenSSH, а также для совместимости следует указать следующие значения прочих параметров:
| Параметр | Значение |
|---|---|
| Имя компьютера | MCM-SNIFFER |
| Имя пользователя c правами root | entcor |
| Пароль | ng3-dcc20 |
После установки системы необходимо установить обновления:
sudo apt full-upgrade
а также проверить доступ к серверу по SSH с компьютера администратора:
ssh entcor@192.168.2.23 (текущий адрес сервера MCM-SNIFFER)
Установка сертификата Entcor
С компьютера администратора следует скопировать файл сертификата entcor.crt на узел MCM-SNIFFER по следующему пути (необходимо использовать фактический IP-адрес сервера MCM-SNIFFER):
scp entcor.crt entcor@192.168.2.23:/home/entcor
Затем на компьютере MCM-SNIFFER следует перенести сертификат в необходимый каталог и выполнить его обновление:
sudo mv entcor.crt /usr/local/share/ca-certificates
sudo update-ca-certificates
Примечание: после обновления сертификатов необходимо выполнить перезагрузку компьютера MCM-SNIFFER.
Установка Docker
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Ссылка на руководство: https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository
Подключение интерфейсов к L2 Bridge для Docker
Предварительно следует запустить постоянный пинг (с параметром -t) с MCM-NODE1 (10.0.0.1) на MCM-NODE2 (10.0.0.2) и наоборот, убедиться в том, что узлы недоступны друг для друга.
Далее необходимо выполнить подключение внутренних интерфейсов обмена данными к мосту docker0:
sudo ip link set dev enp6s0 master docker0
sudo ip link set dev enp7s0 master docker0
sudo ip link set dev enp8s0 master docker0
sudo ip link set dev docker0 up
ip link show
Ссылка на руководство: https://chrisjhart.com/Bridge-Network-Interfaces-on-Ubuntu-22.04/ Для сохранения настроек моста docker0 после перезагрузки сервера необходимо в каталоге /etc/netplan создать файл с расширением .yaml (например, 01-network.yaml) со следующим содержимым:
network:
version: 2
ethernets:
enp5s0:
dhcp4: false
addresses:
- 192.168.2.15/24
routes:
- to: default
via: 192.168.2.254
nameservers:
addresses: [192.168.2.60, 176.114.16.33]
enp6s0:
dhcp4: false
enp7s0:
dhcp4: false
enp8s0:
dhcp4: false
bridges:
docker0:
interfaces: [enp6s0, enp7s0, enp8s0]
Примечания:
- Для интерфейса enp5s0 вместо 192.168.2.15/24 следует указать нужный статический адрес сервера, также при необходимости следует указать фактически используемые адреса шлюза и DNS (в via и nameservers соответственно).
- Для удобства проще скопировать готовый файл с компьютера администратора и положить его в /etc/netplan .
- Если нет необходимости сразу задействовать интерфейсы enp6s0/enp7s0/enp8s0 в мосте docker0, то можно предыдущие команды ip link set dev не выполнять, а вместо этого отредактировать/скопировать файл в /etc/netplan.
- В существующем в /etc/netplan файле конфигурации по умолчанию 50-cloud-init.yaml следует для интерфейса enp5s0 установить параметр dchp4: false, иначе у интерфейса будет 2 адреса - статический из настроек в 01-network.yaml и динамический, который будет дополнительно прилетать по DHCP и создавать путаницу.
После выполнения настройки интерфейсов следует проверить, что пинг с MCM-NODE1 (10.0.0.1) на MCM-NODE2 (10.0.0.2) в обе стороны проходит успешно, т.е. узлы общаются между собой напрямую через мост docker0.
Установка компонентов системы МКИ
Получение последней версии инсталляционного пакета производится с FTP-сервера Jenkins (192.168.2.49). Для этого необходимо подключиться к нему с узла MCM-SNIFFER по FTP, используя обычную пару логин-пароль и выкачать оттуда файлы install.sh и latest.tar.gz.
Развертывание контейнеров производится запуском скрипта install.sh.
Примечание: перед запуском необходимо установить для скрипта install.sh права на выполнение командой chmod:
chmod +x install.sh
Запуск компонентов системы МКИ
После установки компонентов МКИ можно выполнить их запуск посредством скрипта enode.sh, расположенного в каталоге /opt/e-node/deploy.
Примечание: для нормальной работы стека common необходимо предварительно авторизоваться под нужной учетной записью в docker-репозитории Harbor:
docker login registry.entcor
Конфигурирование выполняется посредством редактирования файла .env, в котором следует установить следующие параметры:
MONITOR_DATA_IF = <имя интерфейса на узле MCM-SNIFFER, на котором выполняется прослушка, например, eno1>
MODE = enode
Примечание: вообще-то для работы МКИ параметр MODE должен иметь значение asutp, но работает пока только вот так.
Непосредственно запуск компонентов системы МКИ осуществляется из каталога /opt/e-node/deploy следующей командой:
enode <имя стека> start
Примечание: названия нужных стеков можно посмотреть в каталоге stacks (имена стеков соответствуют именам подкаталогов). Как минимум должны быть запущены следующие стеки:
enode common start
enode asutp start
enode ha-server start
enode analytic start
Проверка запуска сервисов производится обычным образом с помощью команды:
docker ps
Проверка информационного обмена по протоколу МЭК-60870-5-104
Проверка информационного обмена по протоколу МЭК-60870-5-104 производится между узлами стенда MCM-NODE1 и MCM-NODE2 посредством программного обеспечения IEC Test, которое эмулирует передачу пакетов протокола МЭК-60870-5-104 поверх соединения Ethernet.
Для проверки работы протокола МЭК-60870-5-104 во внутренней сети обмена на одном из узлов ПО IEC Test запускается в режиме сервера с показанными ниже настройками:
TCP/IP Link Role - Server
IP Address - адрес внутреннего интерфейса для информационного обмена (в данном примере - 10.0.0.2)
Далее устанавливается канал обмена последовательным нажатием кнопок "Build String" и "Open Channel" (индикатор "1 channel" должен стать темно-зеленым).

Соответственно, на другом узле ПО IEC Test запускается в режиме клиента с показанными ниже настройками:
TCP/IP Link Role - Client
IP Address - адрес сервера, находящегося во внутренней сети для информационного обмена (в данном примере - 10.0.0.2).
Далее устанавливается канал обмена последовательным нажатием кнопок "Build String" и "Open Channel" (индикатор "1 channel" должен стать темно-зеленым).
Для начала непосредственно информационного взаимодействия следует послать с клиента на сервер специальную команду посредством нажатия кнопки "Start DT" (индикатор "1 channel" должен стать светло-зеленым как показано на рисунке ниже). С этого момента канал обмена установлен и активирован, а между экземплярами ПО IEC Test могут передаваться пакеты протокола МЭК-60870-5-104.

Для создания трафика по протоколу МЭК-60870-5-104 между узлами MCM-NODE1 и MCM-NODE2 следует использовать специальный макрос, имитирующий последовательную передачу данных протокола МЭК-60870-5-104 между узлами. Для этого необходимо на любом из узлов в ПО IEC Test перейти во вкладку "870 Commander", нажатием кнопки "Загрузить" загрузить макрос "ДУ по циклу 5 сек.rtm" и выполнить его нажатием кнопки "Выполнить":

В случае правильно настроенных узлов стенда и экземпляров ПО IEC Test на принимающем узле во вкладке "870 Commander" в соответствующем окне можно будет увидеть информацию о принятых сообщениях, отправленных макросом с передающего узла, что свидетельствует о состоявшемся информационном обмене по протоколу МЭК-60870-5-104 между узлами.
Примечание: в случае, если система МКИ выполняет прослушивание на одном из интерфейсов, входящих во внутреннюю сеть информационного обмена, а также при правильном конфигурировании компонента Grafana, при подключении браузером по адресу сервера MCM-SNIFFER (http://192.168.2.142) в соответствующих дашбордах должна появиться информация о перехваченных пакетах протокола МЭК-60870-5-104, создающих описанный выше трафик.