Freigeben über


Konfigurieren von Azure IoT Edge für Linux unter Windows auf einem DMZ

Gilt für:IoT Edge 1.4 Häkchen IoT Edge 1.4

Wichtig

IoT Edge 1.5 LTS und IoT Edge 1.4 sind unterstützte Releases. Das Ende der Lebensdauer von IoT Edge 1.4 LTS wird am 12. November 2024 erreicht. Wenn Sie ein früheres Release verwenden, finden Sie weitere Informationen unter Aktualisieren von IoT Edge.

In diesem Artikel wird beschrieben, wie Sie die VM für Azure IoT Edge für Linux (EFLOW) so konfigurieren, dass mehrere Netzwerkschnittstellenkarten (Network Interface Cards, NICs) unterstützt werden und eine Verbindung mit mehreren Netzwerken hergestellt wird. Durch Aktivierung der Unterstützung für mehrere NICs können Anwendungen, die auf der EFLOW-VM ausgeführt werden, mit Geräten kommunizieren, die mit dem Offlinenetzwerk verbunden sind. Dabei nutzen sie IoT Edge zum Senden von Daten an die Cloud.

Voraussetzungen

Industrial-Szenario

Industrial IoT wird im Zeitalter der Konvergenz von Informationstechnologie (IT) und Betriebstechnik (Operational Technology, OT) immer wichtiger. Die Möglichkeit für eine intelligentere Nutzung von herkömmlichen OT-Ressourcen mit IT-Technologien bedeutet jedoch auch eine größere Anfälligkeit für Cyberangriffe. Dieses Szenario ist einer der Hauptgründe, warum mehrere Umgebungen mithilfe von demilitarisierten Zonen (auch als „DMZs“ bezeichnet) konzipiert werden.

Stellen Sie sich ein Workflowszenario vor, in dem Sie eine Netzwerkkonfiguration haben, die in zwei verschiedene Netzwerke oder Zonen unterteilt ist. In der ersten Zone haben Sie möglicherweise ein sicheres Netzwerk, das als Offlinenetzwerk definiert wurde. Das Offlinenetzwerk hat keine Internetkonnektivität und ist auf internen Zugriff eingeschränkt. In der zweiten Zone haben Sie möglicherweise eine demilitarisierte Zone (DMZ) mit ein paar Geräten, deren Internetkonnektivität eingeschränkt ist. Wenn Sie den Workflow zur Ausführung auf die EFLOW-VM verschieben, haben Sie möglicherweise Probleme beim Zugriff auf die verschiedenen Netzwerke, da bei der EFLOW-VM standardmäßig nur eine NIC angefügt ist.

In diesem Szenario haben Sie eine Umgebung mit einigen Geräten wie PLCs (Programmable Logic Controller, programmierbare Logikcontroller) oder OPC UA-kompatible (Open Platform Communications Unified Architecture) Geräte, die mit dem Offlinenetzwerk verbunden sind, und Sie möchten alle Informationen des Geräts mithilfe des OPC Publisher-Moduls, das auf der EFLOW-VM ausgeführt wird, in Azure hochladen.

Da das EFLOW-Hostgerät und die PLC- oder OPC UA-Geräte mit dem Offlinenetzwerk physisch verbunden sind, können Sie mithilfe von Virtueller Azure IoT Edge für Linux unter Windows-Computer – Konfigurationen von mehreren Netzwerkschnittstellenkarten die EFLOW-VM mit dem Offlinenetzwerk verbinden. Mithilfe eines externen virtuellen Switches können Sie die EFLOW-VM mit dem Offlinenetzwerk verbinden und mit anderen Offlinegeräten direkt kommunizieren.

Für das andere Netzwerk wird das EFLOW-Hostgerät mit dem DMZ (Onlinenetzwerk) mit Internet- und Azure-Konnektivität physisch verbunden. Mithilfe eines internen oder externen Switches und mithilfe von IoT Edge-Modulen können Sie die EFLOW-VM mit Azure IoT Hub verbinden und die von den Offlinegeräten gesendeten Informationen über die Offline-NIC hochladen.

Screenshot: Industrial IoT-Szenario mit EFLOW mit einer EFLOW-VM, die mit einem Offline- und Onlinenetzwerk verbunden ist

Szenariozusammenfassung

Sicheres Netzwerk:

  • Keine Internetverbindung: Zugriff eingeschränkt
  • PLCs oder UPC UA-kompatible Geräte verbunden
  • EFLOW-VM, über einen externen virtuellen Switch verbunden.

DMZ:

  • Internetverbindung – Azure-Verbindung zulässig.
  • EFLOW-VM, über einen virtuellen Switch „Intern/Extern“ mit Azure IoT Hub verbunden.
  • OPC Publisher, der als Modul in der EFLOW-VM ausgeführt wird, mit der Daten in Azure veröffentlicht werden.

Konfigurieren von virtuellen VM-Netzswitches

Die folgenden Schritte sind spezifisch für das im Beispielszenario beschriebene Netzwerk. Stellen Sie sicher, dass die verwendeten virtuellen Switches und die verwendeten Konfigurationen mit Ihrer Netzwerkumgebung übereinstimmen.

Hinweis

Bei den Schritten in diesem Artikel wird davon ausgegangen, dass die EFLOW-VM mit einem externen virtuellen Switch bereitgestellt wurde, der mit dem sicheren Netzwerk (offline) verbunden ist. Sie können die folgenden Schritte in die spezifische Netzwerkkonfiguration, die Sie erreichen möchten, ändern. Weitere Informationen zur EFLOW-Unterstützung von mehreren NIcs finden Sie unter Virtueller Azure IoT Edge für Linux unter Windows-Computer – Konfigurationen von mehreren Netzwerkschnittstellenkarten.

Um die Bereitstellung der EFLOW-VM abzuschließen und mit Azure zu kommunizieren, müssen Sie eine weitere NIC zuweisen, die mit dem DMZ-Netzwerk (online) verbunden ist.

Für dieses Szenario weisen Sie einen externen virtuellen Switch zu, der mit dem DMZ-Netzwerk verbunden ist. Weitere Informationen dazu finden Sie unter Erstellen eines virtuellen Switches für virtuelle Hyper-V-Computer.

Führen Sie zum Erstellen eines externen virtuellen Switches die folgenden Schritte aus:

  1. Öffnen Sie den Hyper-V-Manager.
  2. Wählen Sie in Aktionen die Option Virtual Switch Manager (Manager für virtuelle Switches) aus.
  3. Wählen Sie unter Virtuelle Switches die Option Neuer virtueller Netzwerkswitch aus.
  4. Wählen Sie den Typ Extern und dann Virtuellen Switch erstellen aus.
  5. Geben Sie einen Namen ein, der das sichere Netzwerk darstellt. Beispiel: OnlineOPCUA.
  6. Wählen Sie unter Verbindungstyp die Option Externes Netzwerk und dann den mit Ihrem DMZ-Netzwerk verbundenen Netzwerkadapter aus.
  7. Wählen Sie Übernehmen.

Nachdem der externe virtuelle Switch erstellt wurde, müssen Sie ihn mithilfe der folgenden Schritte an die EFLOW-VM anfügen. Wenn Sie mehrere NICs anfügen müssen, lesen Sie die Informationen unter EFLOW – Mehrere NICs.

Verwenden Sie für den von Ihnen erstellten benutzerdefinierten neuen externen virtuellen Switch die folgenden PowerShell-Befehle zu Ausführen der folgenden Aktionen:

  1. Anfügen des Switches an Ihre EFLOW-VM:

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

    Screenshot: Erfolgreiche Erstellung des externen Netzwerks namens „OnlineOPCUA“

  2. Festlegen einer statischen IP-Adresse:

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

    Screenshot: Erfolgreiche Konfiguration des OnlineOPCUA-Switches

Nach Abschluss des Vorgangs verfügen Sie über den der EFLOW-VM zugewiesenen Switch OnlineOPCUA. Führen Sie zum Überprüfen des Anfügens von mehreren NICs die folgenden Schritte aus:

  1. Öffnen Sie eine PowerShell-Sitzung mit erhöhten Rechten, indem Sie mit Als Administrator ausführen beginnen.

  2. Stellen Sie eine Verbindung mit dem virtuellen EFLOW-Computer her.

    Connect-EflowVm
    
  3. Listen Sie auf der VM alle Netzwerkschnittstellen auf, die der EFLOW-VM zugewiesen wurden.

    ifconfig
    
  4. Überprüfen Sie die IP-Konfiguration und ob die Schnittstelle eth0 (verbunden mit dem sicheren Netzwerk) und die Schnittstelle eth1 (verbunden mit dem DMZ-Netzwerk) angezeigt wird.

    Screenshot: IP-Konfiguration von mehreren NICs, die mit zwei verschiedenen Netzwerken verbunden sind

Konfigurieren des VM-Netzwerkroutings

Wenn Sie das Feature mehrerer NICs bei EFLOW verwenden, möchten Sie möglicherweise die verschiedenen Routenprioritäten einrichten. Standardmäßig erstellt EFLOW eine einzige Standardroute pro ehtX-Schnittstelle, die der VM zugewiesen wurde. EFLOW weist die Standardroute einer zufälligen Priorität zu. Wenn alle Schnittstellen mit dem Internet verbunden sind, sind zufällige Prioritäten möglicherweise kein Problem. Wenn jedoch eine der NICs mit einem Offlinenetzwerk verbunden ist, können Sie der Online-NIC eine höhere Priorität als der Offline-NIC einräumen, damit die EFLOW-VM mit dem Internet verbunden wird.

EFLOW verwendet den Routendienst zum Verwalten der Netzwerkrouting-Alternativen. Führen Sie zum Überprüfen der verfügbaren EFLOW-VM-Routen die folgenden Schritte aus:

  1. Öffnen Sie eine PowerShell-Sitzung mit erhöhten Rechten, indem Sie mit Als Administrator ausführen beginnen.

  2. Stellen Sie eine Verbindung mit dem virtuellen EFLOW-Computer her.

    Connect-EflowVm
    
  3. Listen Sie auf der VM alle Netzwerkrouten auf, die auf der EFLOW-VM konfiguriert wurden.

    sudo route
    

    Screenshot: Routingtabelle für die EFLOW-VM

    Tipp

    Die vorherige Abbildung zeigt die Routenbefehlsausgabe mit den beiden zugewiesenen NICs (eth0 und eth1). Der virtuelle Computer erstellt zwei verschiedene Standardzielregeln mit unterschiedlichen Metriken. Ein niedrigerer Metrikwert hat eine höhere Priorität. Diese Routingtabelle variiert je nach dem in den vorhergehenden Schritten konfigurierten Netzwerkszenario.

Konfiguration von statischen Routen

Bei jedem Start der EFLOW-VM erstellen die Netzwerkdienste alle Routen neu, und jede zuvor zugewiesene Priorität könnte sich ändern. Zur Umgehung dieses Problems können Sie bei jedem Start der EFLOW-VM die gewünschte Priorität für jede Route zuweisen. Sie können einen Dienst erstellen, der bei jedem VM-Start ausgeführt wird und mithilfe des Befehls route die gewünschten Routenprioritäten festlegt.

Erstellen Sie zuerst ein Bash-Skript, das die erforderlichen Befehle zum Festlegen der Routen ausführt. Beispielsweise hat die EFLOW-VM entsprechend dem weiter oben erwähnten Netzwerkszenario zwei NICs (Offline- und Onlinenetzwerke). NIC eth0 ist über die Gateway-IP „xxx.xxx.xxx.xxx“ verbunden. NIC eth1 ist über die Gateway-IP „yyy.yyy.yyy.yyy“ verbunden.

Das folgende Skript setzt die Standardrouten für eth0 und „*eth1“ zurück, und fügt sie dann mit der gewünschten <Zahlen>metrik hinzu. Denken Sie daran, dass ein niedrigerer Metrikwert höhere Priorität hat.

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

Sie können mithilfe des vorherigen Skripts Ihr eigenes benutzerdefiniertes Skript erstellen, das für Ihr Netzwerkszenario spezifisch ist. Nachdem das Skript definiert wurde, speichern Sie es, und weisen Sie die Ausführungsberechtigung zu. Wenn der Skriptname beispielsweise route-setup.sh lautet, können Sie die Ausführungsberechtigung mithilfe des Befehls sudo chmod +x route-setup.sh zuweisen. Sie können testen, ob das Skript einwandfrei funktioniert, indem Sie es mithilfe des Befehls sudo sh ./route-setup.sh manuell ausführen und dann die Routingtabelle mithilfe des sudo route Befehls überprüfen.

Der letzte Schritt besteht darin, einen Linux-Dienst zu erstellen, der beim Start ausgeführt wird und das Bash-Skript zum Festlegen der Routen ausführt. Sie müssen eine systemd-Einheitsdatei erstellen, um den Dienst zu laden. Im Folgenden finden Sie ein Beispiel für diese Datei.

[Unit]
after=network

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

[Install]
WantedBy=default.target

Wenn Sie überprüfen möchten, ob der Dienst funktioniert, starten Sie die EFLOW-VM (Stop-EflowVm und Start-EflowVm) und dann Connect-EflowVm neu, um eine Verbindung mit der VM herzustellen. Listen Sie die Routen mithilfe von sudo route auf, und überprüfen Sie, ob sie korrekt sind. Sie sollten die neuen Standardregeln mit der zugewiesenen Metrik anzeigen können.

Nächste Schritte

Führen Sie die Schritte in Konfigurieren von Netzwerken für Azure IoT Edge für Linux unter Windows aus, um zu überprüfen, ob Ihre Netzwerkkonfigurationen richtig angewendet wurden.