Udostępnij za pośrednictwem


Configure an IoT Edge device to communicate through a proxy server (Konfigurowanie urządzenia usługi IoT Edge pod kątem komunikacji za pośrednictwem serwera proxy)

Dotyczy ikony:tak IoT Edge 1.1

Ważne

IoT Edge 1.1 data zakończenia wsparcia technicznego wynosiła 13 grudnia 2022 r. Zapoznaj się z cyklem życia produktów firmy Microsoft, aby uzyskać informacje na temat sposobu obsługi tego produktu lub interfejsu API albo tej usługi lub technologii. Aby uzyskać więcej informacji na temat aktualizowania do najnowszej wersji IoT Edge, zobacz Update IoT Edge.

IoT Edge urządzenia wysyłają żądania HTTPS do komunikacji z IoT Hub. Jeśli urządzenie jest połączone z siecią korzystającą z serwera proxy, należy skonfigurować środowisko uruchomieniowe IoT Edge do komunikacji za pośrednictwem serwera. Serwery proxy mogą również mieć wpływ na poszczególne moduły IoT Edge, jeśli wysyłają żądania HTTP lub HTTPS, które nie są kierowane przez centrum IoT Edge.

W tym artykule przedstawiono cztery kroki konfigurowania urządzenia IoT Edge za serwerem proxy, a następnie zarządzanie nim:

  1. Instalowanie środowiska uruchomieniowego IoT Edge na urządzeniu

    Skrypty instalacji IoT Edge ściągają pakiety i pliki z Internetu, więc urządzenie musi komunikować się za pośrednictwem serwera proxy, aby wysyłać te żądania. W przypadku urządzeń z systemem Windows skrypt instalacji udostępnia również opcję instalacji w trybie offline.

    Ten krok to jednorazowy proces konfigurowania urządzenia IoT Edge podczas jego pierwszej konfiguracji. Te same połączenia są również wymagane podczas aktualizowania środowiska uruchomieniowego IoT Edge.

  2. Konfigurowanie IoT Edge i środowiska uruchomieniowego kontenera na urządzeniu

    IoT Edge odpowiada za komunikację z IoT Hub. Środowisko uruchomieniowe kontenera jest odpowiedzialne za zarządzanie kontenerami, dlatego komunikuje się z rejestrami kontenerów. Oba te składniki muszą wysyłać żądania internetowe za pośrednictwem serwera proxy.

    Ten krok to jednorazowy proces konfigurowania urządzenia IoT Edge podczas jego pierwszej konfiguracji.

  3. Konfigurowanie właściwości agenta IoT Edge w pliku konfiguracji na urządzeniu

    Demon IoT Edge uruchamia początkowo moduł edgeAgent. Następnie moduł edgeAgent pobiera manifest wdrożenia z IoT Hub i uruchamia wszystkie pozostałe moduły. Aby agent IoT Edge nawiązał początkowe połączenie z IoT Hub, skonfiguruj zmienne środowiskowe modułu edgeAgent ręcznie na samym urządzeniu. Po początkowym połączeniu można zdalnie skonfigurować moduł edgeAgent.

    Ten krok to jednorazowy proces konfigurowania urządzenia IoT Edge podczas jego pierwszej konfiguracji.

  4. Dla wszystkich przyszłych wdrożeń modułów ustaw zmienne środowiskowe dla dowolnego modułu komunikującego się za pośrednictwem serwera proxy

    Po skonfigurowaniu i połączeniu urządzenia IoT Edge z IoT Hub za pośrednictwem serwera proxy należy zachować połączenie we wszystkich przyszłych wdrożeniach modułów.

    Ten krok jest procesem wykonywanym zdalnie, dzięki czemu każdy nowy moduł lub aktualizacja wdrożenia utrzymuje możliwość komunikacji urządzenia za pośrednictwem serwera proxy.

Znajomość adresu URL serwera proxy

Przed rozpoczęciem dowolnego z kroków opisanych w tym artykule musisz znać adres URL serwera proxy.

Adresy URL serwera proxy mają następujący format: protocol://proxy_host:proxy_port.

  • Protokół to HTTP lub HTTPS. Demon platformy Docker może używać dowolnego protokołu, w zależności od ustawień rejestru kontenerów, ale demon IoT Edge i kontenery środowiska uruchomieniowego powinny zawsze używać protokołu HTTP do nawiązywania połączenia z serwerem proxy.

  • Proxy_host jest adresem serwera proxy. Jeśli serwer proxy wymaga uwierzytelniania, możesz podać poświadczenia jako część hosta proxy w następującym formacie: user:password@proxy_host.

  • Proxy_port to port sieciowy, na którym serwer proxy reaguje na ruch sieciowy.

Instalowanie IoT Edge za pośrednictwem serwera proxy

Niezależnie od tego, czy urządzenie IoT Edge działa w systemie Windows, czy Linux, musisz uzyskać dostęp do pakietów instalacyjnych za pośrednictwem serwera proxy. W zależności od systemu operacyjnego wykonaj kroki instalacji środowiska uruchomieniowego IoT Edge za pośrednictwem serwera proxy.

Urządzenia z systemem Linux

Jeśli instalujesz środowisko uruchomieniowe IoT Edge na urządzeniu z systemem Linux, skonfiguruj menedżera pakietów, aby przejść przez serwer proxy w celu uzyskania dostępu do pakietu instalacyjnego. Na przykład skonfiguruj polecenie apt-get, aby używać serwera proxy http. Po skonfigurowaniu menedżera pakietów postępuj zgodnie z instrukcjami w temacie Instalowanie środowiska uruchomieniowego usługi Azure IoT Edge w zwykły sposób.

Urządzenia z systemem Windows korzystające z IoT Edge dla systemu Linux w systemie Windows

Jeśli instalujesz środowisko uruchomieniowe IoT Edge przy użyciu IoT Edge dla systemu Linux w systemie Windows, IoT Edge jest instalowana domyślnie na maszynie wirtualnej z systemem Linux. Nie są wymagane żadne dodatkowe kroki instalacji ani aktualizacji.

Urządzenia z systemem Windows korzystające z kontenerów systemu Windows

Jeśli instalujesz środowisko uruchomieniowe IoT Edge na urządzeniu z systemem Windows, musisz dwukrotnie przejść przez serwer proxy. Pierwsze połączenie pobiera plik skryptu instalatora, a drugie połączenie jest podczas instalacji w celu pobrania niezbędnych składników. Informacje o serwerze proxy można skonfigurować w ustawieniach systemu Windows lub dołączyć informacje o serwerze proxy bezpośrednio w poleceniach programu PowerShell.

W poniższych krokach przedstawiono przykład instalacji systemu Windows przy użyciu argumentu -proxy :

  1. Polecenie Invoke-WebRequest wymaga informacji o serwerze proxy, aby uzyskać dostęp do skryptu instalatora. Następnie polecenie Deploy-IoTEdge wymaga informacji o serwerze proxy do pobrania plików instalacyjnych.

    . {Invoke-WebRequest -proxy <proxy URL> -useb aka.ms/iotedge-win} | Invoke-Expression; Deploy-IoTEdge -proxy <proxy URL>
    
  2. Polecenie Initialize-IoTEdge nie musi przechodzić przez serwer proxy, więc drugi krok wymaga tylko informacji o serwerze proxy dla polecenia Invoke-WebRequest.

    . {Invoke-WebRequest -proxy <proxy URL> -useb aka.ms/iotedge-win} | Invoke-Expression; Initialize-IoTEdge
    

Jeśli masz skomplikowane poświadczenia dla serwera proxy, którego nie można uwzględnić w adresie URL, użyj parametru -ProxyCredential w pliku -InvokeWebRequestParameters. Na przykład

$proxyCredential = (Get-Credential).GetNetworkCredential()
. {Invoke-WebRequest -proxy <proxy URL> -ProxyCredential $proxyCredential -useb aka.ms/iotedge-win} | Invoke-Expression; `
Deploy-IoTEdge -InvokeWebRequestParameters @{ '-Proxy' = '<proxy URL>'; '-ProxyCredential' = $proxyCredential }

Aby uzyskać więcej informacji na temat parametrów serwera proxy, zobacz Invoke-WebRequest. Aby uzyskać więcej informacji na temat parametrów instalacji systemu Windows, zobacz Skrypty programu PowerShell dla IoT Edge w systemie Windows.

Konfigurowanie IoT Edge i Moby

IoT Edge opiera się na dwóch demonach działających na urządzeniu IoT Edge. Demon Moby wysyła żądania internetowe do ściągania obrazów kontenerów z rejestrów kontenerów. Demon IoT Edge wysyła żądania internetowe do komunikacji z IoT Hub.

Zarówno demony Moby, jak i demony IoT Edge muszą być skonfigurowane do używania serwera proxy do bieżących funkcji urządzenia. Ten krok odbywa się na urządzeniu IoT Edge podczas początkowej konfiguracji urządzenia.

Demon Moby

Ponieważ platforma Moby jest oparta na platformie Docker, zapoznaj się z dokumentacją platformy Docker, aby skonfigurować demona Moby ze zmiennymi środowiskowymi. Większość rejestrów kontenerów (w tym rejestrów usług DockerHub i Azure Container Registries) obsługuje żądania HTTPS, więc parametr, który należy ustawić, jest HTTPS_PROXY. Jeśli ściągasz obrazy z rejestru, który nie obsługuje zabezpieczeń warstwy transportu (TLS), należy ustawić parametr HTTP_PROXY .

Wybierz artykuł dotyczący systemu operacyjnego urządzenia IoT Edge:

demon IoT Edge

Demon IoT Edge jest skonfigurowany w podobny sposób do demona Moby. Wykonaj poniższe kroki, aby ustawić zmienną środowiskową dla usługi na podstawie systemu operacyjnego.

Demon IoT Edge zawsze używa protokołu HTTPS do wysyłania żądań do IoT Hub.

Linux

Otwórz edytor w terminalu, aby skonfigurować demona IoT Edge.

sudo systemctl edit iotedge

Wprowadź następujący tekst, zastępując <adres URL> serwera proxy adresem serwera proxy i portem. Następnie zapisz i zamknij.

[Service]
Environment=https_proxy=<proxy URL>

Odśwież menedżera usług, aby pobrać nową konfigurację dla IoT Edge.

sudo systemctl daemon-reload

Uruchom ponownie IoT Edge, aby zmiany zaczęły obowiązywać.

sudo systemctl restart iotedge

Sprawdź, czy zmienna środowiskowa została utworzona, a nowa konfiguracja została załadowana.

systemctl show --property=Environment iotedge

System Windows korzystający z IoT Edge dla systemu Linux w systemie Windows

Zaloguj się do IoT Edge dla systemu Linux na maszynie wirtualnej z systemem Windows:

Connect-EflowVm

Wykonaj te same kroki co w powyższej sekcji systemu Linux, aby skonfigurować demona IoT Edge.

System Windows korzystający z kontenerów systemu Windows

Otwórz okno programu PowerShell jako administrator i uruchom następujące polecenie, aby edytować rejestr przy użyciu nowej zmiennej środowiskowej. Zastąp <adres URL> serwera proxy adresem serwera proxy i portem.

reg add HKLM\SYSTEM\CurrentControlSet\Services\iotedge /v Environment /t REG_MULTI_SZ /d https_proxy=<proxy URL>

Uruchom ponownie IoT Edge, aby zmiany zaczęły obowiązywać.

Restart-Service iotedge

Konfigurowanie agenta IoT Edge

Agent IoT Edge jest pierwszym modułem do uruchomienia na dowolnym urządzeniu IoT Edge. Jest on uruchamiany po raz pierwszy na podstawie informacji w pliku konfiguracji IoT Edge. Następnie agent IoT Edge łączy się z IoT Hub w celu pobrania manifestów wdrożenia, które deklarują, jakie inne moduły powinny zostać wdrożone na urządzeniu.

Ten krok odbywa się raz na urządzeniu IoT Edge podczas początkowej konfiguracji urządzenia.

  1. Otwórz plik config.yaml na urządzeniu IoT Edge. W systemach Linux ten plik znajduje się w lokalizacji /etc/iotedge/config.yaml. W systemach Windows ten plik znajduje się w folderze C:\ProgramData\iotedge\config.yaml. Plik konfiguracji jest chroniony, więc musisz mieć uprawnienia administracyjne, aby uzyskać do niego dostęp. W systemach z systemem Linux użyj sudo polecenia przed otwarciem pliku w preferowanym edytorze tekstów. W systemie Windows otwórz edytor tekstów, taki jak Notatnik, jako administrator, a następnie otwórz plik.

  2. W pliku config.yaml znajdź sekcję specyfikacji modułu agenta edge . Definicja agenta IoT Edge zawiera parametr env, w którym można dodać zmienne środowiskowe.

  3. Usuń nawiasy klamrowe, które są symbolami zastępczymi parametru env, i dodaj nową zmienną w nowym wierszu. Pamiętaj, że wcięcie w języku YAML to dwie spacje.

    https_proxy: "<proxy URL>"
    
  4. Środowisko uruchomieniowe IoT Edge domyślnie używa protokołu AMQP do komunikacji z IoT Hub. Niektóre serwery proxy blokują porty AMQP. Jeśli tak jest, należy również skonfigurować edgeAgent do używania protokołu AMQP za pośrednictwem protokołu WebSocket. Dodaj drugą zmienną środowiskową.

    UpstreamProtocol: "AmqpWs"
    

    edgeAgent definicji ze zmiennymi środowiskowymi

  5. Zapisz zmiany w pliku config.yaml i zamknij edytor. Uruchom ponownie IoT Edge, aby zmiany zaczęły obowiązywać.

    • Systemy Linux i IoT Edge dla systemu Linux w systemie Windows:

      sudo systemctl restart iotedge
      
    • System Windows korzystający z kontenerów systemu Windows:

      Restart-Service iotedge
      
  1. Dodaj parametr https_proxy do sekcji Zmienne środowiskowe i ustaw adres URL serwera proxy jako jego wartość.

    [agent]
    name = "edgeAgent"
    type = "docker"
    
    [agent.config]
    image = "mcr.microsoft.com/azureiotedge-agent:1.4"
    
    [agent.env]
    # "RuntimeLogLevel" = "debug"
    # "UpstreamProtocol" = "AmqpWs"
    "https_proxy" = "<proxy URL>"
    
  2. Środowisko uruchomieniowe IoT Edge domyślnie używa protokołu AMQP do komunikacji z IoT Hub. Niektóre serwery proxy blokują porty AMQP. Jeśli tak jest, należy również skonfigurować edgeAgent do używania protokołu AMQP za pośrednictwem protokołu WebSocket. Usuń komentarz z parametru UpstreamProtocol .

    [agent.config]
    image = "mcr.microsoft.com/azureiotedge-agent:1.4"
    
    [agent.env]
    # "RuntimeLogLevel" = "debug"
    "UpstreamProtocol" = "AmqpWs"
    "https_proxy" = "<proxy URL>"
    
  3. Zapisz zmiany i zamknij edytor. Zastosuj najnowsze zmiany.

    sudo iotedge config apply
    
  4. Sprawdź, czy ustawienia serwera proxy są propagowane przy użyciu docker inspect edgeAgent w Env sekcji . Jeśli nie, kontener musi zostać ponownie utworzony.

    sudo docker rm -f edgeAgent
    
  5. Środowisko uruchomieniowe IoT Edge powinno zostać ponownie utworzony edgeAgent w ciągu minuty. Po edgeAgent ponownym uruchomieniu kontenera sprawdź, docker inspect edgeAgent czy ustawienia serwera proxy są zgodne z plikiem konfiguracji.

Konfigurowanie manifestów wdrażania

Po skonfigurowaniu urządzenia IoT Edge do pracy z serwerem proxy należy kontynuować deklarowanie HTTPS_PROXY zmiennej środowiskowej w przyszłych manifestach wdrażania. Manifesty wdrożenia można edytować za pomocą kreatora Azure Portal lub edytując plik JSON manifestu wdrożenia.

Zawsze konfiguruj dwa moduły środowiska uruchomieniowego edgeAgent i edgeHub, aby komunikować się za pośrednictwem serwera proxy, aby mogły utrzymywać połączenie z IoT Hub. Jeśli usuniesz informacje o serwerze proxy z modułu edgeAgent, jedynym sposobem ponownego opublikowania połączenia jest edytowanie pliku konfiguracji na urządzeniu zgodnie z opisem w poprzedniej sekcji.

Oprócz modułów edgeAgent i edgeHub inne moduły mogą wymagać konfiguracji serwera proxy. Moduły, które muszą uzyskiwać dostęp do zasobów platformy Azure oprócz IoT Hub, takich jak magazyn obiektów blob, muszą mieć zmienną HTTPS_PROXY określoną w pliku manifestu wdrożenia.

Poniższa procedura ma zastosowanie przez cały czas użytkowania urządzenia IoT Edge.

Azure Portal

W przypadku używania kreatora Ustawianie modułów do tworzenia wdrożeń dla urządzeń IoT Edge każdy moduł zawiera sekcję Zmienne środowiskowe, w której można skonfigurować połączenia serwera proxy.

Aby skonfigurować agenta IoT Edge i moduły centrum IoT Edge, wybierz pozycję Ustawienia środowiska uruchomieniowego w pierwszym kroku kreatora.

Konfigurowanie zaawansowanych ustawień środowiska uruchomieniowego usługi Edge

Dodaj zmienną środowiskową https_proxy zarówno do definicji modułu IoT Edge, jak i IoT Edge hub. Jeśli zmienna środowiskowa UpstreamProtocol została dołączona do pliku konfiguracji na urządzeniu IoT Edge, dodaj to również do definicji modułu agenta IoT Edge.

Ustawianie zmiennej środowiskowej https_proxy

Wszystkie inne moduły dodawane do manifestu wdrożenia są zgodne z tym samym wzorcem.

Pliki manifestu wdrożenia JSON

Jeśli tworzysz wdrożenia dla urządzeń IoT Edge przy użyciu szablonów w Visual Studio Code lub ręcznie tworząc pliki JSON, możesz dodać zmienne środowiskowe bezpośrednio do każdej definicji modułu.

Użyj następującego formatu JSON:

"env": {
    "https_proxy": {
        "value": "<proxy URL>"
    }
}

W przypadku uwzględnionych zmiennych środowiskowych definicja modułu powinna wyglądać podobnie do następującego przykładu edgeHub:

"edgeHub": {
    "type": "docker",
    "settings": {
        "image": "mcr.microsoft.com/azureiotedge-hub:1.1",
        "createOptions": "{}"
    },
    "env": {
        "https_proxy": {
            "value": "http://proxy.example.com:3128"
        }
    },
    "status": "running",
    "restartPolicy": "always"
}

Jeśli w pliku confige.yaml na urządzeniu IoT Edge dołącz zmienną środowiskową UpstreamProtocol, dodaj to również do definicji modułu agenta IoT Edge.

"env": {
    "https_proxy": {
        "value": "<proxy URL>"
    },
    "UpstreamProtocol": {
        "value": "AmqpWs"
    }
}

Praca z serwerami proxy inspekcji ruchu

Niektóre serwery proxy, takie jak Zscaler , mogą sprawdzać ruch zaszyfrowany za pomocą protokołu TLS. Podczas inspekcji ruchu tls certyfikat zwrócony przez serwer proxy nie jest certyfikatem z serwera docelowego, ale zamiast tego jest certyfikatem podpisanym przez własny certyfikat główny serwera proxy. Domyślnie certyfikat tego serwera proxy nie jest zaufany przez moduły IoT Edge (w tym edgeAgent i edgeHub), a uzgadnianie protokołu TLS kończy się niepowodzeniem.

Aby rozwiązać ten problem, certyfikat główny serwera proxy musi być zaufany zarówno przez system operacyjny, jak i moduły IoT Edge.

  1. Skonfiguruj certyfikat serwera proxy w magazynie zaufanych certyfikatów głównych systemu operacyjnego hosta. Aby uzyskać więcej informacji na temat sposobu instalowania certyfikatu głównego, zobacz Instalowanie głównego urzędu certyfikacji w magazynie certyfikatów systemu operacyjnego.

  2. Skonfiguruj urządzenie IoT Edge do komunikowania się za pośrednictwem serwera proxy, odwołując się do certyfikatu w pakiecie zaufania. Aby uzyskać więcej informacji na temat konfigurowania pakietu zaufania, zobacz Zarządzanie zaufanym głównym urzędem certyfikacji (pakiet zaufania).

Aby skonfigurować obsługę serwera proxy inspekcji ruchu dla kontenerów, które nie są zarządzane przez IoT Edge, skontaktuj się z dostawcą serwera proxy.

W pełni kwalifikowane nazwy domen (FQDN) miejsc docelowych, które IoT Edge komunikują się z

Jeśli serwer proxy ma zaporę, która wymaga zezwolenia na dodanie wszystkich nazw FQDN na potrzeby łączności z Internetem, zapoznaj się z listą Zezwalaj na połączenia z urządzeń IoT Edge, aby określić, które nazwy FQDN mają zostać dodane.

Następne kroki

Dowiedz się więcej o rolach środowiska uruchomieniowego IoT Edge.

Rozwiązywanie problemów z błędami instalacji i konfiguracji z typowymi problemami i rozwiązaniami dotyczącymi usługi Azure IoT Edge