МКИ: различия между версиями
Dima (обсуждение | вклад) |
Dima (обсуждение | вклад) |
||
| Строка 176: | Строка 176: | ||
# Как показывает практика, существующий в '''/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''' с настройками интерфейсов. | # Как показывает практика, существующий в '''/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''' с настройками интерфейсов. | ||
# Для применения настроек интерфейсов и сохранения настроек после перезагрузки сервера рекомендуется выполнение '''netplan try''' . Это позволит проверить конфигурацию перед применением и отловить возможные ошибки. Также рекомендуется в обязательном порядке выполнить контрольную перезагрузку сервера, чтобы убедиться, что настройки после нее восстанавливаются правильно. | # Для применения настроек интерфейсов и сохранения настроек после перезагрузки сервера рекомендуется выполнение '''netplan try''' . Это позволит проверить конфигурацию перед применением и отловить возможные ошибки. Также рекомендуется в обязательном порядке выполнить контрольную перезагрузку сервера, чтобы убедиться, что настройки после нее восстанавливаются правильно. | ||
# Для проверки работоспособности моста '''docker0''' перед настройкой интерфейсов следует запустить постоянный пинг (с параметром '''-t''') с '''MCM-NODE1''' (10.0.0.1) на '''MCM-NODE2''' (10.0.0.2) и наоборот и убедиться в том, что узлы недоступны друг для друга. После настройки конфигурации интерфейсов и выполнения '''netplan try''' следует проверить, что пинг с MCM-NODE1 (10.0.0.1) на MCM-NODE2 (10.0.0.2) в обе стороны проходит успешно, т.е. узлы общаются между собой напрямую через мост '''docker0'''. | |||
==== Установка сертификата Entcor ==== | ==== Установка сертификата Entcor ==== | ||
С компьютера администратора следует скопировать файл сертификата '''entcor.crt''' на узел '''MCM-SNIFFER''' по следующему пути (необходимо использовать фактический IP-адрес сервера MCM-SNIFFER):<syntaxhighlight lang="sh"> | С компьютера администратора следует скопировать файл сертификата '''entcor.crt''' на узел '''MCM-SNIFFER''' по следующему пути (необходимо использовать фактический IP-адрес сервера MCM-SNIFFER):<syntaxhighlight lang="sh"> | ||
| Строка 204: | Строка 205: | ||
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin | sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin | ||
</syntaxhighlight>Ссылка на руководство: https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository | </syntaxhighlight>Ссылка на руководство: https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository | ||
==== Установка компонентов системы МКИ ==== | ==== Установка компонентов системы МКИ ==== | ||
Версия от 04:14, 28 марта 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 Server 24.0x на компьютер MCM-SNIFFER производится обычным образом в режиме инсталляции по умолчанию, при этом при выборе параметров установки необходимо включить установку сервера OpenSSH, а также для совместимости следует указать следующие значения прочих параметров:
| Параметр | Значение |
|---|---|
| Имя компьютера | 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]
Примечания:
- Для интерфейса enp5s0 вместо 192.168.2.15/24 следует указать нужный статический адрес сервера, также при необходимости следует указать фактически используемые адреса шлюза и DNS (в via и nameservers соответственно).
- В файле конфигурации заранее определяется мост docker0, который будет использоваться Docker'ом после его установки. Таким образом, интерфейсы enp6s0/enp7s0/enp8s0 заранее подключаются к мосту docker0, и, соответственно, в будущем будут доступны из Docker.
- Для удобства проще скопировать готовый файл 01-network.yaml с компьютера администратора и положить его в /etc/netplan .
- Как показывает практика, существующий в /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 с настройками интерфейсов.
- Для применения настроек интерфейсов и сохранения настроек после перезагрузки сервера рекомендуется выполнение netplan try . Это позволит проверить конфигурацию перед применением и отловить возможные ошибки. Также рекомендуется в обязательном порядке выполнить контрольную перезагрузку сервера, чтобы убедиться, что настройки после нее восстанавливаются правильно.
- Для проверки работоспособности моста docker0 перед настройкой интерфейсов следует запустить постоянный пинг (с параметром -t) с MCM-NODE1 (10.0.0.1) на MCM-NODE2 (10.0.0.2) и наоборот и убедиться в том, что узлы недоступны друг для друга. После настройки конфигурации интерфейсов и выполнения netplan try следует проверить, что пинг с MCM-NODE1 (10.0.0.1) на MCM-NODE2 (10.0.0.2) в обе стороны проходит успешно, т.е. узлы общаются между собой напрямую через мост docker0.
Установка сертификата 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
Установка компонентов системы МКИ
Получение последней версии инсталляционного пакета производится из 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 запускается в режиме клиента с показанными ниже настройками:
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, создающих описанный выше трафик.