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:Znacznik wyboru usługi IoT Edge 1.5 IoT Edge 1.5 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 LTS. 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.

Urządzenia usługi IoT Edge wysyłają żądania HTTPS do komunikacji z usługą IoT Hub. Jeśli urządzenie połączono 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 zostały przekierowane 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ż potrzebne 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. Skonfiguruj zmienne środowiskowe modułu edgeAgent ręcznie na samym urządzeniu, aby agent usługi IoT Edge mógł nawiązać początkowe połączenie z usługą IoT Hub. 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 musisz instalować ani aktualizować żadnych innych kroków.

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.

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.

Należy skonfigurować zarówno demony Moby, jak i demony usługi IoT Edge, aby używać serwera proxy do bieżących funkcji urządzeń. 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 podobny 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 aziot-edged

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>"

Począwszy od wersji 1.2, usługa IoT Edge używa usługi tożsamości IoT do obsługi aprowizacji urządzeń za pomocą usługi IoT Hub lub IoT Hub Device Provisioning Service. Otwórz edytor w terminalu, aby skonfigurować demona usługi tożsamości IoT.

sudo systemctl edit aziot-identityd

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ć nowe konfiguracje.

sudo systemctl daemon-reload

Uruchom ponownie usługi systemowe usługi IoT Edge, aby zmiany w obu demonach zaczęły obowiązywać.

sudo iotedge system restart

Sprawdź, czy są obecne zmienne środowiskowe i nowa konfiguracja.

systemctl show --property=Environment aziot-edged
systemctl show --property=Environment aziot-identityd

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 sekcja systemu Linux w tym artykule, 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. Ten moduł 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. Manifest deklaruje, które inne moduły powinny zostać wdrożone przez urządzenie.

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

  1. Otwórz plik konfiguracji na urządzeniu usługi IoT Edge: /etc/aziot/config.toml. Aby uzyskać dostęp do pliku konfiguracji, musisz mieć uprawnienia administracyjne. W systemach Linux użyj sudo polecenia przed otwarciem pliku w preferowanym edytorze tekstów.

  2. W pliku konfiguracji znajdź sekcję [agent] zawierającą wszystkie informacje o konfiguracji modułu edgeAgent do użycia podczas uruchamiania. Upewnij się, że [agent] sekcja nie zawiera komentarzy. [agent] Jeśli brakuje sekcji, dodaj ją do pliku config.toml. Definicja agenta usługi IoT Edge zawiera [agent.env] podsekcję, w której można dodać zmienne środowiskowe.

  3. 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.5"
    
    [agent.env]
    # "RuntimeLogLevel" = "debug"
    # "UpstreamProtocol" = "AmqpWs"
    "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. Usuń komentarz z parametru UpstreamProtocol .

    [agent.config]
    image = "mcr.microsoft.com/azureiotedge-agent:1.5"
    
    [agent.env]
    # "RuntimeLogLevel" = "debug"
    "UpstreamProtocol" = "AmqpWs"
    "https_proxy" = "<proxy URL>"
    
  5. 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.5"
    
    [agent.env]
    # "RuntimeLogLevel" = "debug"
    # "UpstreamProtocol" = "AmqpWs"
    "https_proxy" = "<proxy URL>"
    
  6. Ś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.5"
    
    [agent.env]
    # "RuntimeLogLevel" = "debug"
    "UpstreamProtocol" = "AmqpWs"
    "https_proxy" = "<proxy URL>"
    
  7. Zapisz zmiany i zamknij edytor. Zastosuj najnowsze zmiany.

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

    sudo docker rm -f edgeAgent
    
  9. Środowisko uruchomieniowe usługi IoT Edge powinno zostać ponownie utworzony edgeAgent w ciągu minuty. Po ponownym uruchomieniu kontenera edgeAgent użyj docker inspect edgeAgent polecenia , aby sprawdzić, 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 zadeklaruj zmienną środowiskową HTTPS_PROXY w przyszłych manifestach wdrażania. 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ę Środowisko uruchomieniowe Ustawienia w pierwszym kroku kreatora.

Zrzut ekranu przedstawiający sposób konfigurowania zaawansowanych ustawień środowiska uruchomieniowego usługi Edge.

Dodaj zmienną środowiskową https_proxy zarówno do definicji ustawień środowiska uruchomieniowego 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.

Wszystkie inne moduły dodawane do manifestu wdrożenia są zgodne z tym samym wzorcem. Wybierz pozycję Zastosuj, aby zapisać zmiany.

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. Jeśli nie dodano ich w witrynie Azure Portal, dodaj je tutaj do pliku manifestu JSON. Zastąp <proxy URL> ciąg własną wartością.

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.5",
        "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 moduły usługi IoT Edge (w tym edgeAgent i edgeHub) nie ufają certyfikatowi tego serwera proxy, a uzgadnianie protokołu TLS kończy się niepowodzeniem.

Aby rozwiązać problem z niepowodzeniem uzgadniania, skonfiguruj zarówno system operacyjny, jak i moduły usługi IoT Edge, aby ufały certyfikatowi głównemu serwera proxy, wykonując następujące kroki.

  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 zapora serwera proxy wymaga dodania wszystkich nazw FQDN do listy dozwolonych dla łą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 mają zostać dodane.

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