Kaspersky IoT Secure Gateway 1000 SDK

Быстрый старт. Начальное знакомство с SDK за один час

23 января 2025

ID 293845

Мы рекомендуем последовательно выполнить приведенные в этом разделе инструкции для быстрого знакомства с основами использования Kaspersky IoT Secure Gateway 1000 SDK. Вам потребуется компьютер с установленной операционной системой Ubuntu версии 20.04 или новее, редактор кода Visual Studio Code и приблизительно один час времени.

  1. Установка SDK и образа системы Kaspersky IoT Secure Gateway 1000

    Вы узнаете, как установить Kaspersky IoT Secure Gateway 1000 SDK и образ системы Kaspersky IoT Secure Gateway 1000, как настроить окружение для удобного использования инструментов из состава SDK и как проверить успешность установки.

  2. Настройка сети для работы с эмулятором

    В составе SDK есть основанный на QEMU эмулятор, позволяющий запускать и отлаживать программы в виртуальном окружении, без необходимости использования физического устройства Kraftway Рубеж-Н с системой Kaspersky IoT Secure Gateway 1000. Так как система Kaspersky IoT Secure Gateway 1000 устанавливается на устройство с несколькими сетевыми интерфейсами, то для полноценной эмуляции вам потребуется внести изменения в сетевые настройки вашей операционной системы – добавить виртуальные сетевые интерфейсы и настроить маршрутизацию.

  3. Запуск образа системы Kaspersky IoT Secure Gateway 1000 в эмуляторе

    Вы запустите систему Kaspersky IoT Secure Gateway 1000 в эмуляторе и проверите доступность системы в виртуальной сети.

  4. Подключение к веб-интерфейсу системы, запущенной в эмуляторе

    Вы настроите защищенный доступ к веб-интерфейсу системы Kaspersky IoT Secure Gateway 1000, работающей в эмуляторе, и подключитесь к веб-интерфейсу системы из браузера.

  5. Создание и запуск программы Hello World

    Вы создадите программу Hello World, которая выводит в журнал текст "HELLO WORLD", соберете и установите ее в системе Kaspersky IoT Secure Gateway 1000, работающей в эмуляторе. В веб-интерфейсе системы вы сможете запустить программу и затем получить журнал программы.

  6. Запуск примеров Message Sender и Message Receiver

    В состав SDK входят исходные коды демонстрационных программ (примеров). Вы соберете и запустите примеры, демонстрирующие передачу данных из внутренней сети во внешнюю. Программа Message Sender будет получать данные из эмулируемой внутренней сети (которые вы отправите с помощью утилиты ncat) и передавать эти данные программе Message Receiver (используя библиотеку для обмена сообщениями между программами в KasperskyOS). Программа Message Receiver отправит полученные данные в эмулируемую внешнюю сеть, и вы сможете принять их утилитой ncat.

    Помимо процедур сборки и установки программ (с которыми вы знакомитесь при создании программы Hello World), вы ознакомитесь с таким процедурами:

    • настройка автозапуска программ;
    • настройка маршрутизации данных между программами;
    • запуск готовых наборов команд KDS для установки системных параметров, параметров программ и перезагрузки системы.

Практика 1. Установка SDK и образа системы Kaspersky IoT Secure Gateway 1000

Чтобы выполнить и проверить установку:

  1. Авторизуетесь на портале Kaspersky Appicenter for Developers и в разделе Средства разработки скачайте:
    • Kaspersky IoT Secure Gateway 1000 SDK;
    • Kaspersky IoT Secure Gateway 1000 Development Firmware.

    Вы получите архивы kisg_sdk_3.1.0.130.tgz и kisg_developer_software_3.1.0.130.tgz.

  2. Перейдите в директорию с полученными архивами (например, ~/Загрузки), извлеките из архивов deb-пакеты с SDK и образом однонаправленного шлюза и запустите установку пакетов:

    cd ~/Загрузки

    tar -xzf kisg_sdk_3.1.0.130.tgz KasperskyOS-IoT-Secure-Gateway-SDK_3.1.0.130_amd64.deb

    tar -xzf kisg_developer_software_3.1.0.130.tgz kisg_developer_software_3.1.0.130/kasperskyos-sdk-kisg-qemu-diode-dev_3.1.0.130_amd64.deb --strip-components=1

    sudo apt install ./KasperskyOS-SDK-KISG-Platform-3.1.0.130_amd64.deb ./kasperskyos-sdk-kisg-qemu-diode-dev_3.1.0.130_amd64.deb

    SDK устанавливается в директорию /opt/KasperskyOS-SDK-KISG-Platform-3.1.0.130.

    Обратите внимание на следующие поддиректории в директории установки SDK:

    • toolchain/bin – инструменты SDK.
    • share/firmwares – образы системы.
    • share/tls – файлы сертификатов для защищенного подключения к системе.
    • examples/secure_gateway/sdkl3 – примеры исходного кода программ, иллюстрирующих сценарии использования SDK.

    Здесь мы перечислили только те директории, которые вы будете непосредственно использовать при выполнении инструкций в этом разделе справки.

  3. Добавьте путь до инструментов SDK в переменную окружения $PATH:

    export PATH=$PATH:/opt/KasperskyOS-SDK-KISG-Platform-3.1.0.130/toolchain/bin

    Вы можете дописать эту команду в скрипт, выполняющийся при инициализации вашей командной оболочки (например, ~/.bashrc). Чтобы этот скрипт выполнился и значение переменной $PATH обновилось, потребуется перезапуск командной оболочки.

    Таким образом, вы сможете запускать инструменты SDK, не указывая полный путь до них. Основной инструмент SDK, который вам потребуется – kosctl (KasperskyOS command line tool).

  4. Проверьте, что инструмент kosctl доступен, запустив его без параметров:

    kosctl

    kosctl отобразит в консоли собственную встроенную справку со списком доступных команд и групп команд. Вы можете получить дополнительную справочную информацию, запуская команды из списка (например kosctl emu).

  5. Проверьте, какие образы устройства Kaspersky IoT Secure Gateway 1000 у вас установлены:

    kosctl emu list-firmware

    В полученном списке должен отображаться образ diode-dev (однонаправленный шлюз):

    Using SDK '/opt/KasperskyOS-SDK-KISG-Platform-3.1.0.130'

    * diode-dev

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

Выполнив пять шагов инструкции выше, вы научились устанавливать Kaspersky IoT Secure Gateway 1000 SDK, запускать инструмент kosctl, читать встроенную справку kosctl и получать список установленных образов системы Kaspersky IoT Secure Gateway 1000 для запуска в эмуляторе.

Практика 2. Настройка сети для работы с эмулятором

Чтобы настроить виртуальные сетевые интерфейсы для сетевого взаимодействия с эмулятором:

  1. Создайте файл ~/emu_net_setup.sh, сделайте файл исполняемым и откройте его в редакторе Visual Studio Code:

    touch ~/emu_net_setup.sh

    chmod +x ~/emu_net_setup.sh

    code ~/emu_net_setup.sh

  2. Добавьте в файл emu_net_setup.sh следующие команды и сохраните изменения:

    emu_net_setup.sh

    #!/bin/bash

    set -e

    ip tuntap add tap0 mode tap user ${SUDO_USER:-$USER}

    ip tuntap add tap1 mode tap user ${SUDO_USER:-$USER}

    ip address add 192.168.2.1/24 dev tap0

    ip address add 192.168.1.254/24 dev tap1

    ip link set up dev tap0

    ip link set up dev tap1

    echo 1 > /proc/sys/net/ipv4/ip_forward

    iptables -t nat -A POSTROUTING -o <network_interface> -j MASQUERADE

    iptables -I FORWARD 1 -i tap0 -j ACCEPT

    iptables -I FORWARD 1 -o tap0 -m state --state RELATED,ESTABLISHED -j ACCEPT

    iptables -I FORWARD 1 -i tap1 -j ACCEPT

    iptables -I FORWARD 1 -o tap1 -m state --state RELATED,ESTABLISHED -j ACCEPT

    dnsmasq --interface=tap0 --dhcp-range=192.168.2.100,192.168.2.110,12h --port=0

    Вместо <network_interface> подставьте имя физического сетевого интерфейса вашего компьютера, например eth0 (проверить имена имеющихся интерфейсов можно командой ip addr).

    Команды ip tuntap add создают виртуальные сетевые интерфейсы tap0 и tap1 для подключения к эмулируемым сетевым интерфейсам Kaspersky IoT Secure Gateway 1000 (внешняя сеть подключается к tap0, а внутренняя – к tap1). Далее, настраивается маршрутизация с помощью iptables. Так как Kaspersky IoT Secure Gateway 1000 по умолчанию получает параметры внешней сети по DHCP, в последней строке скрипта запускается dnsmasq в режиме DHCP-сервера для интерфейса tap0. Параметр --port=0 отключает функциональность DNS-сервера у dnsmasq.

  3. Запустите получившийся скрипт:

    sudo ~/emu_net_setup.sh

    Созданная этим скриптом сетевая конфигурация (виртуальные интерфейсы tap0/tap1, правила маршрутизации и DHCP-сервер для tap0) действует до перезагрузки компьютера. Чтобы восстановить конфигурацию сети после перезагрузки, запустите скрипт emu_net_setup.sh еще раз.

  4. Убедитесь, что виртуальные сетевые интерфейсы добавлены:

    ip addr

    В списке сетевых интерфейсов должны присутствовать tap0 и tap1 с указанными в скрипте параметрами:

    ...

    3: tap0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000

    link/ether 26:80:f6:e4:a6:3d brd ff:ff:ff:ff:ff:ff

    inet 192.168.2.1/24 scope global tap0

    valid_lft forever preferred_lft forever

    inet6 fe80::2480:f6ff:fee4:a63d/64 scope link

    valid_lft forever preferred_lft forever

    4: tap1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000

    link/ether d6:cc:e5:fa:e1:7c brd ff:ff:ff:ff:ff:ff

    inet 192.168.1.254/24 scope global tap1

    valid_lft forever preferred_lft forever

    inet6 fe80::d4cc:e5ff:fefa:e17c/64 scope link

    valid_lft forever preferred_lft forever

Выполнив четыре шага инструкции выше, вы научились создавать временную (действующую до перезагрузки) конфигурацию сетевых интерфейсов, предназначенных для взаимодействия с системой Kaspersky IoT Secure Gateway 1000, работающей в эмуляторе.

Практика 3. Запуск образа Kaspersky IoT Secure Gateway 1000 в эмуляторе

Чтобы запустить образ системы Kaspersky IoT Secure Gateway 1000 в эмуляторе и проверить работоспособность запущенной системы:

  1. Инициализируйте эмулятор, используя ранее установленный образ diode-dev:

    kosctl emu init diode-dev

    При этом, kosctl создает в текущей директории поддиректорию kos-qemu-image и копирует в нее все файлы, нужные для запуска образа diode-dev:

    kos-qemu-image/

    ├── assets.qcow2

    ├── assets.yaml

    ├── kos-qemu-image.romfs

    ├── kos-romfsloader-qemu-image

    ├── kos-romfsloader-qemu-image.qemu.txt

    ├── romfs0.sig

    └── uboot.env

    Файл kos-romfsloader-qemu-image.qemu.txt содержит ключи для запуска эмулятора. В частности, вы можете обратить внимание на ключи -netdev для настройки виртуальных сетевых интерфейсов, соответствующих интерфейсам tap0 и tap1.

  2. Запустите эмулятор:

    kosctl emu start

    В окне терминала начнет отображаться процесс загрузки KasperskyOS (ниже показан небольшой фрагмент):

    Booting from ROM..[BOOT ] Starting...

    [BOOT ] Preparing memory...

    (used)

    (used)

    [BOOT ] Checking memory size...

    [BOOT ] Available RAM: 8190 MB.

    [BOOT ] Looking up ACPI tables...

    [BOOT ] Preparing loader info...

    [BOOT ] Preparing ROMFS...

    [BOOT ] Preparing KasperskyOS kernel...

    [BOOT ] Preparing trampoline to kernel...

    [BOOT ] Preparing page table...

    [BOOT ] Freeing loader memory...

    [BOOT ] Dump physical memory map

    [BOOT ] Starting KasperskyOS...

    Loading:

    _ __ _ ___ ____

    | |/ /__ _ ___ _ __ ___ _ __ ___| | ___ _ / _ \/ ___|

    | ' // _` / __| '_ \ / _ \ '__/ __| |/ / | | | | | \___ \

    | . \ (_| \__ \ |_) | __/ | \__ \ <| |_| | |_| |___) |

    |_|\_\__,_|___/ .__/ \___|_| |___/_|\_\\__, |\___/|____/

    |_| |___/

    Built on: Jul 31 2024 00:22:19

    Board: RUBEZH_N

    SoC: atom_x5_e3940

    ARCH: x86

    Git hash: autosar-developer-x86-64-qemu-v4.2.0.4-1788-gad98462bd01dec21e647e9db186723c3ce9f23de

  3. Пока Kaspersky IoT Secure Gateway 1000 загружается в эмуляторе, вы можете проверить состояние эмулятора, перейдя в новое окно или вкладку терминала:
    1. Получите список эмуляторов от kosctl:

      kosctl emu list

      Вы можете работать сразу с несколькими эмуляторами, поэтому результат отображается в виде таблицы:

      Found 1 emulator:

      ╭──────────┬───────────────────────────┬────────────┬──────┬───────────────────────┬─────────╮

      │ NAME │ CONNECTIONS │ KDS_PARAMS │ PID │ IMAGE │ RUNNING │

      ├──────────┼───────────────────────────┼────────────┼──────┼───────────────────────┼─────────┤

      │ 8rbd3tbq │ gdb = tcp- │ - │ 9364 │ /home/<username>/kos- │ True │

      │ │ client://127.0.0.1:1024 │ │ │ qemu-image/kos- │ │

      │ │ kds = tcp- │ │ │ romfsloader-qemu-image│ │

      │ │ client://192.168.1.1:25014│ │ │ │ │

      ╰──────────┴───────────────────────────┴────────────┴──────┴───────────────────────┴─────────╯

      Имя эмулятора в колонке NAME присвоено автоматически, но вы можете указывать свое имя при запуске эмулятора, используя параметр -n (это позволяет проще различать эмуляторы, если потребуется работать с несколькими).

      Для запущенного эмулятора, в колонке RUNNING отображается True.

    2. Проверьте состояние сетевых интерфейсов:

      ip addr

      Обратите внимание, что состояние виртуальных интерфейсов tap0 и tap1 изменилось по сравнению с тем, что вы получили на последнем шаге настройки сети:

      ...

      3: tap0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000

      link/ether 36:d4:81:90:36:1f brd ff:ff:ff:ff:ff:ff

      inet 192.168.2.1/24 scope global tap0

      valid_lft forever preferred_lft forever

      inet6 fe80::34d4:81ff:fe90:361f/64 scope link

      valid_lft forever preferred_lft forever

      4: tap1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000

      link/ether 56:77:6c:d5:ad:78 brd ff:ff:ff:ff:ff:ff

      inet 192.168.1.254/24 scope global tap1

      valid_lft forever preferred_lft forever

      inet6 fe80::5477:6cff:fed5:ad78/64 scope link

      valid_lft forever preferred_lft forever

      Теперь состояние tap0 и tap1 изменилось на state UP. Это означает, что сетевые интерфейсы эмулируемого устройства теперь активны.

    3. Попробуйте выполнить ping для адреса эмулируемого устройства.

      ping 192.168.1.1

      Первоначально настроенный статический адрес системы Kaspersky IoT Secure Gateway 1000 – 192.168.1.1. Пока загрузка системы не завершена, от 192.168.1.254 (ранее настроенный адрес интерфейса tap1) могут приходить ошибки Destination Host Unreachable. Но затем, по мере загрузки, появятся успешные ответы от системы Kaspersky IoT Secure Gateway 1000, работающей в эмуляторе и ставшей доступной по адресу 192.168.1.1.

      PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.

      From 192.168.1.254 icmp_seq=1 Destination Host Unreachable

      From 192.168.1.254 icmp_seq=2 Destination Host Unreachable

      From 192.168.1.254 icmp_seq=3 Destination Host Unreachable

      From 192.168.1.254 icmp_seq=4 Destination Host Unreachable

      64 bytes from 192.168.1.1: icmp_seq=5 ttl=255 time=228 ms

      64 bytes from 192.168.1.1: icmp_seq=6 ttl=255 time=0.440 ms

      64 bytes from 192.168.1.1: icmp_seq=7 ttl=255 time=0.465 ms

      64 bytes from 192.168.1.1: icmp_seq=8 ttl=255 time=0.541 ms

Выполнив три шага инструкции выше, вы научились запускать образ системы Kaspersky IoT Secure Gateway 1000 в эмуляторе, а также проверять состояние эмулятора и виртуальной сети.

Не останавливайте запущенный эмулятор, вы будете его использовать в дальнейших инструкциях этого раздела.

Практика 4. Подключение к веб-интерфейсу системы, запущенной в эмуляторе

Чтобы подключиться из браузера к веб-интерфейсу системы, запущенной в эмуляторе:

  1. Импортируйте файл /opt/KasperskyOS-SDK-KISG-Platform-3.1.0.130/share/tls/TlsClientAdmin.p12 в хранилище сертификатов браузера.

    Подключение к веб-интерфейсу системы Kaspersky IoT Secure Gateway 1000 осуществляется по защищенному соединению. Поэтому, прежде чем открывать адрес 192.168.1.1, требуется добавить в браузер сертификат администратора. В Firefox (браузер по-умолчанию в Ubuntu), сертификат добавляется так:

    1. В адресной строке браузера введите about:preferences.
    2. В открывшейся странице с настройками браузера в поле Найти в настройках введите сертификаты.
    3. В результатах поиска нажмите на кнопку Просмотр сертификатов.
    4. В открывшемся окне Управление сертификатами выберите вкладку Ваши сертификаты и нажмите на кнопку Импортировать.
    5. В открывшемся окне Импортируемый файл сертификата перейдите в директорию /opt/KasperskyOS-SDK-KISG-Platform-3.1.0.130/share/tls/ и выберите файл TlsClientAdmin.p12.
    6. В открывшемся окне Требуется пароль введите adminadmin и нажмите на кнопку Войти.
    7. В окне Управление сертификатами нажмите на кнопку OK.

    Окно управления сертификатами в Firefox.

    Подтверждение добавления сертификата

  2. Перезапустите браузер.
  3. Перейдите по ссылке https://192.168.1.1/ (при первом переходе, браузер может запросить подтверждение использования ранее добавленного сертификата).

    Откроется страница входа в Kaspersky IoT Secure Gateway 1000:

    Вход в веб-интерфейс системы Kaspersky IoT Secure Gateway 1000.

    Страница входа в систему

  4. Введите имя пользователя admin, временный пароль adminadmin и нажмите на кнопку Продолжить.

    Откроется окно Изменение учетных данных, так как временный пароль необходимо сразу же заменить на постоянный.

  5. Снова введите временный пароль adminadmin в поле Старый пароль. Введите собственный постоянный пароль в поле Новый пароль, повторите ввод в поле Повторите новый пароль и нажмите Сохранить.

    Откроется веб-интерфейс Kaspersky IoT Secure Gateway 1000:

    Веб-интерфейс системы Kaspersky IoT Secure Gateway 1000.

    Веб-интерфейс Kaspersky IoT Secure Gateway 1000.

    Ознакомьтесь с разделами веб-интерфейса. Например, вы можете:

    • Перейти в раздел Приложения и выбрать вкладку Установленные приложения. Отобразится список установленных приложений, в котором изначально будет только одно приложение Kaspersky Debug Service. Оно позволяет управлять Kaspersky IoT Secure Gateway 1000 с вашего компьютера с помощью kosctl, например, устанавливать и запускать другие приложения. Вы подробнее ознакомитесь с этими возможностями далее.
    • Перейти в раздел Параметры, выбрать вкладку Диагностика и перейти по ссылке на страницу исправления неисправностей. На этой странице вы можете убедиться, что внешний сетевой интерфейс en0 автоматически получил IP-адрес из диапазона 192.168.2.100–192.168.2.110 (указанного вами в параметрах dnsmasq при настройке сети). Также на этой странице вы можете использовать утилиту ping для проверки доступности адресов интерфейсов tap0 и tap1 (192.168.2.1 и 192.168.1.254, согласно скрипту настройки сети).

Выполнив пять шагов инструкции выше, вы научились настраивать защищенное соединение и подключаться к веб-интерфейсу системы Kaspersky IoT Secure Gateway 1000, работающей в эмуляторе.

Не закрывайте вкладку браузера с веб-интерфейсом Kaspersky IoT Secure Gateway 1000. Вы будете использовать веб-интерфейс в дальнейших инструкциях этого раздела.

Практика 5. Создание и запуск программы Hello World

Чтобы собрать и запустить программу Hello World, которая выводит текст в журнал:

  1. Создайте новый проект по шаблону

    kosctl new -t helloworld my-hello app_id=my.hello app_name="My Hello World"

    Эта команда создает в текущей директории поддиректорию my-hello с проектом my-hello по встроенному в SDK шаблону helloworld. Параметры шаблона app_id и app_name указывают идентификатор и имя создаваемой программы.

  2. Ознакомьтесь с исходным кодом созданной программы (например, открыв его в редакторе Visual Studio Code).

    code my-hello

    Загрузка журнала программы из веб-интерфейса Kaspersky IoT Secure Gateway 1000.

    Новая программа в редакторе Visual Studio Code

    Файлы в директории my-hello:

    my-hello/

    ├── resources

    │   └── manifest.json.in # Манифест программы.

    ├── src

    │   ├── my_hello_world.cpp # Точка входа - функция main().

    │ │ # Выполняет запись в журнал.

    │ │

    │   └── my_hello_world.h # Содержит определение константы с

    │ # с текстом для записи в журнал.

    ├── test

    │ ├── CMakeLists.txt # CMake-команды сборки тестов.

    │ └── src

    │ └── my_hello_world_test.cpp # Тесты.

    │

    ├── CMakeLists.txt # CMake-команды сборки программы.

    │

    └── kos-project.yml # Параметры проекта.

  3. Перейдите в директорию с исходным кодом программы и выполните сборку:

    cd my-hello

    kosctl build

    Программы для Kaspersky IoT Secure Gateway 1000 поставляются в виде KPA-пакетов – архивов, содержащих бинарные файлы, ресурсные файлы и прочие данные, необходимые для установки и запуска программы. При успешном выполнении сборки, в директории my-hello создается поддиректория .build/x86_64-pc-kos-debug, в которую помещается файл KPA-пакета my_hello_world.kpac и другие артефакты сборки программы Hello World.

  4. Установите вашу программу:

    kosctl app install .build/x86_64-pc-kos-debug/my_hello_world.kpac

    Если образ Kaspersky IoT Secure Gateway 1000 запущен в эмуляторе, программа будет установлена.

  5. Проверьте, что ваша программа успешно установлена и запустите ее:
    1. Перейдите в окно браузера с веб-интерфейсом Kaspersky IoT Secure Gateway 1000.
    2. Перейдите в раздел Приложения и выберите вкладку Установленные приложения.
    3. Нажмите на кнопку Запустить в строке с названием программы My Hello World.

    Запуск программы из веб-интерфейса Kaspersky IoT Secure Gateway 1000.

    Программа My Hello World в списке установленных приложений.

    Так как программа только выводит текст в журнал и сразу завершает работу, приложение будет в состоянии Остановлено сразу после запуска.

    Вы также можете:

    • получить список установленных программ с помощью команды kosctl app list (отображает список идентификаторов установленных программ);
    • запустить программу с помощью команды kosctl app start my.hello (запускает программу с указанным идентификатором my.hello).
  6. Проверьте, что программа успешно вывела заданный текст в журнал:
    1. В разделе Приложения выберите вкладку Журнал приложений.
    2. Нажмите на ссылку Скачать в строке с названием программы My Hello World.
    3. В списке загрузок браузера найдите архив log_files_My Hello World.tar.gz и распакуйте его.
    4. Просмотрите содержимое файла my.hello.log из загруженного архива.

    Загрузка журнала программы из веб-интерфейса Kaspersky IoT Secure Gateway 1000.

    Получение журнала программы.

    Вы также можете найти сообщение программы в окне терминала, в котором запущен эмулятор. Сообщение выполнено псевдографикой, чтобы его было проще обнаружить среди других сообщений.

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

Практика 6. Запуск примеров Message Sender и Message Receiver

Примеры Message Sender и Message Receiver демонстрируют следующий сценарий передачи данных:

Диаграмма для Message Sender / Message Receiver.

Сценарий передачи данных

  • Программа Message Sender слушает порт 48051 на внутреннем сетевом интерфейсе с адресом 192.168.1.1 (подключен к tap1).
  • При получении данных из внутреннего сетевого интерфейса, Message Sender отправляет их программе Message Receiver (используя библиотеку для обмена сообщениями между программами в KasperskyOS).
  • Программа Message Receiver отправляет данные через внешний сетевой интерфейс (подключен к tap0) в порт 48061 хоста 192.168.2.1 по защищенному соединению (c использованием сертификата).

Чтобы запустить демонстрацию передачи данных из внешней сети во внутреннюю с использованием примеров Message Sender и Message Receiver:

  1. Скопируйте директорию /opt/KasperskyOS-SDK-KISG-Platform-3.1.0.130/examples/secure_gateway/sdkl3 в домашнюю директорию:

    cp -r /opt/KasperskyOS-SDK-KISG-Platform-3.1.0.130/examples/secure_gateway/sdkl3 ~/sdkl3

    Директория sdkl3 содержит примеры, иллюстрирующие сценарии использования SDK. Изучая их и экспериментируя, вы будете вносить изменения в код и конфигурационные файлы. Кроме того, при сборке примера осуществляется запись в директории sdkl3/platform-build и sdkl3/applications/<директория_примера>/.build. Создание копии директории sdkl3 позволяет:

    • Не модифицировать файлы и директории, созданные при установке SDK из deb-пакета. Такая модификация может привести к нарушению корректной работы SDK и невозможности полного удаления SDK командой apt remove.
    • Сохранить оригинальное состояние директории sdkl3, к которому можно будет вернуться без переустановки SDK.
    • Не выполнять все дальнейшие действия с root-правами.
  2. Перейдите в скопированную директорию:

    cd ~/sdkl3

    Обратите внимание на содержимое этой директории:

    sdkl3/

    ├── applications/

    │ ├── hello_world_package/ # Код программы Hello World.

    │ ├── message_receiver_package/ # Код программы Message Receiver.

    │ ├── message_sender_package/ # Код программы Messаge Sender.

    │ └── ...

    ├── playbooks/ # Наборы команд для выполнения в Kaspersky IoT Secure Gateway 1000.

    └── ...

    Дальнейшие шаги выполняйте в директории ~/sdkl3.

  3. Соберите и установите программы Message Sender и Message Receiver:

    pushd applications/message_sender_package

    kosctl build -b type=release

    kosctl app install .build/x86_64-pc-kos-release/messagesender.kpac

    popd

    pushd applications/message_receiver_package

    kosctl build -b type=release

    kosctl app install .build/x86_64-pc-kos-release/messagereceiver.kpac

    popd

  4. Создайте директорию для системных конфигурационных файлов и скопируйте в нее файл applications/message_sender_package/resources/configs/TrafficControllerConfig:

    mkdir configs

    cp applications/message_sender_package/resources/configs/TrafficControllerConfig configs/

    В дальнейшем, вы отправите файлы из этой директории в Kaspersky IoT Secure Gateway 1000.

  5. Создайте и откройте в редакторе файлы configs/RoutesConfig и configs/LauncherConfig:

    touch configs/RoutesConfig

    touch configs/LauncherConfig

    code configs/RoutesConfig

    code configs/LauncherConfig

  6. Добавьте в эти файлы следующий JSON-код и сохраните изменения:

    configs/RoutesConfig

    {

    "routes": [

    {

    "active": true,

    "destination": {

    "application": "kaspersky.kisg.messagereceiver",

    "endpoint": "ReceiverEndpoint1"

    },

    "source": {

    "application": "kaspersky.kisg.messagesender",

    "endpoint": "SenderEndpoint1"

    }

    }

    ]

    }

    configs/LauncherConfig

    {

    "startupSettings": {

    "kaspersky.kisg.kds": {

    "launchRule": "auto",

    "logLevel": 4,

    "restartPolicy": "DO_NOT_RESTART"

    },

    "kaspersky.kisg.messagesender": {

    "launchRule": "auto",

    "restartPolicy": "DO_NOT_RESTART"

    },

    "kaspersky.kisg.messagereceiver": {

    "launchRule": "auto",

    "restartPolicy": "DO_NOT_RESTART"

    }

    }

    }

    Файл configs/RoutesConfig содержит параметры маршрутизации данных между программами – добавляет маршрут от Message Sender к Message Receiver.

    Файл configs/LauncherConfig содержит параметры запуска программ – включает автозапуск Message Sender и Message Receiver. Программа Kaspersky Debug Service (KDS) добавлена в автозапуск по умолчанию (вы могли это ранее заметить при просмотре списка Установленные приложения в веб-интерфейсе). Правило для автозапуска KDS добавлено в configs/LauncherConfig чтобы эта программа продолжала запускаться автоматически после применения новой конфигурации.

  7. Создайте сертификат для 192.168.2.1 (адрес интерфейса tap0 вашего компьютера) в директории ca_cert:

    openssl genrsa -out my_key.key

    mkdir ca_cert

    openssl req -x509 -new -key my_key.key -days 30 -subj "/CN=192.168.2.1" -out ca_cert/my_cert.crt

    Программа Message Receiver будет пересылать данные на 192.168.2.1 по защищенному соединению с использованием этого сертификата.

  8. Запустите наборы команд из директории playbooks в указанном ниже порядке

    # Настройка установленных программы, с использованием файлов

    # applications/*_package/resources/configs/app1.

    kosctl play playbooks/configure_applications.py

    # Установка корневого сертификата для Message Receiver.

    # Используется сертификат из директории ca_cert.

    kosctl play playbooks/set_app_ca_cert.py

    # Настройка системных параметров, используя файлы

    # configs/LauncherConfig, configs/RoutesConfig и configs/TrafficControllerConfig.

    kosctl play playbooks/set_system_configs.py

    # Перезапуск Kaspersky IoT Secure Gateway 1000.

    kosctl play playbooks/reboot.py

    После перезапуска системы, все готово для демонстрации передачи данных. Вы можете убедиться в том что система перезагрузилась и новые параметры применены, зайдя в веб-интерфейс и проверив состояние программ Message Sender и Messаge Receiver в списке Установленные приложения (программы должны быть запущены).

  9. Запустите сервер, слушающий порт 48061 на интерфейсе tap0. Для этого используйте инструмент ncat:

    ncat -l -k 192.168.2.1 48061 --ssl-key my_key.key --ssl-cert ca_cert/my_cert.crt

    Инструмент ncat будет ожидать данные от Message Receiver и отображать их в терминале.

    Если ncat не установлен, установите его командой sudo apt install ncat и повторите запуск сервера.

  10. В новом окне терминала запустите отправку данных в порт 48051 хоста 192.168.1.1, который слушает Message Sender:

    ncat 192.168.1.1 48051

    Теперь, если вы будете печатать любой текст в этом окне терминала, текст будет дублироваться в окне терминала с запущенным сервером ncat:

    Отправка

    $ ncat 192.168.1.1 48051

    Привет из локальной сети!

    Как дела снаружи?

    Получение

    $ ncat -l -k 192.168.2.1 48061 --ssl-key my_key.key --ssl-cert ca_cert/my_cert.crt

    Привет из локальной сети!

    Как дела снаружи?

    Также вы можете просмотреть отладочные сообщения с пересылаемым текстом в журналах программ Message Sender и Message Receiver.

    kaspersky.kisg.messagesender.log (фрагмент)

    [16-12-2024 10:35:09][Info][kaspersky.kisg.messagesender][4712:4713][][tcp_server.cpp:StartAccept:104] Listening SenderEndpoint1: address 192.168.1.1, port 48051

    ...

    [16-12-2024 10:40:48][Info][kaspersky.kisg.messagesender][4712:5061][][tcp_server.cpp:operator():131] Endpoint SenderEndpoint1 have accepted new connection

    [16-12-2024 10:41:06][Info][kaspersky.kisg.messagesender][4712:5061][][tcp_server.cpp:operator():152] Server endpoint SenderEndpoint1 received 47 bytes: Привет из локальной сети!

    [16-12-2024 10:41:06][Info][kaspersky.kisg.messagesender][4712:5061][][message_sender.cpp:SendDataByRoute:376] New proxy for appId: kaspersky.kisg.messagereceiver

    [16-12-2024 10:41:06][Info][kaspersky.kisg.messagesender][4712:5061][][message_sender.cpp:SendDataByRoute:381] Send 47 bytes to appId kaspersky.kisg.messagereceiver endpoint ReceiverEndpoint1

    [16-12-2024 10:41:14][Info][kaspersky.kisg.messagesender][4712:5061][][tcp_server.cpp:operator():152] Server endpoint SenderEndpoint1 received 32 bytes: Как дела снаружи?

    [16-12-2024 10:41:14][Info][kaspersky.kisg.messagesender][4712:5061][][message_sender.cpp:SendDataByRoute:381] Send 32 bytes to appId kaspersky.kisg.messagereceiver endpoint ReceiverEndpoint1

    kaspersky.kisg.messagereceiver.log (фрагмент)

    [16-12-2024 10:41:06][Info][kaspersky.kisg.messagereceiver][4631:4987][][message_receiver.cpp:Consume:105] Got request from endpoint: SenderEndpoint1 to endpoint ReceiverEndpoint1

    [16-12-2024 10:41:06][Info][kaspersky.kisg.messagereceiver][4631:4987][][message_receiver.cpp:SendMessage:139] transfer payload = Привет из локальной сети!

    ...

    [16-12-2024 10:41:06][Info][kaspersky.kisg.messagereceiver][4631:4987][][tcp_client.cpp:Send:34] Send to host: 192.168.2.1, port: 48061, resolved address: 192.168.2.1

    [16-12-2024 10:41:06][Info][kaspersky.kisg.messagereceiver][4631:4987][][tcp_client.cpp:Send:40] Client sent: Привет из локальной сети!

    ...

    [16-12-2024 10:41:14][Info][kaspersky.kisg.messagereceiver][4631:4987][][message_receiver.cpp:Consume:105] Got request from endpoint: SenderEndpoint1 to endpoint ReceiverEndpoint1

    [16-12-2024 10:41:14][Info][kaspersky.kisg.messagereceiver][4631:4987][][message_receiver.cpp:SendMessage:139] transfer payload = Как дела снаружи?

    ...

    [16-12-2024 10:41:14][Info][kaspersky.kisg.messagereceiver][4631:4987][][tcp_client.cpp:Send:34] Send to host: 192.168.2.1, port: 48061, resolved address: 192.168.2.1

    [16-12-2024 10:41:14][Info][kaspersky.kisg.messagereceiver][4631:4987][][tcp_client.cpp:Send:40] Client sent: Как дела снаружи?

Выполнив десять шагов инструкции выше, вы научились запускать демонстрацию передачи данных из внутренней сети во внешнюю. Далее, вы можете ознакомиться с исходными кодами программ Message Sender и Message Receiver и использовать их как основу при создании собственных программ для Kaspersky IoT Secure Gateway 1000, которые обмениваются данными между собой и работают с сетью.

Вам помогла эта статья?
Что нам нужно улучшить?
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!