Konfigurace zařízení IoT Edge tak, aby komunikovalo přes proxy server

Platí pro:IoT Edge 1.4 checkmark IoT Edge 1.4

Důležité

IoT Edge 1.4 je podporovaná verze. Pokud používáte starší verzi, podívejte se na článek Aktualizace IoT Edge.

Zařízení IoT Edge odesílají požadavky HTTPS ke komunikaci se službou IoT Hub. Pokud jste zařízení připojili k síti, která používá proxy server, musíte nakonfigurovat modul runtime IoT Edge pro komunikaci přes server. Proxy servery můžou mít vliv také na jednotlivé moduly IoT Edge, pokud dělají požadavky HTTP nebo HTTPS, které jste nesměrovali přes centrum IoT Edge.

Tento článek vás provede následujícími čtyřmi kroky ke konfiguraci a správě zařízení IoT Edge za proxy serverem:

  1. Instalace modulu runtime IoT Edge na zařízení

    Instalační skripty IoT Edge načítají balíčky a soubory z internetu, takže vaše zařízení musí komunikovat přes proxy server, aby tyto požadavky udělalo. Instalační skript pro zařízení s Windows také poskytuje možnost offline instalace.

    Tento krok je jednorázový proces konfigurace zařízení IoT Edge při prvním nastavení. Při aktualizaci modulu runtime IoT Edge také potřebujete stejná připojení.

  2. Konfigurace IoT Edge a modulu runtime kontejneru na vašem zařízení

    IoT Edge zodpovídá za komunikaci se službou IoT Hub. Modul runtime kontejneru zodpovídá za správu kontejnerů, takže komunikuje s registry kontejnerů. Obě tyto komponenty musí provádět webové požadavky prostřednictvím proxy serveru.

    Tento krok je jednorázový proces konfigurace zařízení IoT Edge při prvním nastavení.

  3. Konfigurace vlastností agenta IoT Edge v konfiguračním souboru na vašem zařízení

    Proces démon IoT Edge nejprve spustí modul edgeAgent. Pak modul edgeAgent načte manifest nasazení ze služby IoT Hub a spustí všechny ostatní moduly. Nakonfigurujte proměnné prostředí modulu edgeAgent ručně na samotném zařízení, aby agent IoT Edge mohl vytvořit počáteční připojení ke službě IoT Hub. Po počátečním připojení můžete vzdáleně nakonfigurovat modul edgeAgent.

    Tento krok je jednorázový proces konfigurace zařízení IoT Edge při prvním nastavení.

  4. Pro všechna budoucí nasazení modulů nastavte proměnné prostředí pro všechny moduly komunikující prostřednictvím proxy serveru.

    Jakmile nastavíte a připojíte zařízení IoT Edge ke službě IoT Hub prostřednictvím proxy serveru, musíte připojení udržovat ve všech budoucích nasazeních modulů.

    Tento krok probíhá vzdáleně, takže každá nová aktualizace modulu nebo aktualizace nasazení udržuje schopnost zařízení komunikovat prostřednictvím proxy serveru.

Seznámení s adresou URL proxy serveru

Než začnete s některým z kroků v tomto článku, potřebujete znát adresu URL proxy serveru.

Adresy URL proxy serveru mají následující formát: protocol://proxy_host:proxy_port.

  • Protokol je HTTP nebo HTTPS. Démon Dockeru může v závislosti na nastavení registru kontejneru používat oba protokoly, ale kontejnery démon a modul runtime IoT Edge by měly vždy používat protokol HTTP pro připojení k proxy serveru.

  • Proxy_host je adresa proxy serveru. Pokud proxy server vyžaduje ověření, můžete své přihlašovací údaje zadat jako součást hostitele proxy serveru s následujícím formátem: user:password@proxy_host.

  • Proxy_port je síťový port, ve kterém proxy server reaguje na síťový provoz.

Instalace IoT Edge prostřednictvím proxy serveru

Bez ohledu na to, jestli vaše zařízení IoT Edge běží ve Windows nebo Linuxu, potřebujete přístup k instalačním balíčkům prostřednictvím proxy serveru. V závislosti na vašem operačním systému nainstalujte modul runtime IoT Edge prostřednictvím proxy serveru.

Zařízení s Linuxem

Pokud instalujete modul runtime IoT Edge na zařízení s Linuxem, nakonfigurujte správce balíčků tak, aby procházel proxy serverem pro přístup k instalačnímu balíčku. Můžete například nastavit apt-get pro použití http-proxy. Jakmile nakonfigurujete správce balíčků, postupujte podle pokynů v části Instalace modulu runtime Azure IoT Edge obvyklým způsobem.

Zařízení s Windows využívající IoT Edge pro Linux ve Windows

Pokud instalujete modul runtime IoT Edge pomocí IoT Edge pro Linux ve Windows, ioT Edge se ve výchozím nastavení nainstaluje na virtuální počítač s Linuxem. Nemusíte instalovat ani aktualizovat žádné další kroky.

Zařízení s Windows využívající kontejnery Windows

Pokud instalujete modul runtime IoT Edge na zařízení s Windows, musíte dvakrát projít proxy serverem. První připojení stáhne soubor skriptu instalačního programu a druhé připojení se během instalace stáhne potřebné součásti. Informace o proxy serveru můžete nakonfigurovat v nastavení windows nebo zahrnout informace o proxy serveru přímo do příkazů PowerShellu.

Následující kroky ukazují příklad instalace systému Windows pomocí argumentu -proxy :

  1. Příkaz Invoke-WebRequest potřebuje informace o proxy serveru pro přístup ke skriptu instalačního programu. Potom příkaz Deploy-IoTEdge potřebuje informace o proxy serveru ke stažení instalačních souborů.

    . {Invoke-WebRequest -proxy <proxy URL> -useb aka.ms/iotedge-win} | Invoke-Expression; Deploy-IoTEdge -proxy <proxy URL>
    
  2. Příkaz Initialize-IoTEdge nemusí procházet proxy serverem, takže druhý krok vyžaduje pouze informace o proxy serveru pro Invoke-WebRequest.

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

Pokud máte složité přihlašovací údaje pro proxy server, které nemůžete zahrnout do adresy URL, použijte -ProxyCredential parametr v rámci -InvokeWebRequestParameters. Příklad:

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

Další informace o parametrech proxy serveru naleznete v tématu Invoke-WebRequest.

Konfigurace IoT Edge a Moby

IoT Edge spoléhá na dva démony spuštěné na zařízení IoT Edge. Démon Moby provádí webové požadavky na vyžádání imagí kontejnerů z registrů kontejnerů. Proces démon IoT Edge provádí webové požadavky na komunikaci se službou IoT Hub.

Pro průběžné funkce zařízení musíte nakonfigurovat démony Moby i démony IoT Edge. Tento krok probíhá na zařízení IoT Edge během počátečního nastavení zařízení.

Démon Moby

Vzhledem k tomu, že moby je postaven na Dockeru, přečtěte si dokumentaci Dockeru ke konfiguraci démona Moby s proměnnými prostředí. Většina registrů kontejnerů (včetně DockerHubu a Azure Container Registryies) podporuje požadavky HTTPS, takže parametr, který byste měli nastavit, je HTTPS_PROXY. Pokud načítáte image z registru, který nepodporuje protokol TLS (Transport Layer Security), měli byste nastavit parametr HTTP_PROXY .

Zvolte článek, který se týká operačního systému zařízení IoT Edge:

Démon IoT Edge

Démon IoT Edge je podobný démonu Moby. Pomocí následujícího postupu nastavte proměnnou prostředí pro službu na základě vašeho operačního systému.

Proces démon IoT Edge vždy používá protokol HTTPS k odesílání požadavků do IoT Hubu.

Linux

Otevřete editor v terminálu a nakonfigurujte démon IoT Edge.

sudo systemctl edit aziot-edged

Zadejte následující text a nahraďte <adresu URL> proxy serveru adresou a portem proxy serveru. Pak uložte a ukončete.

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

Od verze 1.2 používá IoT Edge službu identit IoT ke zpracování zřizování zařízení pomocí ioT Hubu nebo služby IoT Hub Device Provisioning. Otevřete editor v terminálu a nakonfigurujte démona služby identit IoT.

sudo systemctl edit aziot-identityd

Zadejte následující text a nahraďte <adresu URL> proxy serveru adresou a portem proxy serveru. Pak uložte a ukončete.

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

Aktualizujte správce služeb, aby se obnovily nové konfigurace.

sudo systemctl daemon-reload

Restartujte systémové služby IoT Edge, aby se projevily změny obou démonů.

sudo iotedge system restart

Ověřte, že jsou k dispozici proměnné prostředí a nová konfigurace.

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

Windows využívající IoT Edge pro Linux ve Windows

Přihlaste se k IoT Edge pro Linux na virtuálním počítači s Windows:

Connect-EflowVm

Ke konfiguraci démona IoT Edge použijte stejný postup jako v části Linux tohoto článku.

Windows využívající kontejnery Windows

Otevřete okno PowerShellu jako správce a spuštěním následujícího příkazu upravte registr pomocí nové proměnné prostředí. Nahraďte <adresu URL> proxy serveru adresou a portem proxy serveru.

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

Restartujte IoT Edge, aby se změny projevily.

Restart-Service iotedge

Konfigurace agenta IoT Edge

Agent IoT Edge je prvním modulem, který se spustí na jakémkoli zařízení IoT Edge. Tento modul se spustí poprvé na základě informací v konfiguračním souboru IoT Edge. Agent IoT Edge se pak připojí ke službě IoT Hub a načte manifesty nasazení. Manifest deklaruje, které další moduly má zařízení nasadit.

Tento krok probíhá jednou na zařízení IoT Edge během počátečního nastavení zařízení.

  1. Otevřete konfigurační soubor na zařízení IoT Edge: /etc/aziot/config.toml. Pro přístup ke konfiguračnímu souboru potřebujete oprávnění správce. V systémech Linux použijte sudo příkaz před otevřením souboru v preferovaném textovém editoru.

  2. V konfiguračním souboru vyhledejte [agent] část, která obsahuje všechny informace o konfiguraci modulu edgeAgent, které se mají použít při spuštění. Zkontrolujte, jestli [agent] oddíl není bez komentářů. [agent] Pokud oddíl chybí, přidejte ho do souboru config.toml. Definice agenta IoT Edge obsahuje [agent.env] pododdíl, do kterého můžete přidat proměnné prostředí.

  3. Přidejte parametr https_proxy do oddílu proměnných prostředí a nastavte adresu URL proxy serveru jako její hodnotu.

    [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>"
    
  4. Modul runtime IoT Edge ve výchozím nastavení používá AMQP ke komunikaci se službou IoT Hub. Některé proxy servery blokují porty AMQP. Pokud tomu tak je, musíte také nakonfigurovat edgeAgent tak, aby používal AMQP přes WebSocket. Odkomentujte UpstreamProtocol parametr.

    [agent.config]
    image = "mcr.microsoft.com/azureiotedge-agent:1.4"
    
    [agent.env]
    # "RuntimeLogLevel" = "debug"
    "UpstreamProtocol" = "AmqpWs"
    "https_proxy" = "<proxy URL>"
    
  5. Přidejte parametr https_proxy do oddílu proměnných prostředí a nastavte adresu URL proxy serveru jako její hodnotu.

    [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>"
    
  6. Modul runtime IoT Edge ve výchozím nastavení používá AMQP ke komunikaci se službou IoT Hub. Některé proxy servery blokují porty AMQP. Pokud tomu tak je, musíte také nakonfigurovat edgeAgent tak, aby používal AMQP přes WebSocket. Odkomentujte UpstreamProtocol parametr.

    [agent.config]
    image = "mcr.microsoft.com/azureiotedge-agent:1.4"
    
    [agent.env]
    # "RuntimeLogLevel" = "debug"
    "UpstreamProtocol" = "AmqpWs"
    "https_proxy" = "<proxy URL>"
    
  7. Uložte změny a zavřete editor. Použijte nejnovější změny.

    sudo iotedge config apply
    
  8. Ověřte, že se vaše nastavení proxy serveru šíří pomocí docker inspect edgeAgent oddílu Env . Pokud ne, musíte kontejner vytvořit znovu.

    sudo docker rm -f edgeAgent
    
  9. Modul runtime IoT Edge by se měl znovu vytvořit edgeAgent během minuty. Po opětovném edgeAgent spuštění kontejneru docker inspect edgeAgent pomocí příkazu ověřte, že nastavení proxy serveru odpovídá konfiguračnímu souboru.

Konfigurace manifestů nasazení

Jakmile nakonfigurujete zařízení IoT Edge tak, aby fungovalo s proxy serverem, deklarujte proměnnou prostředí HTTPS_PROXY v budoucích manifestech nasazení. Manifesty nasazení můžete upravit pomocí průvodce webu Azure Portal nebo úpravou souboru JSON manifestu nasazení.

Vždy nakonfigurujte dva moduly modulu runtime, edgeAgent a edgeHub, aby komunikovali přes proxy server, aby mohly udržovat připojení ke službě IoT Hub. Pokud odeberete informace o proxy serveru z modulu edgeAgent, jediným způsobem, jak obnovit připojení, je úprava konfiguračního souboru na zařízení, jak je popsáno v předchozí části.

Kromě modulů edgeAgent a edgeHub můžou další moduly potřebovat konfiguraci proxy serveru. Moduly, které potřebují přistupovat k prostředkům Azure kromě IoT Hubu, jako je úložiště objektů blob, musí mít HTTPS_PROXY proměnnou zadanou v souboru manifestu nasazení.

Následující postup platí po celou dobu životnosti zařízení IoT Edge.

portál Azure

Když k vytváření nasazení pro zařízení IoT Edge použijete Průvodce nastavením modulů , každý modul má oddíl Proměnné prostředí, kde můžete nakonfigurovat připojení proxy serveru.

Pokud chcete nakonfigurovat agenta IoT Edge a moduly centra IoT Edge, vyberte modul runtime Nastavení v prvním kroku průvodce.

Screenshot of how to configure advanced Edge Runtime settings.

Přidejte proměnnou prostředí https_proxy do definice modulu Centra IoT Edge i agenta IoT Edge. Pokud jste do konfiguračního souboru v zařízení IoT Edge zahrnuli proměnnou prostředí UpstreamProtocol , přidejte ji také do definice modulu agenta IoT Edge.

Screenshot of how to set the https_proxy environment variable.

Všechny ostatní moduly, které přidáte do manifestu nasazení, se řídí stejným vzorem. Výběrem možnosti Použít změny uložte.

Soubory manifestu nasazení JSON

Pokud vytváříte nasazení pro zařízení IoT Edge pomocí šablon v editoru Visual Studio Code nebo ručně vytváříte soubory JSON, můžete proměnné prostředí přidat přímo do každé definice modulu. Pokud jste je nepřidali na webu Azure Portal, přidejte je sem do souboru manifestu JSON. Nahraďte <proxy URL> vlastní hodnotou.

Použijte následující formát JSON:

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

Při zahrnutí proměnných prostředí by definice vašeho modulu měla vypadat jako v následujícím příkladu edgeHubu:

"edgeHub": {
    "type": "docker",
    "settings": {
        "image": "mcr.microsoft.com/azureiotedge-hub:1.4",
        "createOptions": "{}"
    },
    "env": {
        "https_proxy": {
            "value": "http://proxy.example.com:3128"
        }
    },
    "status": "running",
    "restartPolicy": "always"
}

Pokud jste do souboru confige.yaml v zařízení IoT Edge zahrnuli proměnnou prostředí UpstreamProtocol , přidejte ji také do definice modulu agenta IoT Edge.

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

Práce s proxy servery kontrolou provozu

Některé proxy servery, jako je Zscaler , můžou kontrolovat provoz šifrovaný protokolem TLS. Během kontroly provozu protokolu TLS certifikát vrácený proxy serverem není certifikát z cílového serveru, ale certifikát podepsaný vlastním kořenovým certifikátem proxy serveru. Moduly IoT Edge (včetně edgeAgent a edgeHubu) ve výchozím nastavení nedůvěřují certifikátu tohoto proxy serveru a metoda handshake protokolu TLS selže.

Pokud chcete vyřešit neúspěšné metody handshake, nakonfigurujte operační systém i moduly IoT Edge tak, aby důvěřovaly kořenovému certifikátu proxy serveru pomocí následujícího postupu.

  1. Nakonfigurujte certifikát proxy serveru v úložišti důvěryhodných kořenových certifikátů vašeho hostitelského operačního systému. Další informace o instalaci kořenového certifikátu naleznete v tématu Instalace kořenové certifikační autority do úložiště certifikátů operačního systému.

  2. Nakonfigurujte zařízení IoT Edge tak, aby komunikuje přes proxy server odkazováním na certifikát v sadě důvěryhodných certifikátů. Další informace o tom, jak nakonfigurovat sadu důvěryhodných certifikátů, najdete v tématu Správa důvěryhodné kořenové certifikační autority (sada důvěryhodnosti).

Pokud chcete nakonfigurovat podporu proxy kontroly provozu pro kontejnery, které nespravuje IoT Edge, obraťte se na svého poskytovatele proxy serveru.

Plně kvalifikované názvy domén (FQDN) cílů, se kterými IoT Edge komunikuje

Pokud brána firewall vašeho proxy serveru vyžaduje, abyste do seznamu povolených připojení k internetu přidali všechny plně kvalifikované názvy domén, zkontrolujte seznam povolených připojení ze zařízení IoT Edge a zjistěte, které plně kvalifikované názvy domén se mají přidat.

Další kroky

Přečtěte si další informace o rolích modulu runtime IoT Edge.

Řešení potíží s instalací a konfigurací s běžnými problémy a jejich řešeními pro Azure IoT Edge