Udostępnij przez


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

Ważne

Obsługiwana wersja usługi IoT Edge 1.5 LTS. Usługa IoT Edge 1.4 LTS kończy się od 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 łączy się z siecią korzystającą z serwera proxy, skonfiguruj środowisko uruchomieniowe usługi IoT Edge do komunikacji 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 opisano cztery kroki konfigurowania urządzenia usługi IoT Edge i zarządzania nim za serwerem proxy:

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

    Skrypty instalacyjne usługi IoT Edge ściągają pakiety i pliki z Internetu, dzięki czemu urządzenie komunikuje się za pośrednictwem serwera proxy w celu wysłania tych żądań. 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 obsługuje komunikację z usługą IoT Hub. Środowisko uruchomieniowe kontenera zarządza kontenerami i 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. Ręcznie skonfiguruj zmienne środowiskowe modułu edgeAgent na urządzeniu, aby agent usługi IoT Edge 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 zachowaj 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 kroków opisanych w tym artykule zapoznaj się z adresem URL serwera proxy.

Adresy URL serwera proxy używają następującego formatu: 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 zawsze używają protokołu HTTP do nawiązania połączenia z serwerem proxy.

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

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

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, uzyskaj 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 uzyskać dostęp do pakietu instalacyjnego przy użyciu serwera proxy. 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.

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, środowisko uruchomieniowe usługi IoT Edge jest instalowane 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 pobiera niezbędne składniki podczas instalacji. 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, 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 poświadczenia serwera proxy są złożone i nie można ich 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.

Konfigurowanie usługi IoT Edge i moby

IoT Edge używa dwóch demonów działających na urządzeniu IoT Edge. Demon Moby ściąga obrazy kontenerów z rejestrów kontenerów. Demon usługi IoT Edge komunikuje się z usługą IoT Hub.

Skonfiguruj zarówno demony Moby, jak i IoT Edge, aby używały serwera proxy do ciągłego działania urządzeń. Wykonaj ten krok na urządzeniu usługi IoT Edge podczas początkowej konfiguracji.

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, dlatego ustaw parametr 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.

Linuxa

W terminalu otwórz edytor, 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

Ponownie uruchom systemowe usługi IoT Edge, aby zastosować zmiany do obu demonów.

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. Sprawdź, czy [agent] sekcja nie ma 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 zmiennych środowiskowych 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 komunikowania się 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 wprowadzone zmiany.

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

    sudo docker rm -f edgeAgent
    
  9. Środowisko uruchomieniowe usługi IoT Edge odtwarza 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 IoT Edge do współ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 utrzymywać połączenie z usługą IoT Hub. Jeśli usuniesz informacje o serwerze proxy z modułu edgeAgent, jedynym sposobem na ponowne nawiązanie połączenia jest edytowanie pliku konfiguracyjnego na urządzeniu, jak opisano w poprzedniej sekcji.

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

Ta procedura jest stosowana przez cały czas użytkowania urządzenia 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.

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łów usługi IoT Edge, jak i agenta usługi IoT Edge . Jeśli dołączysz zmienną środowiskową UpstreamProtocol do pliku konfiguracji na urządzeniu usługi IoT Edge, dodaj ją 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> swoją wartością.

Użyj następującego formatu JSON:

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

W przypadku uwzględnionych zmiennych środowiskowych definicja modułu 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 config.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"
    }
}

Współpraca z serwerami proxy analizującymi ruch

Niektóre serwery proxy, takie jak Zscaler , mogą sprawdzać ruch szyfrowany protokołem TLS. Podczas inspekcji ruchu tls certyfikat zwracany przez serwer proxy nie jest certyfikatem z serwera docelowego, ale 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 naprawić nieudane nawiązanie połączenia, skonfiguruj zarówno system operacyjny, jak i moduły IoT Edge, aby ufały certyfikatowi głównemu serwera proxy, wykonując następujące kroki.

  1. Skonfiguruj certyfikat proxy w sklepie 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 do komunikacji 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ć wsparcie dla serwera proxy do 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) docelowych miejsc, z którymi komunikuje się IoT Edge.

Jeśli zapora serwera proxy wymaga dodania wszystkich pełnych nazw domen do listy dozwolonych dla łączności z Internetem, zapoznaj się z listą Zezwalaj na połączenia z urządzeń IoT Edge, aby określić, które pełne nazwy domen dodać.

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 w artykule Typowe problemy i rozwiązania dotyczące usługi Azure IoT Edge.