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: Ikona tak IoT Edge 1.1

Ważne

Data zakończenia wsparcia usługi IoT Edge 1.1 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 usługi IoT Edge, zobacz Aktualizowanie usługi IoT Edge.

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

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

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

    Skrypty instalacyjne usługi 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 jest jednorazowym procesem konfigurowania urządzenia usługi IoT Edge podczas pierwszej konfiguracji. Te same połączenia są również wymagane podczas aktualizowania środowiska uruchomieniowego usługi IoT Edge.

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

    Usługa IoT Edge odpowiada za komunikację z usługą 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 jest jednorazowym procesem konfigurowania urządzenia usługi IoT Edge podczas pierwszej konfiguracji.

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

    Demon usługi IoT Edge uruchamia początkowo moduł edgeAgent. Następnie moduł edgeAgent pobiera manifest wdrożenia z usługi IoT Hub i uruchamia wszystkie pozostałe moduły. Aby agent usługi IoT Edge nawiązał początkowe połączenie z usługą 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 jest jednorazowym procesem konfigurowania urządzenia usługi IoT Edge podczas 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 usługi IoT Edge z usługą 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żda nowa aktualizacja modułu lub wdrożenia utrzymuje możliwość komunikowania się 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 usługi 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 w ramach hosta serwera proxy o następującym formacie: user:password@proxy_host.

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

Instalowanie usługi IoT Edge za pośrednictwem serwera proxy

Niezależnie od tego, czy urządzenie usługi 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 usługi IoT Edge za pośrednictwem serwera proxy.

Urządzenia z systemem Linux

Jeśli instalujesz środowisko uruchomieniowe usługi 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 usługi IoT Edge dla systemu Linux w systemie Windows

Jeśli instalujesz środowisko uruchomieniowe usługi IoT Edge przy użyciu usługi IoT Edge dla systemu Linux w systemie Windows, usługa 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 usługi IoT Edge na urządzeniu z systemem Windows, musisz przejść przez serwer proxy dwa razy. 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.

Poniższe kroki przedstawiają 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, aby pobrać pliki instalacyjne.

    . {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 elementu Invoke-WebRequest.

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

Jeśli masz skomplikowane poświadczenia serwera proxy, których nie można uwzględnić w adresie URL, użyj parametru -ProxyCredential w pliku -InvokeWebRequestParameters. 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 usługi IoT Edge w systemie Windows.

Konfigurowanie usługi IoT Edge i moby

Usługa IoT Edge korzysta z dwóch demonów działających na urządzeniu usługi IoT Edge. Demon Moby wysyła żądania internetowe do ściągnięcia obrazów kontenerów z rejestrów kontenerów. Demon usługi IoT Edge wysyła żądania internetowe do komunikacji z usługą IoT Hub.

Zarówno demony Moby, jak i demony usługi IoT Edge muszą być skonfigurowane tak, aby używały serwera proxy do bieżącej funkcjonalności urządzenia. Ten krok odbywa się na urządzeniu usługi 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 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ł, który ma zastosowanie do systemu operacyjnego urządzenia usługi IoT Edge:

Demon usługi IoT Edge

Demon usługi 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 usługi IoT Edge zawsze używa protokołu HTTPS do wysyłania żądań do usługi IoT Hub.

Linux

Otwórz edytor w terminalu, aby skonfigurować demona usługi 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ę usługi IoT Edge.

sudo systemctl daemon-reload

Uruchom ponownie usługę 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 usługi IoT Edge dla systemu Linux w systemie Windows

Zaloguj się do usługi 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 usługi IoT Edge.

System Windows z użyciem 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 i portem serwera proxy.

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

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

Restart-Service iotedge

Konfigurowanie agenta usługi IoT Edge

Agent usługi IoT Edge jest pierwszym modułem do uruchomienia na dowolnym urządzeniu usługi IoT Edge. Jest uruchamiany po raz pierwszy na podstawie informacji w pliku konfiguracji usługi IoT Edge. Następnie agent usługi IoT Edge łączy się z usługą 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 usługi IoT Edge podczas początkowej konfiguracji urządzenia.

  1. Otwórz plik config.yaml na urządzeniu usługi 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, dlatego potrzebne są uprawnienia administracyjne, aby uzyskać do niego dostęp. W systemach 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 usługi Edge. Definicja agenta usługi 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 usługi IoT Edge domyślnie używa protokołu AMQP do komunikacji z usługą IoT Hub. Niektóre serwery proxy blokują porty AMQP. Jeśli tak jest, należy również skonfigurować agenta edgeAgent do używania protokołu AMQP za pośrednictwem protokołu WebSocket. Dodaj drugą zmienną środowiskową.

    UpstreamProtocol: "AmqpWs"
    

    edgeAgent definicja ze zmiennymi środowiskowymi

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

    • 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 usługi IoT Edge domyślnie używa protokołu AMQP do komunikacji z usługą IoT Hub. Niektóre serwery proxy blokują porty AMQP. Jeśli tak jest, należy również skonfigurować agenta 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 . W przeciwnym razie należy ponownie utworzyć kontener.

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

Konfigurowanie manifestów wdrożenia

Po skonfigurowaniu urządzenia usługi IoT Edge do pracy z serwerem proxy należy kontynuować deklarowanie zmiennej środowiskowej HTTPS_PROXY w przyszłych manifestach wdrożenia. Manifesty wdrażania można edytować przy użyciu kreatora witryny 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 usługą 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 usługi IoT Hub, takie jak magazyn obiektów blob, muszą mieć zmienną HTTPS_PROXY określoną w pliku manifestu wdrożenia.

Poniższa procedura ma zastosowanie w całym życiu urządzenia usługi IoT Edge.

Azure Portal

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

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

Konfiguruj zaawansowane ustawienia środowiska uruchomieniowego Edge

Dodaj zmienną środowiskową https_proxy zarówno do definicji modułu usługi IoT Edge, jak i agenta usługi IoT Edge. Jeśli w pliku konfiguracji na urządzeniu usługi IoT Edge dołączono zmienną środowiskową UpstreamProtocol , dodaj to również do definicji modułu agenta usługi 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ń usługi IoT Edge przy użyciu szablonów w programie 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 usługi IoT Edge dołączono zmienną środowiskową UpstreamProtocol , dodaj to również do definicji modułu agenta usługi 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 szyfrowany protokołem 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 usługi 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 usługi 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 usługi IoT Edge, aby komunikowało 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 usługę IoT Edge, skontaktuj się z dostawcą serwera proxy.

W pełni kwalifikowane nazwy domen (FQDN) miejsc docelowych, z którymi komunikuje się usługa IoT Edge

Jeśli serwer proxy ma zaporę, która wymaga listy dozwolonych wszystkich nazw FQDN na potrzeby łączności z Internetem, zapoznaj się z listą Zezwalaj na połączenia z urządzeń usługi IoT Edge, aby określić, które nazwy FQDN do dodania.

Następne kroki

Dowiedz się więcej o rolach środowiska uruchomieniowego usługi 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