IoT Edge-eszköz konfigurálása proxykiszolgálón keresztüli kommunikációra

A következőkre vonatkozik:IoT Edge 1.5 pipa IoT Edge 1.5 IoT Edge 1.4 pipa IoT Edge 1.4

Fontos

Az IoT Edge 1.5 LTS és az IoT Edge 1.4 LTS támogatott kiadások. Az IoT Edge 1.4 LTS 2024. november 12-én megszűnik. Ha egy korábbi kiadáson dolgozik, olvassa el az IoT Edge frissítése című témakört.

Az IoT Edge-eszközök HTTPS-kéréseket küldenek az IoT Hubbal való kommunikációhoz. Ha az eszközt proxykiszolgálót használó hálózathoz csatlakoztatta, konfigurálnia kell az IoT Edge-futtatókörnyezetet a kiszolgálón keresztüli kommunikációhoz. A proxykiszolgálók akkor is befolyásolhatják az egyes IoT Edge-modulokat, ha OLYAN HTTP- vagy HTTPS-kéréseket intéznek, amelyeket nem az IoT Edge-központon keresztül irányítottak.

Ez a cikk az alábbi négy lépést ismerteti egy proxykiszolgáló mögötti IoT Edge-eszköz konfigurálásához és kezeléséhez:

  1. Az IoT Edge-futtatókörnyezet telepítése az eszközön

    Az IoT Edge telepítési szkriptjei lekérik a csomagokat és a fájlokat az internetről, így az eszköznek a proxykiszolgálón keresztül kell kommunikálnia a kérések teljesítéséhez. Windows-eszközök esetén a telepítési szkript offline telepítési lehetőséget is biztosít.

    Ez a lépés egyszeri folyamat az IoT Edge-eszköz első beállításakor történő konfigurálásához. Ugyanezekre a kapcsolatokra is szüksége van az IoT Edge-futtatókörnyezet frissítésekor.

  2. Az IoT Edge és a tároló futtatókörnyezetének konfigurálása az eszközön

    Az IoT Edge felelős az IoT Hubbal folytatott kommunikációért. A tároló futtatókörnyezete felelős a tárolókezelésért, ezért kommunikál a tárolóregisztrációs adatbázisokkal. Mindkét összetevőnek webes kéréseket kell küldenie a proxykiszolgálón keresztül.

    Ez a lépés egyszeri folyamat az IoT Edge-eszköz első beállításakor történő konfigurálásához.

  3. Az IoT Edge-ügynök tulajdonságainak konfigurálása az eszköz konfigurációs fájljában

    Az IoT Edge démon először elindítja az edgeAgent modult. Ezután az edgeAgent modul lekéri az üzembehelyezési jegyzékfájlt az IoT Hubról, és elindítja az összes többi modult. Konfigurálja manuálisan az edgeAgent modul környezeti változóit az eszközön, hogy az IoT Edge-ügynök képes legyen a kezdeti IoT Hub-kapcsolat létesítésére. A kezdeti kapcsolat után távolról is konfigurálhatja az edgeAgent modult.

    Ez a lépés egyszeri folyamat az IoT Edge-eszköz első beállításakor történő konfigurálásához.

  4. Minden jövőbeli modultelepítéshez állítsa be a környezeti változókat a proxyn keresztül kommunikáló modulokhoz

    Miután beállította és csatlakoztatta az IoT Edge-eszközt az IoT Hubhoz a proxykiszolgálón keresztül, a kapcsolatot minden jövőbeli modultelepítésben fenn kell tartania.

    Ez a lépés egy folyamatban lévő folyamat, amely távolról történik, így minden új modul vagy üzembe helyezési frissítés fenntartja az eszköz proxykiszolgálón keresztüli kommunikációjának képességét.

A proxy URL-címének ismerete

Mielőtt elkezdené a jelen cikk lépéseit, ismernie kell a proxy URL-címét.

A proxy URL-címeinek formátuma a következő: protocol://proxy_host:proxy_port.

  • A protokoll HTTP vagy HTTPS. A Docker-démon a tárolóregisztrációs beállításjegyzék beállításaitól függően bármelyik protokollt használhatja, de az IoT Edge démon- és futtatókörnyezeti tárolóknak mindig HTTP-t kell használniuk a proxyhoz való csatlakozáshoz.

  • A proxy_host a proxykiszolgáló címe. Ha a proxykiszolgáló hitelesítést igényel, a hitelesítő adatokat a proxy gazdagép részeként a következő formátumban adhatja meg: user:password@proxy_host.

  • A proxy_port az a hálózati port, amelyen a proxy válaszol a hálózati forgalomra.

Az IoT Edge telepítése proxyn keresztül

Függetlenül attól, hogy az IoT Edge-eszköz Windows vagy Linux rendszeren fut-e, a telepítési csomagokat a proxykiszolgálón keresztül kell elérnie. Az operációs rendszertől függően kövesse az IoT Edge-futtatókörnyezet proxykiszolgálón keresztüli telepítéséhez szükséges lépéseket.

Linux-eszközök

Ha az IoT Edge-futtatókörnyezetet Linux-eszközön telepíti, konfigurálja a csomagkezelőt úgy, hogy a proxykiszolgálón keresztül férhessen hozzá a telepítőcsomaghoz. Beállíthatja például a http-proxy használatát az apt-get beállítással. Miután konfigurálta a csomagkezelőt, kövesse az Azure IoT Edge-futtatókörnyezet telepítésével kapcsolatos utasításokat a szokásos módon.

Windows rendszeren futó IoT Edge-et használó Windows-eszközök

Ha az IoT Edge-futtatókörnyezetet a Linuxhoz készült IoT Edge használatával telepíti Windows rendszeren, az IoT Edge alapértelmezés szerint telepítve lesz a Linux rendszerű virtuális gépen. Nem kell más lépéseket telepítenie vagy frissítenie.

Windows-tárolókat használó Windows-eszközök

Ha az IoT Edge-futtatókörnyezetet Windows-eszközön telepíti, kétszer kell végigmennie a proxykiszolgálón. Az első kapcsolat letölti a telepítő szkriptfájlját, a második pedig a telepítés során a szükséges összetevők letöltéséhez. Konfigurálhatja a proxyadatokat a Windows beállításaiban, vagy közvetlenül a PowerShell-parancsokban is megadhatja a proxyadatokat.

Az alábbi lépések egy windowsos telepítés példáját mutatják be az -proxy argumentum használatával:

  1. Az Invoke-WebRequest parancsnak proxyadatokra van szüksége a telepítő szkriptjének eléréséhez. Ezután a Deploy-IoTEdge parancsnak szüksége van a proxyadatokra a telepítési fájlok letöltéséhez.

    . {Invoke-WebRequest -proxy <proxy URL> -useb aka.ms/iotedge-win} | Invoke-Expression; Deploy-IoTEdge -proxy <proxy URL>
    
  2. Az Initialize-IoTEdge parancsnak nem kell végighaladnia a proxykiszolgálón, ezért a második lépéshez csak a Invoke-WebRequest proxyadataira van szükség.

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

Ha bonyolult hitelesítő adatokkal rendelkezik a proxykiszolgálóhoz, amelyet nem tud belefoglalni az URL-címbe, használja a paramétert a -ProxyCredential következő helyen: -InvokeWebRequestParameters. Például:

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

A proxyparaméterekről további információt az Invoke-WebRequest című témakörben talál.

Az IoT Edge és a Moby konfigurálása

Az IoT Edge az IoT Edge-eszközön futó két démonra támaszkodik. A Moby démon webes kéréseket intéz a tárolólemezképek tárolóregisztrációs adatbázisokból való lekéréséhez. Az IoT Edge démon webes kéréseket küld az IoT Hubbal való kommunikációra.

Konfigurálnia kell a Moby és az IoT Edge démonokat is a proxykiszolgáló folyamatos működéséhez. Ez a lépés az IoT Edge-eszközön történik az eszköz kezdeti beállítása során.

Moby démon

Mivel a Moby a Dockerre épül, tekintse meg a Docker dokumentációját a Moby démon környezeti változókkal való konfigurálásához. A legtöbb tárolóregisztrációs adatbázis (beleértve a DockerHubot és az Azure Container Registriest) támogatja a HTTPS-kérelmeket, így a beállított paraméter HTTPS_PROXY. Ha olyan beállításjegyzékből kér le lemezképeket, amely nem támogatja az átviteli réteg biztonságát (TLS), akkor be kell állítania a HTTP_PROXY paramétert.

Válassza ki az IoT Edge-eszköz operációs rendszerére vonatkozó cikket:

IoT Edge démon

Az IoT Edge démon hasonló a Moby démonhoz. Az alábbi lépésekkel beállíthat egy környezeti változót a szolgáltatáshoz az operációs rendszer alapján.

Az IoT Edge démon mindig HTTPS használatával küld kéréseket az IoT Hubnak.

Linux

Nyisson meg egy szerkesztőt a terminálban az IoT Edge démon konfigurálásához.

sudo systemctl edit aziot-edged

Írja be a következő szöveget, és cserélje le <a proxy URL-címét> a proxykiszolgáló címére és portára. Ezután mentse és lépjen ki.

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

Az IoT Edge az 1.2-es verziótól kezdve az IoT Identity Service-t használja az IoT Hub vagy az IoT Hub Device Provisioning Service eszközkiépítési szolgáltatásával való eszközkiépítés kezelésére. Nyisson meg egy szerkesztőt a terminálban az IoT Identity Service démon konfigurálásához.

sudo systemctl edit aziot-identityd

Írja be a következő szöveget, és cserélje le <a proxy URL-címét> a proxykiszolgáló címére és portára. Ezután mentse és lépjen ki.

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

Frissítse a szolgáltatáskezelőt az új konfigurációk felvételéhez.

sudo systemctl daemon-reload

Indítsa újra az IoT Edge rendszerszolgáltatásait, hogy a két démon módosításai érvénybe léphessenek.

sudo iotedge system restart

Ellenőrizze, hogy a környezeti változók és az új konfiguráció jelen van-e.

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

Windows rendszeren futó IoT Edge linuxos windowsos

Jelentkezzen be a Linuxhoz készült IoT Edge-be Windows rendszerű virtuális gépen:

Connect-EflowVm

Kövesse a jelen cikk Linux szakaszának lépéseit az IoT Edge démon konfigurálásához.

Windows-tárolókat használó Windows

Nyisson meg egy PowerShell-ablakot rendszergazdaként, és futtassa a következő parancsot a beállításjegyzék szerkesztéséhez az új környezeti változóval. Cserélje le <a proxy URL-címét> a proxykiszolgáló címére és portára.

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

Indítsa újra az IoT Edge-et a módosítások érvénybe lépéséhez.

Restart-Service iotedge

Az IoT Edge-ügynök konfigurálása

Az IoT Edge-ügynök az első modul, amely bármely IoT Edge-eszközön elindul. Ez a modul első alkalommal indul el az IoT Edge konfigurációs fájljában található információk alapján. Az IoT Edge-ügynök ezután csatlakozik az IoT Hubhoz az üzembehelyezési jegyzékek lekéréséhez. A jegyzék deklarálja, hogy az eszköz mely más modulokat telepítse.

Ez a lépés egyszer történik az IoT Edge-eszközön a kezdeti eszközbeállítás során.

  1. Nyissa meg a konfigurációs fájlt az IoT Edge-eszközön: /etc/aziot/config.toml. A konfigurációs fájl eléréséhez rendszergazdai jogosultságokra van szükség. Linux rendszereken használja a sudo parancsot, mielőtt megnyitná a fájlt az előnyben részesített szövegszerkesztőben.

  2. A konfigurációs fájlban keresse meg azt a [agent] szakaszt, amely az edgeAgent modul indításkor használandó összes konfigurációs információját tartalmazza. Ellenőrizze, hogy a [agent] szakasz nem szerepel-e megjegyzésekben. Ha a [agent] szakasz hiányzik, adja hozzá a config.toml. Az IoT Edge-ügynök definíciója tartalmaz egy alszakaszt [agent.env] , amelyben környezeti változókat adhat hozzá.

  3. Adja hozzá a https_proxy paramétert a környezeti változók szakaszához, és állítsa be a proxy URL-címét annak értékeként.

    [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. Az IoT Edge-futtatókörnyezet alapértelmezés szerint AMQP használatával kommunikál az IoT Hubbal. Egyes proxykiszolgálók blokkolják az AMQP-portokat. Ha ez a helyzet, akkor az edgeAgentet is konfigurálnia kell az AMQP WebSocketen keresztüli használatára. Bontsa ki a UpstreamProtocol paramétert.

    [agent.config]
    image = "mcr.microsoft.com/azureiotedge-agent:1.5"
    
    [agent.env]
    # "RuntimeLogLevel" = "debug"
    "UpstreamProtocol" = "AmqpWs"
    "https_proxy" = "<proxy URL>"
    
  5. Adja hozzá a https_proxy paramétert a környezeti változók szakaszához, és állítsa be a proxy URL-címét annak értékeként.

    [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. Az IoT Edge-futtatókörnyezet alapértelmezés szerint AMQP használatával kommunikál az IoT Hubbal. Egyes proxykiszolgálók blokkolják az AMQP-portokat. Ha ez a helyzet, akkor az edgeAgentet is konfigurálnia kell az AMQP WebSocketen keresztüli használatára. Bontsa ki a UpstreamProtocol paramétert.

    [agent.config]
    image = "mcr.microsoft.com/azureiotedge-agent:1.5"
    
    [agent.env]
    # "RuntimeLogLevel" = "debug"
    "UpstreamProtocol" = "AmqpWs"
    "https_proxy" = "<proxy URL>"
    
  7. Mentse a módosításokat, és zárja be a szerkesztőt. Alkalmazza a legújabb módosításokat.

    sudo iotedge config apply
    
  8. Ellenőrizze, hogy a proxybeállítások propagálása docker inspect edgeAgent a Env szakaszban történik-e. Ha nem, újra létre kell hoznia a tárolót.

    sudo docker rm -f edgeAgent
    
  9. Az IoT Edge-futtatókörnyezetnek egy percen belül újra létre kell hoznia edgeAgent . Miután a edgeAgent tároló újra fut, a docker inspect edgeAgent paranccsal ellenőrizze, hogy a proxybeállítások megfelelnek-e a konfigurációs fájlnak.

Üzembehelyezési jegyzékek konfigurálása

Miután konfigurálta az IoT Edge-eszközt a proxykiszolgálóval való együttműködésre, deklarálja a HTTPS_PROXY környezeti változót a jövőbeli üzembehelyezési jegyzékekben. Az üzembehelyezési jegyzékeket az Azure Portal varázslóval vagy egy üzembehelyezési jegyzék JSON-fájljának szerkesztésével szerkesztheti.

Mindig konfigurálja a két futtatókörnyezeti modult, az edgeAgentet és az edgeHubot a proxykiszolgálón keresztüli kommunikációhoz, hogy fenntarthassák a kapcsolatot az IoT Hubbal. Ha eltávolítja a proxyadatokat az edgeAgent modulból, a kapcsolat visszaállításának egyetlen módja a konfigurációs fájl szerkesztése az eszközön, az előző szakaszban leírtak szerint.

Az edgeAgent és edgeHub modulok mellett más moduloknak is szükségük lehet a proxykonfigurációra. Az IoT Hubon (például blobtárolón) kívül az Azure-erőforrások eléréséhez szükséges moduloknak rendelkezniük kell az üzembehelyezési jegyzékfájlban megadott HTTPS_PROXY változóval.

Az alábbi eljárás az IoT Edge-eszköz teljes élettartama alatt alkalmazható.

Azure Portal

Amikor a Modulok beállítása varázslóval hoz létre üzembe helyezéseket az IoT Edge-eszközökhöz, minden modul rendelkezik egy Környezeti változók szakaszsal, ahol proxykiszolgáló-kapcsolatokat konfigurálhat.

Az IoT Edge-ügynök és az IoT Edge hubmodulok konfigurálásához válassza a Futtatókörnyezet Gépház a varázsló első lépésében.

Képernyőkép a speciális Edge-futtatókörnyezet beállításainak konfigurálásáról.

Adja hozzá a https_proxy környezeti változót az IoT Edge-ügynökhöz és az IoT Edge-központ modul futtatókörnyezeti beállításainak definícióihoz. Ha az UpstreamProtocol környezeti változót az IoT Edge-eszköz konfigurációs fájljában is szerepelteti, adja hozzá az IoT Edge-ügynök moduldefiníciójához is.

Az üzembehelyezési jegyzékbe felvett összes többi modul ugyanazt a mintát követi. A módosítások mentéséhez válassza az Alkalmaz lehetőséget.

JSON üzembehelyezési jegyzékfájlok

Ha az IoT Edge-eszközök üzembe helyezését a Visual Studio Code sablonjaival vagy manuálisan JSON-fájlok létrehozásával hozza létre, a környezeti változókat közvetlenül az egyes moduldefiníciókhoz is hozzáadhatja. Ha nem adta hozzá őket az Azure Portalon, vegye fel őket ide a JSON-jegyzékfájlba. Cserélje le <proxy URL> a saját értékére.

Használja a következő JSON-formátumot:

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

A környezeti változók belefoglalásával a moduldefiníciónak az alábbi EdgeHub-példához hasonlóan kell kinéznie:

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

Ha az UpstreamProtocol környezeti változót az IoT Edge-eszközön található confige.yaml fájlba is felvette, adja hozzá az IoT Edge-ügynök moduldefiníciójához is.

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

Forgalomvizsgálati proxyk használata

Egyes proxyk, mint például a Zscaler , meg tudják vizsgálni a TLS által titkosított forgalmat. A TLS forgalomvizsgálata során a proxy által visszaadott tanúsítvány nem a célkiszolgáló tanúsítványa, hanem a proxy saját főtanúsítványa által aláírt tanúsítvány. Alapértelmezés szerint az IoT Edge-modulok (beleértve az edgeAgentet és az edgeHubot) nem bíznak a proxy tanúsítványában, és a TLS kézfogása meghiúsul.

A sikertelen kézfogás megoldásához konfigurálja az operációs rendszert és az IoT Edge-modulokat is, hogy megbízzanak a proxy főtanúsítványában az alábbi lépésekkel.

  1. Konfigurálja a proxytanúsítványt a gazdagép operációs rendszerének megbízható főtanúsítvány-tárolójában. A főtanúsítvány telepítéséről további információt a legfelső szintű hitelesítésszolgáltató telepítése az operációsrendszer-tanúsítványtárolóba című témakörben talál.

  2. Konfigurálja az IoT Edge-eszközt úgy, hogy proxykiszolgálón keresztül kommunikáljon a megbízhatósági csomag tanúsítványára hivatkozva. A megbízhatósági csomag konfigurálásáról további információt a megbízható legfelső szintű hitelesítésszolgáltató (megbízhatósági csomag) kezelése című témakörben talál.

Az IoT Edge által nem felügyelt tárolók forgalomvizsgálati proxytámogatásának konfigurálásához forduljon a proxyszolgáltatóhoz.

Az IoT Edge által kommunikáló célhelyek teljes tartományneve (FQDN-jei)

Ha a proxy tűzfala megköveteli az összes teljes tartománynév hozzáadását az engedélyezési listához az internetkapcsolathoz, tekintse át az IoT Edge-eszközök kapcsolatainak engedélyezése listából, és állapítsa meg, hogy mely teljes tartományneveket kell hozzáadnia.

Következő lépések

További információ az IoT Edge-futtatókörnyezet szerepköreiről.

Az Azure IoT Edge gyakori problémáival és megoldásaival kapcsolatos telepítési és konfigurációs hibák elhárítása