Partilhar via


Como configurar o Azure IoT Edge para Linux no Windows Industrial IoT & Configuração DMZ

Aplica-se a:Marca de verificação do IoT Edge 1.4 IoT Edge 1.4

Importante

IoT Edge 1.5 LTS e IoT Edge 1.4 são versões suportadas. O IoT Edge 1.4 LTS termina a vida útil em 12 de novembro de 2024. Se tiver uma versão anterior, consulte Atualizar IoT Edge.

Este artigo descreve como configurar a máquina virtual (VM) do Azure IoT Edge para Linux (EFLOW) para dar suporte a várias placas de interface de rede (NICs) e conectar-se a várias redes. Ao habilitar o suporte a várias NICs, os aplicativos executados na VM EFLOW podem se comunicar com dispositivos conectados à rede off-line, enquanto usam o IoT Edge para enviar dados para a nuvem.

Pré-requisitos

Cenário industrial

A IoT industrial está ultrapassando a era da convergência de tecnologia da informação (TI) e tecnologia operacional (OT). No entanto, tornar os ativos OT tradicionais mais inteligentes com tecnologias de TI também significa uma maior exposição a ataques cibernéticos. Este cenário é uma das principais razões pelas quais vários ambientes são projetados usando zonas desmilitarizadas, também conhecidas como DMZs.

Imagine um cenário de fluxo de trabalho em que você tem uma configuração de rede dividida em duas redes ou zonas diferentes. Na primeira zona, você pode ter uma rede segura definida como a rede offline. A rede offline não tem ligação à Internet e está limitada ao acesso interno. Na segunda zona, você pode ter uma zona desmilitarizada (DMZ), na qual você pode ter alguns dispositivos que têm conectividade limitada com a Internet. Ao mover o fluxo de trabalho para ser executado na VM EFLOW, você pode ter problemas para acessar as diferentes redes, já que a VM EFLOW por padrão tem apenas uma NIC anexada.

Nesse cenário, você tem um ambiente com alguns dispositivos, como controladores lógicos programáveis (PLCs) ou dispositivos compatíveis com arquitetura unificada de comunicações de plataforma aberta (OPC UA) conectados à rede offline e deseja carregar todas as informações dos dispositivos para o Azure usando o módulo OPC Publisher em execução na VM EFLOW.

Como o dispositivo host EFLOW e os dispositivos UA PLC ou OPC estão fisicamente conectados à rede offline, você pode usar o Azure IoT Edge para Linux no Windows virtual várias configurações de NIC para conectar a VM EFLOW à rede offline. Usando um comutador virtual externo, você pode conectar a VM EFLOW à rede offline e se comunicar diretamente com outros dispositivos offline.

Para a outra rede, o dispositivo host EFLOW está fisicamente conectado à DMZ (rede online) com conectividade com a Internet e o Azure. Usando um switch interno ou externo, você pode conectar a VM EFLOW ao Hub IoT do Azure usando módulos IoT Edge e carregar as informações enviadas pelos dispositivos offline por meio da NIC offline.

Captura de tela de um cenário de IoT industrial EFLOW mostrando uma máquina virtual EFLOW conectada a uma rede offline e online.

Resumo do cenário

Rede segura:

  • Sem ligação à Internet - acesso restrito.
  • PLCs ou dispositivos UPC compatíveis com UA conectados.
  • VM EFLOW conectada usando um comutador virtual externo.

DMZ:

  • Conectividade com a Internet - conexão do Azure permitida.
  • VM EFLOW conectada ao Hub IoT do Azure, usando um comutador virtual Interno/Externo.
  • OPC Publisher em execução como um módulo dentro da VM EFLOW usada para publicar dados no Azure.

Configurar comutadores virtuais de rede VM

As etapas a seguir são específicas para a rede descrita no cenário de exemplo. Certifique-se de que os comutadores virtuais usados e as configurações usadas estejam alinhados com seu ambiente de rede.

Nota

As etapas neste artigo pressupõem que a VM EFLOW foi implantada com um comutador virtual externo conectado à rede segura (offline). Você pode alterar as etapas a seguir para a configuração de rede específica que deseja alcançar. Para obter mais informações sobre o suporte a várias NICs EFLOW, consulte Azure IoT Edge para Linux em configurações virtuais de várias NICs do Windows.

Para concluir o provisionamento da VM EFLOW e se comunicar com o Azure, você precisa atribuir outra NIC conectada à rede DMZ (online).

Para esse cenário, você atribui um comutador virtual externo conectado à rede DMZ. Para obter mais informações, consulte Criar um comutador virtual para máquinas virtuais Hyper-V.

Para criar um comutador virtual externo, siga estes passos:

  1. Abra o Gestor de Hyper-V.
  2. Em Ações, selecione Virtual Switch Manager.
  3. Em Comutadores Virtuais, selecione Novo Comutador de Rede Virtual.
  4. Escolha o tipo Externo e, em seguida, selecione Criar Comutador Virtual.
  5. Insira um nome que represente a rede segura. Por exemplo, OnlineOPCUA.
  6. Em Tipo de Ligação, selecione Rede Externa e, em seguida, escolha a placa de rede ligada à rede DMZ.
  7. Selecione Aplicar.

Depois que o comutador virtual externo for criado, você precisará anexá-lo à VM EFLOW usando as etapas a seguir. Se você precisar anexar várias NICs, consulte EFLOW Multiple NICs.

Para o novo comutador virtual externo personalizado que você criou, use os seguintes comandos do PowerShell para:

  1. Conecte o switch à sua VM EFLOW.

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

    Screenshot de uma criação bem-sucedida da rede externa chamada OnlineOPCUA.

  2. Defina um IP estático.

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

    Captura de tela de uma configuração bem-sucedida do switch OnlineOPCUA..

Depois de concluído, você terá a opção OnlineOPCUA atribuída à VM EFLOW. Para verificar o anexo de várias NICs, use as seguintes etapas:

  1. Abra uma sessão elevada do PowerShell começando com Executar como Administrador.

  2. Conecte-se à máquina virtual EFLOW.

    Connect-EflowVm
    
  3. Quando estiver na VM, liste todas as interfaces de rede atribuídas à máquina virtual EFLOW.

    ifconfig
    
  4. Revise a configuração de IP e verifique se você vê a interface eth0 (conectada à rede segura) e a interface eth1 (conectada à rede DMZ).

    Captura de tela mostrando a configuração IP de várias NICs conectadas a duas redes diferentes.

Configurar o roteamento de rede VM

Ao usar o recurso EFLOW de várias NICs, convém configurar as diferentes prioridades de rota. Por padrão, o EFLOW cria uma rota padrão por interface ehtX atribuída à VM. EFLOW atribui à rota padrão uma prioridade aleatória. Se todas as interfaces estiverem conectadas à internet, prioridades aleatórias podem não ser um problema. No entanto, se uma das NICs estiver conectada a uma rede offline , convém priorizar a NIC online sobre a NIC offline para conectar a VM EFLOW à Internet.

O EFLOW usa o serviço de rota para gerenciar as alternativas de roteamento de rede. Para verificar as rotas de VM EFLOW disponíveis, use as seguintes etapas:

  1. Abra uma sessão elevada do PowerShell começando com Executar como Administrador.

  2. Conecte-se à máquina virtual EFLOW.

    Connect-EflowVm
    
  3. Quando estiver na VM, liste todas as rotas de rede configuradas na máquina virtual EFLOW.

    sudo route
    

    Captura de tela mostrando a tabela de roteamento para a máquina virtual EFLOW.

    Gorjeta

    A imagem anterior mostra a saída do comando route com as duas NIC's atribuídas (eth0 e eth1). A máquina virtual cria duas regras de destinos padrão diferentes com métricas diferentes. Um valor métrico mais baixo tem uma prioridade maior. Essa tabela de roteamento variará dependendo do cenário de rede configurado nas etapas anteriores.

Configuração de rotas estáticas

Sempre que a VM EFLOW é iniciada, os serviços de rede recriam todas as rotas e qualquer prioridade atribuída anteriormente pode mudar. Para contornar esse problema, você pode atribuir a prioridade desejada para cada rota sempre que a VM EFLOW é iniciada. Você pode criar um serviço que é executado em cada inicialização de VM e usa o route comando para definir as prioridades de rota desejadas.

Primeiro, crie um script bash que execute os comandos necessários para definir as rotas. Por exemplo, seguindo o cenário de rede mencionado anteriormente, a VM EFLOW tem duas NICs (redes offline e online). A NIC eth0 é conectada usando o xxx.xxx.xxx.xxx IP do gateway. A NIC eth1 é conectada usando o IP do gateway yyy.yyy.yyy.yyy.

O script a seguir redefine as rotas padrão para eth0 e *eth1 e adiciona as rotas com a métrica de número> desejada<. Lembre-se de que um valor métrico mais baixo tem prioridade maior.

#!/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>

Você pode usar o script anterior para criar seu próprio script personalizado específico para seu cenário de rede. Depois que o script estiver definido, salve-o e atribua a permissão de execução. Por exemplo, se o nome do script for route-setup.sh, você poderá atribuir permissão de execução usando o comando sudo chmod +x route-setup.sh. Você pode testar se o script funciona corretamente executando-o manualmente usando o comando sudo sh ./route-setup.sh e, em seguida, verificando a tabela de roteamento usando o sudo route comando.

A etapa final é criar um serviço Linux que seja executado na inicialização e execute o script bash para definir as rotas. Você tem que criar um arquivo de unidade systemd para carregar o serviço. Segue-se um exemplo desse ficheiro.

[Unit]
after=network

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

[Install]
WantedBy=default.target

Para verificar se o serviço funciona, reinicie a VM EFLOW (Stop-EflowVm & Start-EflowVm) e, em seguida Connect-EflowVm , conecte-se à VM. Liste as rotas usadas sudo route e verifique se estão corretas. Você deve ser capaz de ver as novas regras padrão com a métrica atribuída.

Próximos passos

Siga as etapas em Como configurar a rede para o Azure IoT Edge para Linux no Windows para verificar se suas configurações de rede foram aplicadas corretamente.