Azure IoT Edge configureren voor Linux in Windows op een DMZ
Van toepassing op: IoT Edge 1.5 IoT Edge 1.4
Belangrijk
IoT Edge 1.5 LTS en IoT Edge 1.4 LTS worden ondersteund releases. IoT Edge 1.4 LTS eindigt op 12 november 2024. Raadpleeg IoT Edge bijwerken als u een eerdere versie hebt.
In dit artikel wordt beschreven hoe u de virtuele machine (VM) van Azure IoT Edge voor Linux (EFLOW) configureert ter ondersteuning van meerdere netwerkinterfacekaarten (NIC's) en verbinding maakt met meerdere netwerken. Door meerdere NIC-ondersteuning in te schakelen, kunnen toepassingen die worden uitgevoerd op de EFLOW-VM communiceren met apparaten die zijn verbonden met het offlinenetwerk, terwijl IoT Edge gegevens naar de cloud verzendt.
Vereisten
- Een Windows-apparaat waarop EFLOW al is ingesteld. Zie Een IoT Edge voor Linux op een Windows-apparaat maken en inrichten met behulp van symmetrische sleutels voor meer informatie over de installatie en configuratie van EFLOW.
- Een virtuele switch verschilt van de standaardoptie die tijdens de EFLOW-installatie wordt gebruikt. Zie Een virtuele switch maken voor Azure IoT Edge voor Linux in Windows voor meer informatie over het maken van een virtuele switch.
Industrieel scenario
Industrial IoT overschrijft het tijdperk van it-technologie (IT) en operationele technologie (OT) convergentie. Het maken van traditionele OT-assets met IT-technologieën betekent echter ook een grotere blootstelling aan cyberaanvallen. Dit scenario is een van de belangrijkste redenen waarom meerdere omgevingen zijn ontworpen met behulp van gedemilitariseerde zones, ook wel bekend als DMZ's.
Stel dat u een werkstroomscenario hebt waarin u een netwerkconfiguratie hebt onderverdeeld in twee verschillende netwerken of zones. In de eerste zone hebt u mogelijk een beveiligd netwerk gedefinieerd als het offlinenetwerk. Het offlinenetwerk heeft geen internetverbinding en is beperkt tot interne toegang. In de tweede zone hebt u mogelijk een gedemilitariseerde zone (DMZ), waarin u mogelijk een aantal apparaten hebt met beperkte internetverbinding. Wanneer u de werkstroom verplaatst die wordt uitgevoerd op de EFLOW-VM, hebt u mogelijk problemen met het openen van de verschillende netwerken, omdat de EFLOW-VM standaard slechts één NIC heeft gekoppeld.
In dit scenario hebt u een omgeving met sommige apparaten, zoals programmeerbare logische controllers (PLC's) of open OPC UA-compatibele apparaten (Platform Communications Unified Architecture) die zijn verbonden met het offlinenetwerk en wilt u alle gegevens van de apparaten uploaden naar Azure met behulp van de OPC Publisher-module die wordt uitgevoerd op de EFLOW-VM.
Aangezien het EFLOW-hostapparaat en de PLC- of OPC UA-apparaten fysiek zijn verbonden met het offlinenetwerk, kunt u de Azure IoT Edge voor Linux op Windows virtuele meerdere NIC-configuraties gebruiken om de EFLOW-VM te verbinden met het offlinenetwerk. Met behulp van een externe virtuele switch kunt u de EFLOW-VM verbinden met het offlinenetwerk en rechtstreeks communiceren met andere offlineapparaten.
Voor het andere netwerk is het EFLOW-hostapparaat fysiek verbonden met de DMZ (onlinenetwerk) met internet- en Azure-connectiviteit. Met behulp van een interne of externe switch kunt u de EFLOW-VM verbinden met Azure IoT Hub met behulp van IoT Edge-modules en de informatie uploaden die door de offlineapparaten via de offline-NIC wordt verzonden.
Scenariooverzicht
Beveiligd netwerk:
- Geen internetverbinding - toegang beperkt.
- PC's of apparaten die compatibel zijn met UPC UA zijn verbonden.
- EFLOW-VM verbonden met een externe virtuele switch.
DMZ:
- Internetverbinding: Azure-verbinding is toegestaan.
- EFLOW-VM die is verbonden met Azure IoT Hub, met behulp van een interne/externe virtuele switch.
- OPC Publisher die wordt uitgevoerd als een module in de EFLOW-VM die wordt gebruikt voor het publiceren van gegevens naar Azure.
Virtuele switches van VM-netwerk configureren
De volgende stappen zijn specifiek voor het netwerk dat in het voorbeeldscenario wordt beschreven. Zorg ervoor dat de gebruikte virtuele switches en de configuraties die worden gebruikt, zijn afgestemd op uw netwerkomgeving.
Notitie
Bij de stappen in dit artikel wordt ervan uitgegaan dat de EFLOW-VM is geïmplementeerd met een externe virtuele switch die is verbonden met het beveiligde netwerk (offline). U kunt de volgende stappen wijzigen in de specifieke netwerkconfiguratie die u wilt bereiken. Zie Azure IoT Edge voor Linux in Windows virtual multiple NIC-configuraties voor meer informatie over EFLOW-ondersteuning voor meerdere NIC's.
Als u het inrichten van de EFLOW-VM wilt voltooien en met Azure wilt communiceren, moet u een andere NIC toewijzen die is verbonden met het DMZ-netwerk (online).
Voor dit scenario wijst u een externe virtuele switch toe die is verbonden met het DMZ-netwerk. Zie Een virtuele switch maken voor virtuele Hyper-V-machines voor meer informatie.
Voer de volgende stappen uit om een externe virtuele switch te maken:
- Open Hyper-V-beheer.
- Selecteer Virtual Switch Manager in Acties.
- Selecteer in Virtuele switches de optie Nieuwe virtuele netwerkswitch.
- Kies Extern type en selecteer Vervolgens Virtuele switch maken.
- Voer een naam in die het beveiligde netwerk vertegenwoordigt. Bijvoorbeeld OnlineOPCUA.
- Selecteer onder Verbindingstype het externe netwerk en kies vervolgens de netwerkadapter die is verbonden met uw DMZ-netwerk.
- Selecteer Toepassen.
Zodra de externe virtuele switch is gemaakt, moet u deze aan de EFLOW-VM koppelen met behulp van de volgende stappen. Als u meerdere NIC's wilt koppelen, raadpleegt u EFLOW Multiple NIC's.
Voor de aangepaste nieuwe externe virtuele switch die u hebt gemaakt, gebruikt u de volgende PowerShell-opdrachten om:
Koppel de switch aan uw EFLOW-VM.
Add-EflowNetwork -vswitchName "OnlineOPCUA" -vswitchType "External"
Stel een statisch IP-adres in.
Add-EflowVmEndpoint -vswitchName "OnlineOPCUA" -vEndpointName "OnlineEndpoint" -ip4Address 192.168.0.103 -ip4PrefixLength 24 -ip4GatewayAddress 192.168.0.1
Als u klaar bent, hebt u de OnlineOPCUA-switch toegewezen aan de EFLOW-VM. Gebruik de volgende stappen om de bijlage met meerdere NIC's te controleren:
Open een PowerShell-sessie met verhoogde bevoegdheid door te beginnen met Uitvoeren als administrator.
Maak verbinding met de virtuele EFLOW-machine.
Connect-EflowVm
Zodra u zich in uw VIRTUELE machine bevindt, vermeldt u alle netwerkinterfaces die zijn toegewezen aan de virtuele EFLOW-machine.
ifconfig
Controleer de IP-configuratie en controleer of u de eth0-interface (verbonden met het beveiligde netwerk) en de eth1-interface (verbonden met het DMZ-netwerk) ziet.
VM-netwerkroutering configureren
Wanneer u de functie EFLOW meerdere NIC's gebruikt, kunt u de verschillende routeprioriteiten instellen. Standaard maakt EFLOW één standaardroute per ehtX-interface die is toegewezen aan de VIRTUELE machine. EFLOW wijst de standaardroute een willekeurige prioriteit toe. Als alle interfaces zijn verbonden met internet, zijn willekeurige prioriteiten mogelijk geen probleem. Als een van de NIC's echter is verbonden met een offlinenetwerk , kunt u prioriteit geven aan de online-NIC via de offline-NIC om de EFLOW-VM verbinding te laten maken met internet.
EFLOW gebruikt de routeservice om de alternatieven voor netwerkroutering te beheren. Gebruik de volgende stappen om de beschikbare EFLOW-VM-routes te controleren:
Open een PowerShell-sessie met verhoogde bevoegdheid door te beginnen met Uitvoeren als administrator.
Maak verbinding met de virtuele EFLOW-machine.
Connect-EflowVm
Zodra u zich in uw virtuele machine bevindt, vermeldt u alle netwerkroutes die zijn geconfigureerd in de virtuele EFLOW-machine.
sudo route
Tip
In de vorige afbeelding ziet u de uitvoer van de routeopdracht met de twee toegewezen NIC's (eth0 en eth1). De virtuele machine maakt twee verschillende standaardregels voor bestemmingen met verschillende metrische gegevens. Een lagere metrische waarde heeft een hogere prioriteit. Deze routeringstabel is afhankelijk van het netwerkscenario dat in de vorige stappen is geconfigureerd.
Configuratie van statische routes
Telkens wanneer de EFLOW-VM wordt gestart, worden alle routes opnieuw gemaakt door de netwerkservices en kan elke eerder toegewezen prioriteit worden gewijzigd. Als u dit probleem wilt omzeilen, kunt u de gewenste prioriteit toewijzen voor elke route telkens wanneer de EFLOW-VM wordt gestart. U kunt een service maken die wordt uitgevoerd op elke VM-opstartbewerking en de route
opdracht gebruikt om de gewenste routeprioriteiten in te stellen.
Maak eerst een bash-script waarmee de benodigde opdrachten worden uitgevoerd om de routes in te stellen. Als u bijvoorbeeld het eerder genoemde netwerkscenario volgt, heeft de EFLOW-VM twee NIC's (offline- en onlinenetwerken). NIC eth0 is verbonden met behulp van het IP-adres van de gateway xxx.xxx.xxx.xxx. NIC eth1 is verbonden met behulp van de gateway IP jjyy.y.yyy.yyy.
Met het volgende script worden de standaardroutes voor zowel eth0 als *eth1 opnieuw ingesteld, waarna de routes worden toegevoegd met de gewenste <numerieke> meetwaarde. Houd er rekening mee dat een lagere metrische waarde een hogere prioriteit heeft.
#!/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>
U kunt het vorige script gebruiken om uw eigen aangepaste script te maken dat specifiek is voor uw netwerkscenario. Zodra het script is gedefinieerd, slaat u het op en wijst u de machtiging uitvoeren toe. Als de scriptnaam bijvoorbeeld is route-setup.sh, kunt u de machtiging uitvoeren toewijzen met behulp van de opdracht sudo chmod +x route-setup.sh
. U kunt testen of het script correct werkt door het handmatig uit te voeren met behulp van de opdracht sudo sh ./route-setup.sh
en vervolgens de routeringstabel te controleren met behulp van de sudo route
opdracht.
De laatste stap is het maken van een Linux-service die wordt uitgevoerd bij het opstarten en het bash-script uitvoert om de routes in te stellen. U moet een systeemeenheidbestand maken om de service te laden. Hier volgt een voorbeeld van dat bestand.
[Unit]
after=network
[Service]
Type=simple
ExecStart=/bin/bash /home/iotedge-user/route-setup.sh
[Install]
WantedBy=default.target
Als u wilt controleren of de service werkt, start u de EFLOW-VM (Stop-EflowVm
& Start-EflowVm
) Connect-EflowVm
opnieuw op en maakt u verbinding met de VIRTUELE machine. Vermeld de routes met behulp van sudo route
en controleer of ze juist zijn. U moet de nieuwe standaardregels kunnen zien met de toegewezen metrische gegevens.
Volgende stappen
Volg de stappen in Netwerken configureren voor Azure IoT Edge voor Linux in Windows om te controleren of uw netwerkconfiguraties correct zijn toegepast.