Dela via


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

Gäller för:ja-ikonen IoT Edge 1.1

Viktigt

IoT Edge 1.1 slutdatum var den 13 december 2022. I informationen om Microsoft-produktens livscykel hittar du fler uppgifter om vilken support som gäller för denna produkt, tjänst, teknik eller detta API. Mer information om hur du uppdaterar till den senaste versionen av IoT Edge finns i Uppdatera IoT Edge.

IoT Edge enheter skickar HTTPS-begäranden för att kommunicera med IoT Hub. Om enheten är ansluten till ett nätverk som använder en proxyserver måste du konfigurera 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.

Den här artikeln går igenom följande fyra steg för att konfigurera och sedan hantera en IoT Edge enhet bakom en proxyserver:

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

    De IoT Edge installationsskripten hämtar paket och filer från Internet, så enheten måste kommunicera 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. Samma anslutningar krävs också när du uppdaterar IoT Edge-körningen.

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

    IoT Edge ansvarar för kommunikation med IoT Hub. Containerkörningen ansvarar för containerhantering, så den 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 agentegenskaper i konfigurationsfilen på enheten

    Daemonen IoT Edge startar edgeAgent-modulen från början. Sedan hämtar edgeAgent-modulen distributionsmanifestet från IoT Hub och startar alla andra moduler. För att IoT Edge agenten ska upprätta den första anslutningen till IoT Hub konfigurerar du miljövariablerna för edgeAgent-modulen manuellt på själva enheten. Efter den första anslutningen kan du konfigurera edgeAgent-modulen via en 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 din IoT Edge-enhet har konfigurerats och anslutits till IoT Hub via proxyservern måste du underhålla anslutningen i alla framtida moduldistributioner.

    Det här steget är en pågående process som gö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 något av stegen i den här artikeln måste du känna till proxy-URL:en.

Proxy-URL:er har följande format: protocol://proxy_host:proxy_port.

  • Protokollet är antingen HTTP eller HTTPS. Docker-daemonen kan använda något av protokollen, beroende på inställningarna för containerregistret, men IoT Edge daemon- och körningscontainrar bör alltid använda HTTP för att ansluta till proxyn.

  • Proxy_host är en adress för proxyservern. Om proxyservern kräver autentisering kan du ange dina autentiseringsuppgifter som en del av proxyvärden med följande format: user:password@proxy_host.

  • Proxy_port är den nätverksport där proxyn svarar på nätverkstrafik.

Installera IoT Edge via en proxy

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

Linux-enheter

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

Windows-enheter med 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 som standard på den virtuella Linux-datorn. Inga ytterligare installations- eller uppdateringssteg krävs.

Windows-enheter med Windows-containrar

Om du installerar IoT Edge-körning på en Windows-enhet måste du gå igenom proxyservern två gånger. Den första anslutningen laddar ned installationsskriptfilen och den andra anslutningen är under installationen för att ladda ned nödvändiga komponenter. 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. Invoke-WebRequest-kommandot behöver proxyinformation för att komma åt installationsskriptet. Sedan behöver Deploy-IoTEdge-kommandot 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 du har komplicerade autentiseringsuppgifter för proxyservern som inte kan inkluderas i URL:en använder du parametern -ProxyCredential i -InvokeWebRequestParameters. 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. Mer information om Windows-installationsparametrar finns i PowerShell-skript för IoT Edge i Windows.

Konfigurera IoT Edge och Moby

IoT Edge förlitar sig på två daemoner som körs på den IoT Edge enheten. Moby-daemonen gör webbbegäranden för att hämta containeravbildningar från containerregister. IoT Edge-daemon gör webbbegäranden för att kommunicera med IoT Hub.

Både Moby- och IoT Edge-daemonerna måste konfigureras för att använda proxyservern för pågående enhetsfunktioner. Det här steget utförs på den IoT Edge enheten under den första enhetskonfigurationen.

Moby-daemon

Eftersom Moby bygger på Docker läser du 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å parametern som du bör ange är 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

Daemonen IoT Edge konfigureras på ett liknande sätt som 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-daemon.

sudo systemctl edit iotedge

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 den nya konfigurationen för IoT Edge.

sudo systemctl daemon-reload

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

sudo systemctl restart iotedge

Kontrollera att miljövariabeln har skapats och att den nya konfigurationen har lästs in.

systemctl show --property=Environment iotedge

Windows med IoT Edge för Linux i Windows

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

Connect-EflowVm

Följ samma steg som i Linux-avsnittet ovan för att konfigurera IoT Edge daemon.

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

Den IoT Edge agenten är den första modulen som startar på en IoT Edge enhet. Den startas för första gången baserat på informationen i IoT Edge konfigurationsfilen. IoT Edge-agenten ansluter sedan till IoT Hub för att hämta distributionsmanifest, som deklarerar vilka andra moduler som ska distribueras på enheten.

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

  1. Öppna filen config.yaml på din IoT Edge enhet. I Linux-system finns den här filen på /etc/iotedge/config.yaml. På Windows-system finns den här filen på C:\ProgramData\iotedge\config.yaml. Konfigurationsfilen är skyddad, så du behöver administratörsbehörighet för att få åtkomst till den. På Linux-system använder du sudo kommandot innan du öppnar filen i önskad textredigerare. I Windows öppnar du en textredigerare som Anteckningar som administratör och öppnar sedan filen.

  2. I filen config.yaml letar du reda på avsnittet Edge Agent module spec .. Den IoT Edge agentdefinitionen innehåller en env-parameter där du kan lägga till miljövariabler.

  3. Ta bort klammerparenteserna som är platshållare för parametern env och lägg till den nya variabeln på en ny rad. Kom ihåg att indrag i YAML är två blanksteg.

    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. Lägg till en andra miljövariabel.

    UpstreamProtocol: "AmqpWs"
    

    edgeAgent-definition med miljövariabler

  5. Spara ändringarna i config.yaml och stäng redigeraren. Starta om IoT Edge för att ändringarna ska börja gälla.

    • Linux och IoT Edge för Linux i Windows:

      sudo systemctl restart iotedge
      
    • Windows med Windows-containrar:

      Restart-Service iotedge
      
  1. 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.4"
    
    [agent.env]
    # "RuntimeLogLevel" = "debug"
    # "UpstreamProtocol" = "AmqpWs"
    "https_proxy" = "<proxy URL>"
    
  2. 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 för parametern UpstreamProtocol .

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

    sudo iotedge config apply
    
  4. Kontrollera att proxyinställningarna sprids med hjälp av docker inspect edgeAgent i Env avsnittet . Annars måste containern återskapas.

    sudo docker rm -f edgeAgent
    
  5. Den IoT Edge körningen bör återskapas edgeAgent inom en minut. När edgeAgent containern körs igen docker inspect edgeAgent och kontrollera att proxyinställningarna matchar konfigurationsfilen.

Konfigurera distributionsmanifest

När din IoT Edge enheten har konfigurerats för att fungera med proxyservern måste du fortsätta att deklarera 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å körningsmodulerna edgeAgent och edgeHub så att de kommunicerar via proxyservern så att de kan upprätthålla 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 behöver åtkomst till Azure-resurser förutom IoT Hub, till exempel bloblagring, måste ha HTTPS_PROXY variabel som anges i distributionsmanifestfilen.

Följande procedur 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 hubbmoduler väljer du Körningsinställningar i det första steget i guiden.

Konfigurera avancerade Edge Runtime-inställningar

Lägg till miljövariabeln https_proxy i både IoT Edge-agenten och IoT Edge hubbmoduldefinitioner. Om du inkluderade miljövariabeln UpstreamProtocol i konfigurationsfilen på din IoT Edge-enhet lägger du även till den i IoT Edge agentmoduldefinitionen.

Ange https_proxy miljövariabel

Alla andra moduler som du lägger till i ett distributionsmanifest följer samma mönster.

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.

Använd följande JSON-format:

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

Med miljövariablerna inkluderade bör moduldefinitionen se ut som i följande edgeHub-exempel:

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

Om du har inkluderat miljövariabeln UpstreamProtocol i filen confige.yaml på din IoT Edge enhet lägger du även till den i IoT Edge agentmoduldefinitionen.

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

Arbeta med proxyservrar för trafikinspektion

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 certifikat som signeras av proxyns eget rotcertifikat. Som standard är proxyns certifikat inte betrott av IoT Edge moduler (inklusive edgeAgent och edgeHub) och TLS-handskakningen misslyckas.

För att lösa detta måste proxyns rotcertifikat vara betrott av både operativsystemet och IoT Edge moduler.

  1. Konfigurera proxycertifikat 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 enheten så att den kommunicerar via en proxyserver genom att referera till certifikatet i förtroendepaketet. 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 proxyservern har en brandvägg som kräver att du tillåter att alla FQDN tillåts för Internetanslutning 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äs mer om rollerna för IoT Edge-körning.

Felsöka installations- och konfigurationsfel med vanliga problem och lösningar för Azure IoT Edge