Konfigurieren von Azure IoT Edge für Linux unter Windows auf einem DMZ
Gilt für: IoT Edge 1.4
Wichtig
Azure IoT Edge 1.5 LTS und IoT Edge 1.4 sind unterstützte Releases. IoT Edge 1.4 LTS erreicht das Dienstende am 12. November 2024. 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
- Ein mit EFLOW bereits eingerichtetes Windows-Gerät. Weitere Informationen zur EFLOW-Installation und -Konfiguration finden Sie unter Erstellen und Bereitstellen eines IoT Edge für Linux unter Windows-Geräts mithilfe von symmetrischen Schlüsseln.
- Ein anderer virtueller Switch als der Standardswitch, der während der EFLOW-Installation verwendet wurde. Weitere Informationen zum Erstellen eines virtuellen Switches finden Sie unter Erstellen eines virtuellen Switches für Azure IoT Edge für Linux unter Windows.
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.
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:
- Öffnen Sie den Hyper-V-Manager.
- Wählen Sie in Aktionen die Option Virtual Switch Manager (Manager für virtuelle Switches) aus.
- Wählen Sie unter Virtuelle Switches die Option Neuer virtueller Netzwerkswitch aus.
- Wählen Sie den Typ Extern und dann Virtuellen Switch erstellen aus.
- Geben Sie einen Namen ein, der das sichere Netzwerk darstellt. Beispiel: OnlineOPCUA.
- Wählen Sie unter Verbindungstyp die Option Externes Netzwerk und dann den mit Ihrem DMZ-Netzwerk verbundenen Netzwerkadapter aus.
- 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:
Anfügen des Switches an Ihre EFLOW-VM:
Add-EflowNetwork -vswitchName "OnlineOPCUA" -vswitchType "External"
Festlegen einer statischen IP-Adresse:
Add-EflowVmEndpoint -vswitchName "OnlineOPCUA" -vEndpointName "OnlineEndpoint" -ip4Address 192.168.0.103 -ip4PrefixLength 24 -ip4GatewayAddress 192.168.0.1
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:
Öffnen Sie eine PowerShell-Sitzung mit erhöhten Rechten, indem Sie mit Als Administrator ausführen beginnen.
Stellen Sie eine Verbindung mit dem virtuellen EFLOW-Computer her.
Connect-EflowVm
Listen Sie auf der VM alle Netzwerkschnittstellen auf, die der EFLOW-VM zugewiesen wurden.
ifconfig
Ü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.
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:
Öffnen Sie eine PowerShell-Sitzung mit erhöhten Rechten, indem Sie mit Als Administrator ausführen beginnen.
Stellen Sie eine Verbindung mit dem virtuellen EFLOW-Computer her.
Connect-EflowVm
Listen Sie auf der VM alle Netzwerkrouten auf, die auf der EFLOW-VM konfiguriert wurden.
sudo route
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.