МКИ

Материал из EWiki
Перейти к навигации Перейти к поиску

Система мониторинга качества измерений (МКИ)

Схема тестового стенда

Стенд для МКИ (декабрь 2024)
Стенд для МКИ (декабрь 2024)

Подключение и настойка оборудования

Подключение компонентов стенда производится в соответствии со схемой подключения. При этом для корректного выполнения дальнейших инструкций подключение устройств к физическим портам и сетевые настройки интерфейсов должны быть выполнены согласно табл. 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, также для совместимости должны быть указаны следующие параметры настройки системы:

Таблица 2 - Параметры настройки узлов MCM-NODE1 и MCM-NODE2
Параметр Значение
Имя компьютера MCM-NODE1/MCM-NODE2
Имя пользователя c правами локального администратора entcor
Пароль 1

Установка базовой системы Ubuntu Server 24.0x на компьютер MCM-SNIFFER производится обычным образом в режиме инсталляции по умолчанию, при этом при выборе параметров установки необходимо включить установку сервера OpenSSH, а также для совместимости следует указать следующие значения прочих параметров:

Таблица 3 - Параметры настройки узла MCM-SNIFFER
Параметр Значение
Имя компьютера MCM-SNIFFER
Имя пользователя c правами root entcor
Пароль ng3-dcc20

После установки системы необходимо установить обновления:

sudo apt full-upgrade

а также проверить доступ к серверу по SSH с компьютера администратора:

ssh entcor@192.168.2.15 (текущий адрес сервера MCM-SNIFFER)

Примечание: для удобства работы с файлами настоятельно рекомендуется также первым делом вкатить Midnight Commander:

sudo apt install mc

Также в дальнейшем целесообразно запускать Midnight Commander через sudo:

sudo mc

Это позволит, во-первых, невозбранно редактировать все необходимые файлы и, во-вторых, при скрытии окон Midnight Commander выполнять из-под него с командной строки команды в режиме root без необходимости париться с sudo для каждой отдельной команды.

Настройка сетевых интерфейсов

Для корректной работы сетевых интерфейсов и сохранения их параметров после перезагрузки сервера необходимо в каталоге /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]

Примечания:

  1. Для интерфейса enp5s0 вместо 192.168.2.15/24 следует указать нужный статический адрес сервера, также при необходимости следует указать фактически используемые адреса шлюза и DNS (в via и nameservers соответственно).
  2. В файле конфигурации заранее определяется мост docker0, который будет использоваться Docker'ом после его установки. Таким образом, интерфейсы enp6s0/enp7s0/enp8s0 заранее подключаются к мосту docker0, и, соответственно, в будущем будут доступны из Docker.
  3. Для удобства проще скопировать готовый файл 01-network.yaml с компьютера администратора и положить его в /etc/netplan .
  4. Как показывает практика, существующий в /etc/netplan файл конфигурации по умолчанию 50-cloud-init.yaml лучше переименовать во что-то типа 50-cloud-init.yaml.bak, иначе у интерфейса enp5s0 будет образовываться 2 адреса - статический из настроек в 01-network.yaml и динамический, который будет дополнительно прилетать по DHCP и создавать путаницу. Вроде бы, должно лечиться установкой в файле 50-cloud-init.yaml для интерфейса enp5s0 параметра dchp4: false, но по факту не помогает, поэтому лучше от греха подальше во избежание конфликтов держать в /etc/netplan только один файл 01-network.yaml с настройками интерфейсов.
  5. Для применения настроек интерфейсов и сохранения настроек после перезагрузки сервера рекомендуется выполнение netplan try . Это позволит проверить конфигурацию перед применением и отловить возможные ошибки. Также рекомендуется в обязательном порядке выполнить контрольную перезагрузку сервера, чтобы убедиться, что настройки после нее восстанавливаются правильно.

Установка сертификата 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]

Примечания:

  1. Для интерфейса enp5s0 вместо 192.168.2.15/24 следует указать нужный статический адрес сервера, также при необходимости следует указать фактически используемые адреса шлюза и DNS (в via и nameservers соответственно).
  2. Для удобства проще скопировать готовый файл с компьютера администратора и положить его в /etc/netplan .
  3. Если нет необходимости сразу задействовать интерфейсы enp6s0/enp7s0/enp8s0 в мосте docker0, то можно предыдущие команды ip link set dev не выполнять, а вместо этого отредактировать/скопировать файл в /etc/netplan.
  4. В существующем в /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.

Установка компонентов системы МКИ

Получение последней версии инсталляционного пакета производится из Git-репозитория e-deploy, находящегося по адресу http://192.168.2.61, (нужно будет ввести соответствующие логин-пароль для доступа к репозиторию, а также выполнить переключение на ветку develop):

git clone http://192.168.2.61/e-node/e-deploy.git
git switch develop

Далее следует авторизоваться под нужной учетной записью в Docker-репозитории Harbor:

docker login registry.entcor

после чего нужно перейти в каталог e-deploy (в том каталоге, где выполнялся git clone) и выполнить следующую команду:

./enode.sh init

Далее в том же каталоге следует создать/отредактировать файла .env, в котором следует установить следующие параметры:

MONITOR_DATA_IF = <имя интерфейса на узле MCM-SNIFFER, на котором выполняется прослушка, например, enp7s0>

MODE = enode

Примечание: вообще-то для работы МКИ параметр MODE должен иметь значение asutp, но работает пока только вот так.

Далее требуется выполнить загрузку и обновление контейнеров посредством запуска скрипта enode с параметром update:

enode analytic update
enode common update
enode asutp update

Запуск компонентов системы МКИ

После установки компонентов МКИ можно выполнить их запуск следующей командой:

enode <имя стека> start

Примечание: названия нужных стеков можно посмотреть в каталоге stacks в e-deploy (имена стеков соответствуют именам подкаталогов). Как минимум должны быть запущены следующие стеки:

enode analytic start
enode common start
enode asutp start

Примечание: стек analytic рекомендуется запускать перед стеком common из-за каких-то особенностей функционирования:


Проверка запуска сервисов производится обычным образом с помощью команды:

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 для организации обмена между узлами стенда MCM-NODE1 и MCM-NODE2 по протоколу МЭК-60870-5-104 (серверная часть)

Соответственно, на другом узле ПО 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.

Настройки программы IEC Test для организации обмена между узлами стенда MCM-NODE1 и MCM-NODE2 по протоколу МЭК-60870-5-104 (клиентская часть)

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

Выполнение макроса в ПО IEC Test для создания трафика по протоколу МЭК-60870-5-104
Выполнение макроса в ПО IEC Test для создания трафика по протоколу МЭК-60870-5-104

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

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