Поделиться через


Настройка Azure IoT Edge для Linux в Windows в dmZ

Область применения:Флажок IoT Edge 1.5 IoT Edge 1.5

Внимание

IoT Edge 1.5 LTS является поддерживаемым выпуском. IoT Edge 1.4 LTS заканчивается жизнью с 12 ноября 2024 года. Если вы используете более ранний выпуск, см. статью Обновление IoT Edge.

В этой статье описывается настройка виртуальной машины Azure IoT Edge для Linux (EFLOW) для поддержки нескольких сетевых карт (сетевых карт) и подключения к нескольким сетям. Включив поддержку нескольких сетевых карт, приложения, работающие на виртуальной машине EFLOW, могут взаимодействовать с устройствами, подключенными к автономной сети, при использовании IoT Edge для отправки данных в облако.

Необходимые компоненты

Промышленный сценарий

Промышленный Центр Интернета вещей преодолеет эру информационных технологий (ИТ) и операционной технологии (OT). Тем не менее, создание традиционных активов OT более интеллектуальным с ИТ-технологиями также означает большую уязвимость к кибератакам. Этот сценарий является одной из основных причин, по которым несколько сред предназначены с помощью демилитаризованных зон, также известных как DMZ.

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

В этом сценарии у вас есть среда с некоторыми устройствами, такими как программируемые контроллеры логики (PLCs) или открытые устройства, совместимые с платформой (OPC UA), совместимые с автономной сетью, и вы хотите передать все сведения устройств в Azure с помощью модуля издателя OPC, работающего на виртуальной машине EFLOW.

Так как устройство узла EFLOW и устройства PLC или OPC UA физически подключены к автономной сети, вы можете использовать Azure IoT Edge для Linux в виртуальных сетевых конфигурациях Windows для подключения виртуальной машины EFLOW к автономной сети. С помощью внешнего виртуального коммутатора можно подключить виртуальную машину EFLOW к автономной сети и напрямую взаимодействовать с другими автономными устройствами.

Для другой сети устройство узла EFLOW физически подключено к dmZ (интернет-сети) с подключением к Интернету и Azure. Используя внутренний или внешний коммутатор, вы можете подключить виртуальную машину EFLOW к Центр Интернета вещей Azure с помощью модулей IoT Edge и передать сведения, отправленные автономными устройствами через автономный сетевой адаптер.

Снимок экрана: сценарий EFLOW Industrial IoT с виртуальной машиной EFLOW, подключенной к автономной и сетевой сети.

Сводка сценария

Безопасная сеть:

  • Нет подключения к Интернету — доступ ограничен.
  • Подключенные устройства, совместимые с PLCs или JSON UA.
  • Виртуальная машина EFLOW, подключенная с помощью внешнего виртуального коммутатора.

DMZ:

  • Подключение к Интернету — разрешено подключение к Azure.
  • Виртуальная машина EFLOW, подключенная к Центр Интернета вещей Azure, с помощью внутреннего или внешнего виртуального коммутатора.
  • Издатель OPC, работающий в качестве модуля в виртуальной машине EFLOW, используемый для публикации данных в Azure.

Настройка виртуальных коммутаторов виртуальной машины

Следующие шаги предназначены для сети, описанной в примере сценария. Убедитесь, что используемые виртуальные коммутаторы и конфигурации, используемые в соответствии с сетевой средой.

Примечание.

В этой статье предполагается, что виртуальная машина EFLOW была развернута с внешним виртуальным коммутатором, подключенным к защищенной сети (в автономном режиме). Вы можете изменить следующие шаги на определенную конфигурацию сети, которую вы хотите достичь. Дополнительные сведения о поддержке нескольких сетевых адаптеров EFLOW см. в статье Azure IoT Edge для Linux в виртуальных конфигурациях сетевого адаптера Windows.

Чтобы завершить подготовку виртуальной машины EFLOW и взаимодействовать с Azure, необходимо назначить другой сетевой адаптер, подключенный к сети DMZ (в сети).

В этом сценарии вы назначаете внешний виртуальный коммутатор, подключенный к сети DMZ. Дополнительные сведения см. в статье "Создание виртуального коммутатора для виртуальных машин Hyper-V".

Чтобы создать внешний виртуальный коммутатор, выполните следующие действия.

  1. Откройте диспетчер Hyper-V.
  2. В разделе "Действия" выберите диспетчер виртуальных коммутаторов.
  3. В виртуальных коммутаторах выберите новый коммутатор виртуальной сети.
  4. Выберите " Внешний", а затем нажмите кнопку "Создать виртуальный коммутатор".
  5. Введите имя, представляющее безопасную сеть. Например, OnlineOPCUA.
  6. В разделе "Тип подключения" выберите внешнюю сеть, а затем выберите сетевой адаптер, подключенный к сети DMZ.
  7. Выберите Применить.

После создания внешнего виртуального коммутатора необходимо подключить его к виртуальной машине EFLOW, выполнив следующие действия. Если вам нужно подключить несколько сетевых адаптеров, ознакомьтесь с несколькими сетевыми адаптерами EFLOW.

Для созданного пользовательского внешнего виртуального коммутатора используйте следующие команды PowerShell:

  1. Подключите переключатель к виртуальной машине EFLOW.

    Add-EflowNetwork -vswitchName "OnlineOPCUA" -vswitchType "External"
    

    Снимок экрана: успешное создание внешней сети с именем OnlineOPCUA.

  2. Задайте статический IP-адрес.

    Add-EflowVmEndpoint -vswitchName "OnlineOPCUA" -vEndpointName "OnlineEndpoint" -ip4Address 192.168.0.103 -ip4PrefixLength 24 -ip4GatewayAddress 192.168.0.1
    

    Снимок экрана: успешная конфигурация коммутатора OnlineOPCUA.

После завершения вы назначите параметр OnlineOPCUA виртуальной машине EFLOW. Чтобы проверить несколько вложений сетевого адаптера, выполните следующие действия.

  1. Откройте сеанс PowerShell с повышенными привилегиями, начиная с запуска от имени администратора.

  2. Подключитесь к виртуальной машине EFLOW.

    Connect-EflowVm
    
  3. Когда вы находитесь на виртуальной машине, перечислите все сетевые интерфейсы, назначенные виртуальной машине EFLOW.

    ifconfig
    
  4. Просмотрите конфигурацию IP-адресов и убедитесь, что интерфейс eth0 (подключен к защищенной сети) и интерфейс eth1 (подключен к сети DMZ).

    Снимок экрана: IP-конфигурация нескольких сетевых адаптеров, подключенных к двум разным сетям.

Настройка маршрутизации сети виртуальной машины

При использовании функции EFLOW для нескольких сетевых адаптеров может потребоваться настроить различные приоритеты маршрутов. По умолчанию EFLOW создает один маршрут по умолчанию для каждого интерфейса ehtX , назначенного виртуальной машине. EFLOW назначает маршрут по умолчанию случайным приоритетом. Если все интерфейсы подключены к Интернету, случайные приоритеты могут не быть проблемой. Однако если один из сетевых адаптеров подключен к автономной сети, вы можете выбрать приоритетсетевого сетевого адаптера по автономному сетевому адаптеру, чтобы получить виртуальную машину EFLOW, подключенную к Интернету.

EFLOW использует службу маршрутизации для управления альтернативами маршрутизации сети. Чтобы проверить доступные маршруты виртуальных машин EFLOW, выполните следующие действия.

  1. Откройте сеанс PowerShell с повышенными привилегиями, начиная с запуска от имени администратора.

  2. Подключитесь к виртуальной машине EFLOW.

    Connect-EflowVm
    
  3. Когда вы находитесь на виртуальной машине, перечислите все сетевые маршруты, настроенные на виртуальной машине EFLOW.

    sudo route
    

    Снимок экрана: таблица маршрутизации для виртуальной машины EFLOW.

    Совет

    На предыдущем рисунке показаны выходные данные команды маршрута с назначенным двумя сетевыми адаптерами (eth0 и eth1). Виртуальная машина создает два разных правила назначения по умолчанию с разными метриками. Более низкое значение метрик имеет более высокий приоритет. Эта таблица маршрутизации зависит от сетевого сценария, настроенного на предыдущих шагах.

Конфигурация статических маршрутов

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

Сначала создайте скрипт bash, который выполняет необходимые команды для задания маршрутов. Например, после сценария сети, упомянутого ранее, виртуальная машина EFLOW имеет два сетевых адаптера (автономные и сетевые сети). NIC eth0 подключен с помощью IP-xxx.xxx.xxx.xxx шлюза. NIC eth1 подключен с помощью IP-адреса шлюза y.y.

Следующий сценарий сбрасывает маршруты по умолчанию для eth0 и *eth1, а затем добавляет маршруты с требуемой< метрикой чисел>. Помните, что более низкое значение метрик имеет более высокий приоритет.

#!/bin/sh

# Wait 30s for the interfaces to be up
sleep 30

# Delete previous eth0 route and create a new one with desired metric
sudo ip route del default via xxx.xxx.xxx.xxx dev eth0
sudo route add -net default gw xxx.xxx.xxx.xxx netmask 0.0.0.0 dev eth0 metric <number>

# Delete previous eth1 route and create a new one with desired metric
sudo ip route del default via yyy.yyy.yyy.yyy dev eth1
sudo route add -net default gw yyy.yyy.yyy.yyy netmask 0.0.0.0 dev eth1 metric <number>

Предыдущий скрипт можно использовать для создания собственного пользовательского скрипта, относяногося к вашему сетевому сценарию. После определения скрипта сохраните его и назначьте разрешение на выполнение. Например, если имя скрипта route-setup.sh, можно назначить разрешение на выполнение с помощью командыsudo chmod +x route-setup.sh. Вы можете проверить правильность работы скрипта, выполнив его вручную с помощью команды sudo sh ./route-setup.sh , а затем проверив таблицу маршрутизации с помощью sudo route команды.

Последним шагом является создание службы Linux, которая выполняется при запуске, и выполняет скрипт bash, чтобы задать маршруты. Для загрузки службы необходимо создать системный модульный файл. Ниже приведен пример этого файла.

[Unit]
after=network

[Service]
Type=simple
ExecStart=/bin/bash /home/iotedge-user/route-setup.sh

[Install]
WantedBy=default.target

Чтобы проверить работу службы, перезагрузите виртуальную машину EFLOW (Stop-EflowVm > Start-EflowVm), а затем Connect-EflowVm подключитесь к виртуальной машине. Вывод списка маршрутов с помощью sudo route и проверки их правильности. Вы должны увидеть новые правила по умолчанию с назначенной метрикой.

Следующие шаги

Выполните действия, описанные в разделе "Настройка сети для Azure IoT Edge для Linux в Windows " для проверки правильности применения конфигураций сети.