Jak skonfigurować usługę Azure IoT Edge dla systemu Linux w konfiguracji przemysłowych IoT i DMZ systemu Windows

Dotyczy:Znacznik wyboru usługi IoT Edge 1.4 IoT Edge 1.4

Ważne

Obsługiwane są wersje usługi IoT Edge 1.5 LTS i IoT Edge 1.4. Usługa IoT Edge 1.4 LTS kończy się 12 listopada 2024 r. Jeśli korzystasz z wcześniejszej wersji, zobacz aktualizację Azure IoT Edge.

W tym artykule opisano sposób konfigurowania maszyny wirtualnej usługi Azure IoT Edge dla systemu Linux (EFLOW) w celu obsługi wielu kart interfejsów sieciowych i nawiązywania połączenia z wieloma sieciami. Dzięki włączeniu obsługi wielu kart sieciowych aplikacje uruchomione na maszynie wirtualnej EFLOW mogą komunikować się z urządzeniami połączonymi z siecią offline przy użyciu usługi IoT Edge do wysyłania danych do chmury.

Wymagania wstępne

Scenariusz przemysłowy

Przemysłowy IoT wyprzedza epokę zbieżności technologii informatycznych (IT) i technologii operacyjnych (OT). Jednak uczynienie tradycyjnych zasobów OT bardziej inteligentnymi technologiami IT oznacza również większe narażenie na ataki cybernetyczne. Ten scenariusz jest jednym z głównych powodów, dla których wiele środowisk zaprojektowano przy użyciu stref zdemilitaryzowanych, nazywanych również strefami DMZ.

Wyobraź sobie scenariusz przepływu pracy, w którym masz konfigurację sieci podzieloną na dwie różne sieci lub strefy. W pierwszej strefie może istnieć bezpieczna sieć zdefiniowana jako sieć offline. Sieć offline nie ma łączności z Internetem i jest ograniczona do dostępu wewnętrznego. W drugiej strefie może istnieć strefa zdemilitaryzowana (DMZ), w której może istnieć kilka urządzeń z ograniczoną łącznością z Internetem. Podczas przenoszenia przepływu pracy do uruchomienia na maszynie wirtualnej EFLOW mogą wystąpić problemy z dostępem do różnych sieci, ponieważ maszyna wirtualna EFLOW domyślnie ma tylko jedną kartę sieciową.

W tym scenariuszu masz środowisko z niektórymi urządzeniami, takimi jak programowalne kontrolery logiki (PLC) lub otwarte urządzenia ujednolicone architektury komunikacji platformy (OPC UA) połączone z siecią offline i chcesz przekazać wszystkie informacje o urządzeniach do platformy Azure przy użyciu modułu wydawcy OPC uruchomionego na maszynie wirtualnej EFLOW.

Ponieważ urządzenie hosta EFLOW i urządzenia PLC lub OPC UA są fizycznie połączone z siecią offline, można użyć usługi Azure IoT Edge dla systemu Linux w systemie Windows wirtualnych wielu konfiguracji kart sieciowych , aby połączyć maszynę wirtualną EFLOW z siecią offline. Za pomocą zewnętrznego przełącznika wirtualnego można połączyć maszynę wirtualną EFLOW z siecią offline i bezpośrednio komunikować się z innymi urządzeniami w trybie offline.

W przypadku drugiej sieci urządzenie hosta EFLOW jest fizycznie połączone z siecią DMZ (siecią online) z Internetem i łącznością platformy Azure. Za pomocą wewnętrznego lub zewnętrznego przełącznika można połączyć maszynę wirtualną EFLOW z usługą Azure IoT Hub przy użyciu modułów usługi IoT Edge i przekazać informacje wysyłane przez urządzenia w trybie offline za pośrednictwem karty sieciowej trybu offline.

Zrzut ekranu przedstawiający scenariusz EFLOW Industrial IoT przedstawiający maszynę wirtualną EFLOW połączoną z siecią offline i online.

Podsumowanie scenariusza

Bezpieczna sieć:

  • Brak łączności z Internetem — dostęp ograniczony.
  • Połączone urządzenia PLCs lub UPC zgodne z interfejsem użytkownika.
  • Maszyna wirtualna EFLOW połączona przy użyciu zewnętrznego przełącznika wirtualnego.

DMZ:

  • Łączność z Internetem — dozwolone jest połączenie platformy Azure.
  • Maszyna wirtualna EFLOW połączona z usługą Azure IoT Hub przy użyciu wewnętrznego/zewnętrznego przełącznika wirtualnego.
  • Wydawca OPC uruchomiony jako moduł wewnątrz maszyny wirtualnej EFLOW używany do publikowania danych na platformie Azure.

Konfigurowanie przełączników wirtualnych sieci maszyn wirtualnych

Poniższe kroki są specyficzne dla sieci opisanej w przykładowym scenariuszu. Upewnij się, że używane przełączniki wirtualne i używane konfiguracje są zgodne ze środowiskiem sieciowym.

Uwaga

W krokach opisanych w tym artykule przyjęto założenie, że maszyna wirtualna EFLOW została wdrożona z zewnętrznym przełącznikiem wirtualnym połączonym z bezpieczną siecią (offline). Poniższe kroki można zmienić na określoną konfigurację sieci, którą chcesz osiągnąć. Aby uzyskać więcej informacji na temat obsługi wielu kart sieciowych systemu EFLOW, zobacz Azure IoT Edge dla systemu Linux w przypadku konfiguracji wielu kart sieciowych z systemem Windows.

Aby zakończyć aprowizację maszyny wirtualnej EFLOW i komunikować się z platformą Azure, musisz przypisać inną kartę sieciową połączoną z siecią DMZ (online).

W tym scenariuszu przypiszesz zewnętrzny przełącznik wirtualny połączony z siecią DMZ. Aby uzyskać więcej informacji, zobacz Tworzenie przełącznika wirtualnego dla maszyn wirtualnych funkcji Hyper-V.

Aby utworzyć zewnętrzny przełącznik wirtualny, wykonaj następujące kroki:

  1. Otwórz Menedżera funkcji Hyper-V.
  2. W obszarze Akcje wybierz pozycję Menedżer przełącznika wirtualnego.
  3. W obszarze Przełączniki wirtualne wybierz pozycję Nowy przełącznik sieci wirtualnej.
  4. Wybierz typ Zewnętrzny , a następnie wybierz pozycję Utwórz przełącznik wirtualny.
  5. Wprowadź nazwę reprezentującą bezpieczną sieć. Na przykład OnlineOPCUA.
  6. W obszarze typ Połączenie ion wybierz pozycję Sieć zewnętrzna, a następnie wybierz kartę sieciową połączoną z siecią DMZ.
  7. Wybierz Zastosuj.

Po utworzeniu zewnętrznego przełącznika wirtualnego należy dołączyć go do maszyny wirtualnej EFLOW, wykonując następujące kroki. Jeśli musisz dołączyć wiele kart sieciowych, zobacz EFLOW Multiple NICs (Wiele kart sieciowych EFLOW).

W przypadku utworzonego niestandardowego zewnętrznego przełącznika wirtualnego użyj następujących poleceń programu PowerShell:

  1. Dołącz przełącznik do maszyny wirtualnej EFLOW.

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

    Zrzut ekranu przedstawiający pomyślne utworzenie sieci zewnętrznej o nazwie OnlineOPCUA.

  2. Ustaw statyczny adres IP.

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

    Zrzut ekranu przedstawiający pomyślną konfigurację przełącznika OnlineOPCUA.

Po zakończeniu masz przełącznik OnlineOPCUA przypisany do maszyny wirtualnej EFLOW. Aby sprawdzić wiele załączników kart interfejsu sieciowego, wykonaj następujące kroki:

  1. Otwórz sesję programu PowerShell z podwyższonym poziomem uprawnień, zaczynając od polecenia Uruchom jako Administracja istrator.

  2. Połączenie do maszyny wirtualnej EFLOW.

    Connect-EflowVm
    
  3. Po przejściu do maszyny wirtualnej wyświetl listę wszystkich interfejsów sieciowych przypisanych do maszyny wirtualnej EFLOW.

    ifconfig
    
  4. Przejrzyj konfigurację adresu IP i sprawdź, czy widzisz interfejs eth0 (połączony z bezpieczną siecią) i interfejs eth1 (połączony z siecią DMZ).

    Zrzut ekranu przedstawiający konfigurację adresów IP wielu kart sieciowych połączonych z dwiema różnymi sieciami.

Konfigurowanie routingu sieciowego maszyny wirtualnej

W przypadku korzystania z funkcji wielu kart sieciowych EFLOW warto skonfigurować różne priorytety tras. Domyślnie platforma EFLOW tworzy jedną trasę domyślną na interfejs ehtX przypisany do maszyny wirtualnej. EFLOW przypisuje trasę domyślną losowy priorytet. Jeśli wszystkie interfejsy są połączone z Internetem, losowe priorytety mogą nie być problemem. Jeśli jednak jedna z kart sieciowych jest połączona z siecią offline, może być konieczne nadanie priorytetów karcie sieciowej online za pośrednictwem karty sieciowej trybu offline, aby uzyskać maszynę wirtualną EFLOW połączoną z Internetem.

Usługa EFLOW używa usługi route do zarządzania alternatywami routingu sieciowego. Aby sprawdzić dostępne trasy maszyn wirtualnych EFLOW, wykonaj następujące kroki:

  1. Otwórz sesję programu PowerShell z podwyższonym poziomem uprawnień, zaczynając od polecenia Uruchom jako Administracja istrator.

  2. Połączenie do maszyny wirtualnej EFLOW.

    Connect-EflowVm
    
  3. Po przejściu do maszyny wirtualnej wyświetl listę wszystkich tras sieciowych skonfigurowanych na maszynie wirtualnej EFLOW.

    sudo route
    

    Zrzut ekranu przedstawiający tabelę routingu dla maszyny wirtualnej EFLOW.

    Napiwek

    Na poprzedniej ilustracji przedstawiono dane wyjściowe polecenia trasy z przypisanymi dwiema kartami sieciowymi (eth0 i eth1). Maszyna wirtualna tworzy dwie różne domyślne reguły miejsc docelowych z różnymi metrykami. Niższa wartość metryki ma wyższy priorytet. Ta tabela routingu będzie się różnić w zależności od scenariusza sieci skonfigurowanego w poprzednich krokach.

Konfiguracja tras statycznych

Za każdym razem, gdy uruchamia się maszyna wirtualna EFLOW, usługi sieciowe ponownie odtwarzają wszystkie trasy, a każdy wcześniej przypisany priorytet może ulec zmianie. Aby obejść ten problem, możesz przypisać żądany priorytet dla każdej trasy przy każdym uruchomieniu maszyny wirtualnej EFLOW. Możesz utworzyć usługę, która jest wykonywana na każdym rozruchu maszyny wirtualnej i używa route polecenia , aby ustawić żądane priorytety trasy.

Najpierw utwórz skrypt powłoki bash, który wykonuje niezbędne polecenia, aby ustawić trasy. Na przykład zgodnie ze wspomnianym wcześniej scenariuszem sieciowym maszyna wirtualna EFLOW ma dwie karty sieciowe (w trybie offline i sieci online). Karta sieciowa eth0 jest połączona przy użyciu xxx.xxx.xxx.xxx ip bramy. Karta sieciowa eth1 jest połączona przy użyciu adresu IP bramy y.y.yyyy.

Poniższy skrypt resetuje trasy domyślne zarówno dla eth0 , jak i *eth1, a następnie dodaje trasy z żądaną <metryki liczb> . Pamiętaj, że niższa wartość metryki ma wyższy priorytet.

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

Możesz użyć poprzedniego skryptu, aby utworzyć własny skrypt niestandardowy specyficzny dla danego scenariusza sieci. Po zdefiniowaniu skryptu zapisz go i przypisz uprawnienie do wykonywania. Jeśli na przykład nazwa skryptu to route-setup.sh, możesz przypisać uprawnienie do wykonywania przy użyciu polecenia sudo chmod +x route-setup.sh. Możesz sprawdzić, czy skrypt działa poprawnie, wykonując go ręcznie przy użyciu polecenia sudo sh ./route-setup.sh , a następnie sprawdzając tabelę routingu sudo route przy użyciu polecenia .

Ostatnim krokiem jest utworzenie usługi systemu Linux uruchamianej podczas uruchamiania i wykonanie skryptu powłoki bash w celu ustawienia tras. Aby załadować usługę, musisz utworzyć plik jednostkowy systemowy . Poniżej przedstawiono przykład tego pliku.

[Unit]
after=network

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

[Install]
WantedBy=default.target

Aby sprawdzić, czy usługa działa, uruchom ponownie maszynę wirtualną EFLOW (Stop-EflowVm i Start-EflowVm), a następnie Connect-EflowVm połącz się z maszyną wirtualną. Wyświetl listę tras przy użyciu sudo route i sprawdź, czy są one poprawne. Powinna być widoczna nowa reguła domyślna z przypisaną metryki.

Następne kroki

Wykonaj kroki opisane w temacie Jak skonfigurować sieć dla usługi Azure IoT Edge dla systemu Linux w systemie Windows , aby sprawdzić, czy konfiguracje sieci zostały zastosowane poprawnie.