Dela via


Konfigurera en IoT Edge-enhet för att kommunicera via en proxyserver

Gäller för:Bockmarkering för IoT Edge 1.5 IoT Edge 1.5

Viktigt!

IoT Edge 1.5 LTS är den version som stöds. IoT Edge 1.4 LTS upphör från och med den 12 november 2024. Om du har en tidigare version läser du Uppdatera IoT Edge.

IoT Edge-enheter skickar HTTPS-begäranden för att kommunicera med IoT Hub. Om enheten ansluter till ett nätverk som använder en proxyserver konfigurerar du IoT Edge-körningen så att den kommunicerar via servern. Proxyservrar kan också påverka enskilda IoT Edge-moduler om de gör HTTP- eller HTTPS-begäranden som inte dirigeras via IoT Edge-hubben.

I den här artikeln beskrivs de fyra stegen för att konfigurera och hantera en IoT Edge-enhet bakom en proxyserver:

  1. Installera IoT Edge-körningen på enheten

    IoT Edge-installationsskripten hämtar paket och filer från Internet, så att enheten kommunicerar via proxyservern för att göra dessa begäranden. För Windows-enheter tillhandahåller installationsskriptet även ett offlineinstallationsalternativ.

    Det här steget är en engångsprocess för att konfigurera IoT Edge-enheten när du först konfigurerar den. Du behöver också samma anslutningar när du uppdaterar IoT Edge-körningen.

  2. Konfigurera IoT Edge och containerkörningen på enheten

    IoT Edge hanterar kommunikation med IoT Hub. Containerkörtiden hanterar containrar och kommunicerar med containerregister. Båda dessa komponenter måste göra webbbegäranden via proxyservern.

    Det här steget är en engångsprocess för att konfigurera IoT Edge-enheten när du först konfigurerar den.

  3. Konfigurera IoT Edge-agentegenskaperna i konfigurationsfilen på enheten

    IoT Edge-daemon startar edgeAgent-modulen från början. Sedan hämtar edgeAgent-modulen distributionsmanifestet från IoT Hub och startar alla andra moduler. Konfigurera miljövariablerna för edgeAgent-modulen manuellt på enheten så att IoT Edge-agenten gör den första anslutningen till IoT Hub. Efter den första anslutningen kan du konfigurera edgeAgent-modulen via fjärranslutning.

    Det här steget är en engångsprocess för att konfigurera IoT Edge-enheten när du först konfigurerar den.

  4. För alla framtida moduldistributioner anger du miljövariabler för alla moduler som kommunicerar via proxyn

    När du har konfigurerat och anslutit en IoT Edge-enhet till IoT Hub via proxyservern underhåller du anslutningen i alla framtida moduldistributioner.

    Det här steget är en pågående process som utförs via fjärranslutning så att varje ny modul eller distributionsuppdatering behåller enhetens möjlighet att kommunicera via proxyservern.

Känna till proxy-URL:en

Innan du påbörjar stegen i den här artikeln bör du känna till proxy-URL:en.

Proxy-URL:er använder följande format: protocol://proxy_host:proxy_port.

  • Protokollet är antingen HTTP eller HTTPS. Docker-daemonen kan använda antingen protokoll beroende på dina inställningar för containerregistret, men IoT Edge-daemon- och runtime-containrarna använder alltid HTTP för att ansluta till proxyn.

  • Proxy_host är adressen till proxyservern. Om proxyservern kräver autentisering anger du dina autentiseringsuppgifter som en del av proxyvärden i följande format: user:password@proxy_host.

  • Proxy_port är nätverksporten där proxyn svarar på trafik.

Installera IoT Edge via en proxy

Oavsett om din IoT Edge-enhet körs i Windows eller Linux kan du komma åt installationspaketen via proxyservern. Beroende på ditt operativsystem följer du stegen för att installera IoT Edge-körningen via en proxyserver.

Linux-enheter

Om du installerar IoT Edge-körningen på en Linux-enhet konfigurerar du pakethanteraren för att använda proxyservern för att få åtkomst till installationspaketet. Till exempel Konfigurera apt-get för att använda en http-proxy. När du har konfigurerat pakethanteraren följer du anvisningarna i Installera Azure IoT Edge-körning.

Windows-enheter som använder IoT Edge för Linux i Windows

Om du installerar IoT Edge-körningen med IoT Edge för Linux i Windows installeras IoT Edge-körningen som standard på den virtuella Linux-datorn. Du behöver inte installera eller uppdatera några andra steg.

Windows-enheter som använder Windows-containrar

Om du installerar IoT Edge-körningen på en Windows-enhet måste du gå igenom proxyservern två gånger. Den första anslutningen laddar ned installationsskriptfilen och den andra anslutningen laddar ned nödvändiga komponenter under installationen. Du kan konfigurera proxyinformation i Windows-inställningar eller inkludera din proxyinformation direkt i PowerShell-kommandona.

Följande steg visar ett exempel på en Windows-installation med argumentet -proxy :

  1. Kommandot Invoke-WebRequest behöver proxyinformation för att få åtkomst till installationsskriptet. Sedan behöver kommandot Deploy-IoTEdge proxyinformationen för att ladda ned installationsfilerna.

    . {Invoke-WebRequest -proxy <proxy URL> -useb aka.ms/iotedge-win} | Invoke-Expression; Deploy-IoTEdge -proxy <proxy URL>
    
  2. Kommandot Initialize-IoTEdge behöver inte gå via proxyservern, så det andra steget kräver bara proxyinformation för Invoke-WebRequest.

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

Om dina autentiseringsuppgifter för proxyservern är komplexa och inte kan tas med i URL:en använder du parametern -ProxyCredential i -InvokeWebRequestParameters. Ett exempel:

$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 }

Mer information om proxyparametrar finns i Invoke-WebRequest.

Konfigurera IoT Edge och Moby

IoT Edge använder två daemoner som körs på IoT Edge-enheten. Moby-daemonen hämtar containeravbildningar från containerregister. IoT Edge-daemon kommunicerar med IoT Hub.

Konfigurera både Moby- och IoT Edge-daemonerna för att använda proxyservern för pågående enhetsfunktioner. Utför det här steget på IoT Edge-enheten under den första installationen.

Moby-daemon

Eftersom Moby bygger på Docker kan du läsa Docker-dokumentationen för att konfigurera Moby-daemon med miljövariabler. De flesta containerregister, inklusive DockerHub och Azure Container Registries, stöder HTTPS-begäranden, så ställ in parametern HTTPS_PROXY . Om du hämtar avbildningar från ett register som inte stöder TLS (Transport Layer Security) bör du ange parametern HTTP_PROXY .

Välj den artikel som gäller för IoT Edge-enhetens operativsystem:

IoT Edge-daemon

IoT Edge-daemonen liknar Moby-daemonen. Använd följande steg för att ange en miljövariabel för tjänsten baserat på ditt operativsystem.

IoT Edge-daemonen använder alltid HTTPS för att skicka begäranden till IoT Hub.

Linux

Öppna en redigerare i terminalen för att konfigurera IoT Edge-daemonen.

sudo systemctl edit aziot-edged

Ange följande text och ersätt <proxy-URL:en> med proxyserverns adress och port. Spara och avsluta sedan.

[Service]
Environment="https_proxy=<proxy URL>"

Från och med version 1.2 använder IoT Edge IoT-identitetstjänsten för att hantera enhetsetablering med IoT Hub eller IoT Hub Device Provisioning Service. Öppna en redigerare i terminalen för att konfigurera IoT-identitetstjänstens daemon.

sudo systemctl edit aziot-identityd

Ange följande text och ersätt <proxy-URL:en> med proxyserverns adress och port. Spara och avsluta sedan.

[Service]
Environment="https_proxy=<proxy URL>"

Uppdatera servicehanteraren för att hämta de nya konfigurationerna.

sudo systemctl daemon-reload

Starta om IoT Edge-systemtjänsterna för att tillämpa ändringarna på båda daemonerna.

sudo iotedge system restart

Kontrollera att miljövariablerna och den nya konfigurationen finns.

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

Windows med IoT Edge för Linux i Windows

Logga in på IoT Edge för Linux på en virtuell Windows-dator:

Connect-EflowVm

Följ samma steg som linux-avsnittet i den här artikeln för att konfigurera IoT Edge-daemonen.

Windows med Windows-containrar

Öppna ett PowerShell-fönster som administratör och kör följande kommando för att redigera registret med den nya miljövariabeln. Ersätt <proxy-URL:en> med proxyserveradressen och porten.

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

Starta om IoT Edge för att ändringarna ska börja gälla.

Restart-Service iotedge

Konfigurera IoT Edge-agenten

IoT Edge-agenten är den första modulen som startar på alla IoT Edge-enheter. Den här modulen startar för första gången baserat på information i IoT Edge-konfigurationsfilen. IoT Edge-agenten ansluter sedan till IoT Hub för att hämta distributionsmanifest. Manifestet deklarerar vilka andra moduler som enheten ska distribuera.

Det här steget sker en gång på IoT Edge-enheten under den första enhetskonfigurationen.

  1. Öppna konfigurationsfilen på din IoT Edge-enhet: /etc/aziot/config.toml. Du behöver administratörsbehörighet för att få åtkomst till konfigurationsfilen. På Linux-system använder du sudo kommandot innan du öppnar filen i önskad textredigerare.

  2. I konfigurationsfilen hittar du avsnittet [agent] som innehåller all konfigurationsinformation för edgeAgent-modulen som ska användas vid start. Kontrollera att avsnittet [agent] inte har kommentarer. Om avsnittet [agent] saknas lägger du till det i config.toml. IoT Edge-agentdefinitionen innehåller ett [agent.env] underavsnitt där du kan lägga till miljövariabler.

  3. Lägg till parametern https_proxy i avsnittet miljövariabler och ange proxy-URL:en som dess värde.

    [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. IoT Edge-körningen använder AMQP som standard för att kommunicera med IoT Hub. Vissa proxyservrar blockerar AMQP-portar. Om så är fallet måste du också konfigurera edgeAgent för att använda AMQP via WebSocket. Ta bort kommentaren från parametern UpstreamProtocol .

    [agent.config]
    image = "mcr.microsoft.com/azureiotedge-agent:1.5"
    
    [agent.env]
    # RuntimeLogLevel = "debug"
    UpstreamProtocol = "AmqpWs"
    https_proxy = "<proxy URL>"
    
  5. Lägg till https_proxy-parametern i avsnittet miljövariabler och ange proxy-URL:en som dess värde.

    [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. IoT Edge-körningen använder AMQP som standard för att prata med IoT Hub. Vissa proxyservrar blockerar AMQP-portar. Om så är fallet måste du också konfigurera edgeAgent för att använda AMQP via WebSocket. Ta bort kommentaren till parametern UpstreamProtocol .

    [agent.config]
    image = "mcr.microsoft.com/azureiotedge-agent:1.5"
    
    [agent.env]
    # RuntimeLogLevel = "debug"
    UpstreamProtocol = "AmqpWs"
    https_proxy = "<proxy URL>"
    
  7. Spara ändringarna och stäng redigeraren. Tillämpa ändringarna.

    sudo iotedge config apply
    
  8. Kontrollera att proxyinställningarna tillämpas med hjälp av docker inspect edgeAgent i avsnittet Env . Annars måste du återskapa containern.

    sudo docker rm -f edgeAgent
    
  9. IoT Edge-runtime återskapas edgeAgent inom en minut. När containern edgeAgent körs igen använder du docker inspect edgeAgent kommandot för att kontrollera att proxyinställningarna matchar konfigurationsfilen.

Konfigurera distributionsmanifest

När du har konfigurerat IoT Edge-enheten så att den fungerar med proxyservern deklarerar du HTTPS_PROXY miljövariabeln i framtida distributionsmanifest. Du kan redigera distributionsmanifest antingen med hjälp av guiden Azure Portal eller genom att redigera en JSON-fil för distributionsmanifestet.

Konfigurera alltid de två runtime-modulerna, edgeAgent och edgeHub, så att de kommunicerar via proxyservern så att de upprätthåller en anslutning till IoT Hub. Om du tar bort proxyinformationen från edgeAgent-modulen är det enda sättet att återupprätta anslutningen att redigera konfigurationsfilen på enheten enligt beskrivningen i föregående avsnitt.

Förutom edgeAgent- och edgeHub-modulerna kan andra moduler behöva proxykonfigurationen. Moduler som har åtkomst till Azure-resurser förutom IoT Hub, till exempel bloblagring, måste ange variabeln HTTPS_PROXY i distributionsmanifestfilen.

Den här proceduren gäller under hela IoT Edge-enhetens livslängd.

Azure Portal

När du använder guiden Ange moduler för att skapa distributioner för IoT Edge-enheter har varje modul ett miljövariabler-avsnitt där du kan konfigurera proxyserveranslutningar.

Om du vill konfigurera IoT Edge-agenten och IoT Edge-hubbmodulerna väljer du Körningsinställningar i det första steget i guiden.

Skärmbild av hur du konfigurerar avancerade Edge Runtime-inställningar.

Lägg till https_proxy miljövariabeln i både IoT Edge-agenten och IoT Edge-hubbmodulernas definitioner för körningsinställningar . Om du inkluderar miljövariabeln UpstreamProtocol i konfigurationsfilen på din IoT Edge-enhet lägger du också till den i moduldefinitionen för IoT Edge-agenten.

Alla andra moduler som du lägger till i ett distributionsmanifest följer samma mönster. Tryck på Apply (Verkställ) för att spara ändringarna.

JSON-distributionsmanifestfiler

Om du skapar distributioner för IoT Edge-enheter med hjälp av mallarna i Visual Studio Code eller genom att manuellt skapa JSON-filer kan du lägga till miljövariablerna direkt i varje moduldefinition. Om du inte har lagt till dem i Azure Portal lägger du till dem här i JSON-manifestfilen. Ersätt <proxy URL> med ditt värde.

Använd följande JSON-format:

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

Med miljövariablerna inkluderade ser moduldefinitionen ut som följande edgeHub-exempel:

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

Om du har inkluderat miljövariabeln UpstreamProtocol i filen config.yaml på din IoT Edge-enhet lägger du även till den i moduldefinitionen för IoT Edge-agenten.

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

Arbeta med trafikinspektion av proxyservrar

Vissa proxyservrar som Zscaler kan inspektera TLS-krypterad trafik. Under TLS-trafikinspektionen är certifikatet som returneras av proxyn inte certifikatet från målservern, utan det är i stället certifikatet som signeras av proxyns eget rotcertifikat. Som standard litar inte IoT Edge-moduler (inklusive edgeAgent och edgeHub) på proxyns certifikat och TLS-handskakningen misslyckas.

Om du vill åtgärda det misslyckade handskakningen konfigurerar du både operativsystemet och IoT Edge-modulerna för att lita på proxyns rotcertifikat genom att följa dessa steg.

  1. Konfigurera proxycertifikatet i det betrodda rotcertifikatarkivet för värdoperativsystemet. Mer information om hur du installerar ett rotcertifikat finns i Installera rotcertifikatutfärdare till OS-certifikatarkiv.

  2. Konfigurera din IoT Edge-enhet så att den kommunicerar via en proxyserver genom att referera till certifikatet i säkerhetspaketet. Mer information om hur du konfigurerar förtroendepaketet finns i Hantera betrodd rotcertifikatutfärdare (förtroendepaket).

Om du vill konfigurera stöd för trafikkontrollproxy för containrar som inte hanteras av IoT Edge kontaktar du proxyleverantören.

Fullständigt kvalificerade domännamn (FQDN) för mål som IoT Edge kommunicerar med

Om proxyns brandvägg kräver att alla FQDN:er läggs till i listan över tillåtna internetanslutningar läser du listan från Tillåt anslutningar från IoT Edge-enheter för att avgöra vilka FQDN som ska läggas till.

Nästa steg

Lär dig mer om IoT Edge-runtime-rollerna.

Felsöka installations- och konfigurationsfel i Vanliga problem och lösningar för Azure IoT Edge.