Partager via


Comment configurer Azure IoT Edge pour Linux sur Windows sur une DMZ

S’applique à : Coche IoT Edge 1.4 IoT Edge 1.4

Important

Azure IoT Edge 1.5 LTS et IoT Edge 1.4 sont des versions prises en charge. IoT Edge 1.4 LTS arrive en fin de service le 12 novembre 2024. Si vous utilisez une version antérieure, consultez l’article Mettre à jour IoT Edge.

Cet article explique comment configurer la machine virtuelle Azure IoT Edge pour Linux (EFLOW) pour prendre en charge plusieurs cartes d’interface réseau et se connecter à plusieurs réseaux. En activant la prise en charge de plusieurs cartes réseau, les applications exécutées sur la machine virtuelle EFLOW peuvent communiquer avec les appareils connectés au réseau hors connexion tout en utilisant IoT Edge pour envoyer des données au cloud.

Prérequis

Scénario industriel

L’IoT industriel prend le pas sur l’ère de la convergence des technologies de l’information (IT) et des technologies opérationnelles (OT). Toutefois, le fait que les ressources OT traditionnelles soient plus intelligentes avec les technologies IT signifie également qu’elles sont plus exposées aux cyberattaques. Ce scénario est l’une des principales raisons pour lesquelles plusieurs environnements sont conçus avec des zones démilitarisées, appelées également DMZ.

Imaginez un scénario de flux de travail où vous disposez d’une configuration réseau divisée en deux réseaux ou zones différents. Dans la première zone, vous pouvez avoir un réseau sécurisé défini comme réseau hors connexion. Le réseau hors connexion n’a aucune connectivité Internet et est limité à l’accès interne. Dans la deuxième zone, vous pouvez avoir une zone démilitarisée (DMZ), dans laquelle vous avez peut-être quelques appareils qui ont une connectivité Internet limitée. Lorsque vous déplacez le flux de travail à exécuter sur la machine virtuelle EFLOW, vous pouvez rencontrer des problèmes d’accès aux différents réseaux, car la machine virtuelle EFLOW par défaut n’a qu’une seule carte réseau attachée.

Dans ce scénario, vous avez un environnement avec des appareils de type contrôleurs logiques programmables (PLC) ou des appareils compatibles avec la norme OPC UA (Open Platform Communications Unified Architecture) connectés au réseau hors connexion, et vous voulez charger toutes les informations des appareils dans Azure en utilisant le module Publisher OPC s’exécutant sur la machine virtuelle EFLOW.

Étant donné que l’appareil hôte EFLOW et les appareils PLC ou OPC UA sont physiquement connectés au réseau hors connexion, vous pouvez utiliser les configurations de plusieurs cartes réseau virtuelles Azure IoT Edge pour Linux sur Windows pour connecter la machine virtuelle EFLOW au réseau hors connexion. L’utilisation d’un commutateur virtuel externe permet de connecter la machine virtuelle EFLOW au réseau hors connexion et de communiquer directement avec d’autres appareils hors connexion.

Pour l’autre réseau, l’appareil hôte EFLOW est physiquement connecté à la DMZ (réseau en ligne) avec une connectivité Internet et Azure. L’utilisation d’un commutateur virtuel externe permet de connecter la machine virtuelle EFLOW à Azure IoT Hub à l’aide de modules IoT Edge et de charger les informations envoyées par les appareils hors connexion via la carte réseau hors connexion.

Capture d’écran d’un scénario IoT industriel EFLOW montrant une machine virtuelle EFLOW connectée à un réseau hors connexion et en ligne.

Résumé du scénario

Réseau sécurisé :

  • Aucune connectivité Internet - accès restreint.
  • Appareils PLC ou compatibles UPC UA connectés.
  • Machine virtuelle EFLOW connectée à l’aide d’un commutateur virtuel externe.

DMZ :

  • Connectivité Internet - Connexion Azure autorisée.
  • Machine virtuelle EFLOW connectée à Azure IoT Hub, à l’aide d’un commutateur virtuel interne/externe.
  • Serveur OPC s’exécutant en tant que module à l’intérieur de la machine virtuelle EFLOW utilisée pour publier des données sur Azure.

Configurer des commutateurs virtuels de réseau de machines virtuelles

Les étapes suivantes sont spécifiques pour la mise en réseau décrite dans l’exemple de scénario. Vérifiez que les commutateurs virtuels utilisés et les configurations utilisées s’alignent sur votre environnement réseau.

Remarque

Les étapes décrites dans cet article supposent que la machine virtuelle EFLOW a été déployée avec un commutateur virtuel externe connecté au réseau sécurisé (hors connexion). Vous pouvez adapter les étapes suivantes en fonction de la configuration réseau spécifique que vous voulez obtenir. Pour plus d’informations sur la prise en charge de plusieurs cartes réseau d’EFLOW, consultez Configurations de plusieurs cartes réseau sur la machine virtuelle Azure IoT Edge pour Linux sur Windows.

Pour terminer l’approvisionnement de la machine virtuelle EFLOW et communiquer avec Azure, vous devez affecter une autre carte réseau connectée au réseau DMZ (en ligne).

Pour ce scénario, vous attribuez un commutateur virtuel externe connecté au réseau DMZ. Pour plus d’informations sur la création de commutateurs virtuels, consultez Créer un commutateur virtuel pour les machines virtuelles Hyper-V.

Pour créer un commutateur virtuel externe, procédez comme suit :

  1. Ouvrez le Gestionnaire Hyper-V.
  2. Dans le menu Actions, sélectionnez Gestionnaire de commutateur virtuel.
  3. Dans Commutateurs virtuels, sélectionnez Nouveau commutateur réseau virtuel.
  4. Choisissez comme type Externe, puis sélectionnez Créer un commutateur virtuel.
  5. Entrez un nom qui représente le réseau sécurisé. Par exemple, OnlineOPCUA.
  6. Sous Type de connexion, sélectionnez Réseau externe, puis choisissez la carte réseau connectée à votre réseau DMZ.
  7. Sélectionnez Appliquer.

Une fois le commutateur virtuel externe créé, vous devez l’attacher à la machine virtuelle EFLOW en suivant les étapes suivantes. Si vous devez attacher plusieurs cartes réseau, consultez Plusieurs cartes réseau EFLOW.

Pour le nouveau commutateur virtuel externe personnalisé que vous avez créé, utilisez les commandes PowerShell suivantes pour :

  1. Attacher le commutateur à votre machine virtuelle EFLOW.

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

    Capture d’écran montrant la création réussie du réseau externe appelé OnlineOPCUA.

  2. Définir une IP statique.

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

    Capture d’écran montrant la configuration réussie du commutateur OnlineOPCUA.

Dès que vous avez terminé, le commutateur OnlineOPCUA est attribué à la machine virtuelle EFLOW. Pour vérifier que plusieurs cartes réseau ont été attachées, procédez comme suit :

  1. Ouvrez une session PowerShell avec élévation de privilèges en commençant par Exécuter en tant qu’administrateur.

  2. Connectez-vous à la machine virtuelle EFLOW.

    Connect-EflowVm
    
  3. À partir de votre machine virtuelle, listez toutes les interfaces réseau attribuées à la machine virtuelle EFLOW.

    ifconfig
    
  4. Passez en revue la configuration IP et vérifiez que vous voyez l’interface eth0 (connectée au réseau sécurisé) et l’interface eth1 (connectée au réseau DMZ).

    Capture d’écran montrant la configuration IP de plusieurs cartes réseau connectées à deux réseaux différents.

Configurer le routage réseau de machines virtuelles

Lors de l’utilisation de plusieurs cartes réseau EFLOW, vous souhaiterez peut-être configurer les différentes priorités de routes. Par défaut, EFLOW crée un itinéraire par défaut par interface ehtX affectée à la machine virtuelle. EFLOW affecte l’itinéraire par défaut selon une priorité aléatoire. Si toutes les interfaces sont connectées à Internet, les priorités aléatoires peuvent ne pas être un problème. En revanche, si l’une des cartes réseau est connectée à un réseau hors connexion, vous souhaiterez peut-être affecter à la carte réseau en ligne une priorité supérieure à la carte réseau hors connexion afin de connecter la machine virtuelle EFLOW à Internet.

EFLOW utilise le service d’itinéraire pour gérer les alternatives de routage réseau. Pour vérifier les itinéraires de machine virtuelle EFLOW disponibles, procédez comme suit :

  1. Ouvrez une session PowerShell avec élévation de privilèges en commençant par Exécuter en tant qu’administrateur.

  2. Connectez-vous à la machine virtuelle EFLOW.

    Connect-EflowVm
    
  3. À partir de votre machine virtuelle, listez toutes les routes réseau configurées dans la machine virtuelle EFLOW.

    sudo route
    

    Capture d’écran montrant la table de routage de la machine virtuelle EFLOW.

    Conseil

    L’image précédente montre la sortie de la commande d’itinéraire avec les deux cartes réseau affectées (eth0 et eth1). La machine virtuelle crée deux règles de destinations par défaut différentes avec des métriques différentes. Une valeur de métrique inférieure a une priorité plus élevée. Cette table de routage varie selon le scénario de mise en réseau configuré dans les étapes précédentes.

Configuration des itinéraires statiques

Chaque fois que la machine virtuelle EFLOW démarre, les services de mise en réseau recréent tous les itinéraires, et toute priorité précédemment affectée peut changer. Pour contourner ce problème, vous pouvez affecter la priorité souhaitée pour chaque itinéraire chaque fois que la machine virtuelle EFLOW démarre. Vous pouvez créer un service qui s’exécute sur chaque démarrage de machine virtuelle et qui utilise la commande route pour définir les priorités d’itinéraire souhaitées.

Tout d’abord, créez un script bash qui exécute les commandes nécessaires pour définir les itinéraires. Par exemple, en suivant le scénario de mise en réseau mentionné précédemment, la machine virtuelle EFLOW dispose de deux cartes réseau (réseaux hors connexion et en ligne). L’eth0 de carte réseau est connectée à l’aide de l’adresse IP de passerelle xxx.xxx.xxx.xxx. L’eth1 de carte réseau est connectée à l’aide de l’adresse IP de passerelle yyy.yyy.yyy.yyy.

Le script suivant réinitialise les itinéraires par défaut pour eth0 et *eth1, puis ajoute les itinéraires avec la métrique de <nombre> souhaité. N’oubliez pas qu’une valeur de métrique inférieure a une priorité plus élevée.

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

Vous pouvez utiliser le script précédent pour créer votre propre script personnalisé spécifique à votre scénario de mise en réseau. Une fois le script défini, enregistrez-le et affectez l’autorisation d’exécution. Par exemple, si le nom du script est route-setup.sh, vous pouvez affecter l’autorisation d’exécution à l’aide de la commande sudo chmod +x route-setup.sh. Vous pouvez tester si le script fonctionne correctement en l’exécutant manuellement à l’aide de la commande sudo sh ./route-setup.sh, puis en vérifiant la table de routage à l’aide de la commande sudo route.

La dernière étape consiste à créer un service Linux qui s’exécute au démarrage et exécute le script bash pour définir les itinéraires. Vous devez créer un fichier d’unité systemd pour charger le service. Voici un exemple de ce fichier.

[Unit]
after=network

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

[Install]
WantedBy=default.target

Pour vérifier que le service fonctionne, redémarrez la machine virtuelle EFLOW (Stop-EflowVm et Start-EflowVm) puis Connect-EflowVm pour vous connecter à la machine virtuelle. Répertoriez les itinéraires en utilisant sudo route et vérifiez qu’ils sont corrects. Vous devriez être en mesure de voir les nouvelles règles par défaut avec la métrique affectée.

Étapes suivantes

Suivez les étapes décrites dans Comment configurer la mise en réseau pour Azure IoT Edge pour Linux sur Windows afin de vérifier que vos configurations réseau ont été appliquées correctement.