Felsöka din IoT Edge för Linux i Windows-nätverk
Gäller för: IoT Edge 1.4
Viktigt!
IoT Edge 1.5 LTS och IoT Edge 1.4 stöds. IoT Edge 1.4 LTS upphör den 12 november 2024. Om du har en tidigare version läser du Uppdatera IoT Edge.
Om du upplever nätverksproblem med Azure IoT Edge för Linux på Windows (EFLOW) i din miljö använder du den här artikeln som en guide för felsökning och diagnostik. Mer felsökningshjälp finns i Felsöka din IoT Edge för Linux på Windows-enhet .
Isolera problemet
När du felsöker IoT Edge för Linux i Windows-nätverk finns det fyra nätverksfunktioner som kan orsaka problem:
- Konfiguration av IP-adresser
- DNS-konfiguration (Domain Name System)
- Brandväggs- och portkonfigurationer
- Andra komponenter
Mer information om begrepp för EFLOW-nätverk finns i IoT Edge för Linux i Windows-nätverk. Mer information om EFLOW-nätverkskonfigurationer finns i Nätverkskonfiguration för Azure IoT Edge för Linux i Windows.
Kontrollera IP-adresser
Ditt första steg när du felsöker IoT Edge för Linux i Windows-nätverk bör vara att kontrollera konfigurationerna för VM-IP-adress. Om IP-kommunikationen är felkonfigurerad misslyckas alla inkommande och utgående anslutningar.
- Starta en upphöjd PowerShell-session med Kör som administratör.
- Kontrollera IP-adressen som returneras av vm-livscykelagenten. Anteckna IP-adressen och jämför den med den som hämtas från den virtuella datorn i de senare stegen.
Get-EflowVmAddr
- Anslut till den virtuella EFLOW-datorn.
Connect-EflowVm
- Kontrollera konfigurationen av eth0 VM-nätverksgränssnittet.
I utdata bör du se eth0-konfigurationsinformationen . Kontrollera att inet-adressen är korrekt inställd.ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 172.31.100.171 netmask 255.255.240.0 broadcast 172.31.111.255 inet6 fe80::215:5dff:fe2a:2f62 prefixlen 64 scopeid 0x20<link> ether 00:15:5d:2a:2f:62 txqueuelen 1000 (Ethernet) RX packets 115746 bytes 11579209 (11.0 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 976 bytes 154184 (150.5 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Om inet-IP-adressen är tom eller skiljer sig från den som tillhandahålls med hjälp av cmdleten Get-EflowVmAddr
måste du felsöka varför den virtuella EFLOW-datorn har en ogiltig eller ingen tilldelad IP-adress. Använd följande tabell för att felsöka problemet:
Virtuell växel | IP-adresstilldeling | Felsöka |
---|---|---|
Externt | Statisk IP-adress | Kontrollera att IP-konfigurationen är korrekt konfigurerad. Alla tre parametrarna ip4Address, ip4GateWayAddress och ip4PrefixLength ska användas. IP-adressen som tilldelats den virtuella datorn ska vara giltig och ska inte användas av andra enheter i det externa nätverket. Du kan kontrollera konfigurationerna av EFLOW VM-gränssnittet genom att kontrollera filerna under /etc/systemd/network/ . |
Externt | DHCP | Kontrollera att det finns en DHCP-server i det externa nätverket. Om ingen DHCP-server är tillgänglig använder du statiska IP-konfigurationer. Kontrollera också att DHCP-servern inte har någon brandväggsprincip för MAC-adresser. Om den har det kan du hämta EFLOW MAC-adressen med hjälp av cmdleten Get-EflowVmAddr . |
Standardväxel | DHCP | I allmänhet är problemet relaterat till ett fel i standardväxeln. Prova att starta om Windows-värdoperativsystemet. Om problemet kvarstår kan du prova att inaktivera och aktivera Hyper-V |
Internt | Statisk IP-adress | Kontrollera att IP-konfigurationen är korrekt konfigurerad. Alla tre parametrarna ip4Address, ip4GateWayAddress och ip4PrefixLength ska användas. IP-adressen som tilldelats den virtuella datorn ska vara giltig och ska inte användas av andra enheter i det interna nätverket. För att ansluta till Internet måste du också konfigurera en NAT-tabell. Följ NAT-konfigurationsstegen i Azure IoT Edge för Linux när du skapar en virtuell Windows-växel. |
Internt | DHCP | Kontrollera att det finns en DHCP-server i det interna nätverket. Om du vill konfigurera en DHCP-server och en NAT-tabell på Windows Server följer du stegen i Azure IoT Edge för Linux när du skapar en virtuell Windows-växel. Om ingen DHCP-server är tillgänglig använder du statiska IP-konfigurationer. |
Varning
I vissa fall kan du behöva några extra konfigurationer om du använder den externa virtuella växeln på en virtuell Windows Server- eller klientdator. Mer information om kapslade virtualiseringskonfigurationer finns i Kapslad virtualisering för Azure IoT Edge för Linux i Windows.
Om du fortfarande har problem med IP-adresstilldelaren kan du prova att konfigurera en annan virtuell Windows- eller Linux-dator och tilldela samma växel och IP-konfiguration. Om du har samma problem med den nya virtuella datorn som inte är EFLOW är problemet troligtvis med den virtuella växeln eller IP-konfigurationen och det är inte specifikt för EFLOW.
Kontrollera DNS-konfigurationen (Domain Name System)
Det andra steget när du felsöker IoT Edge för Linux i Windows-nätverk bör vara att kontrollera de DNS-servrar som tilldelats till den virtuella EFLOW-datorn. Information om hur du kontrollerar DNS-konfigurationen för den virtuella EFLOW-datorn finns i Nätverkskonfiguration för Azure IoT Edge för Linux i Windows. Om adresslösningen fungerar är problemet sannolikt relaterat till brandväggs- eller säkerhetskonfigurationer i nätverket.
Den virtuella EFLOW-datorn använder den systemupplösade tjänsten för att hantera DNS-matchningen. Mer information om den här tjänsten finns i Systemd-resolved. Om du vill konfigurera en specifik DNS-serveradress kan du använda cmdleten Set-EflowVmDnsServers
. Om du behöver ytterligare information om DNS-konfigurationen kan du kontrollera /etc/systemd/resolved.conf och den systemupplösade tjänsten med hjälp av sudo systemctl status systemd-resolved
kommandot . Du kan också ange en specifik DNS-server som en del av modulkonfigurationen, se Alternativ 2: Ange DNS-server i IoT Edge-distribution per modul.
Adresslösningen kan misslyckas av flera orsaker. Först kan DNS-servrarna konfigureras korrekt, men de kan inte nås från den virtuella EFLOW-datorn. Om DNS-servrarna svarar på ICMP-pingtrafik kan du försöka pinga DNS-servrarna för att kontrollera nätverksanslutningen.
- Starta en upphöjd PowerShell-session med Kör som administratör.
- Anslut till den virtuella EFLOW-datorn.
Connect-EflowVm
- Pinga DNS-serveradressen och kontrollera svaret.
ping <DNS-Server-IP-Address>
Dricks
Om servern kan nås bör du få ett svar och problemet kan vara relaterat till andra DNS-serverkonfigurationer. Om det inte finns något svar har du förmodligen ett anslutningsproblem till servern.
För det andra begränsar vissa nätverksmiljöer åtkomsten för DNS-servrarna till specifika allowlist-adresser. I så fall kontrollerar du först att du kan komma åt DNS-servern från Windows-värdoperativsystemet och kontrollera sedan med nätverksteamet om du behöver lägga till EFLOW IP-adressen i en tillåtna lista.
Slutligen blockerar vissa nätverksmiljöer offentliga DNS-servrar, till exempel Google DNS (8.8.8.8 och 8.8.4.4). I så fall kan du prata med nätverksmiljöteamet för att definiera en giltig DNS-server och sedan konfigurera den med hjälp av cmdleten Set-EflowVmDnsServers
.
Kontrollera konfigurationsreglerna för brandväggen och porten
Azure IoT Edge för Linux i Windows tillåter kommunikation från en lokal server till Azure-molnet med hjälp av Azure IoT Hub-protokoll som stöds. Mer information om IoT Hub-protokoll finns i välja ett kommunikationsprotokoll. Mer information om brandväggs- och portkonfigurationer för IoT Hub finns i Felsöka din IoT Edge-enhet.
IoT Edge för Linux i Windows är fortfarande beroende av det underliggande Windows-värdoperativsystemet och nätverkskonfigurationen. Därför är det absolut nödvändigt att se till att rätt nätverks- och brandväggsregler konfigureras för säker gräns-till-molnkommunikation. Följande tabell kan användas som en riktlinje när du konfigurerar brandväggsregler för de underliggande servrar där Azure IoT Edge för Linux på Windows-körningen finns:
Protokoll | Port | Inkommande | Utgående | Vägledning |
---|---|---|---|---|
MQTT | 8883 | BLOCKERAD (standard) | BLOCKERAD (standard) | Konfigurera utgående (utgående) som Öppen när du använder MQTT som kommunikationsprotokoll. 1883 för MQTT stöds inte av IoT Edge. – Inkommande anslutningar (inkommande) ska blockeras. |
AMQP | 5671 | BLOCKERAD (standard) | ÖPPNA (standard) | Standardprotokoll för kommunikation för IoT Edge. Måste konfigureras för att vara Öppen om Azure IoT Edge inte har konfigurerats för andra protokoll som stöds eller AMQP är önskat kommunikationsprotokoll. 5672 för AMQP stöds inte av IoT Edge. Blockera den här porten när Azure IoT Edge använder ett annat protokoll som stöds av IoT Hub. Inkommande (inkommande) anslutningar ska blockeras. |
HTTPS | 443 | BLOCKERAD (standard) | ÖPPNA (standard) | Konfigurera utgående (utgående) som Öppna på port 443 för IoT Edge-etablering. Den här konfigurationen krävs när du använder manuella skript eller Azure IoT Device Provisioning Service (DPS). Inkommande (inkommande) anslutning bör endast vara Öppen för två specifika scenarier: 1. Om du har en transparent gateway med underordnade enheter som kan skicka metodbegäranden. I det här fallet behöver port 443 inte vara öppen för externa nätverk för att ansluta till IoT Hub eller tillhandahålla IoT Hub-tjänster via Azure IoT Edge. Den inkommande regeln kan därför begränsas till att endast öppna Inkommande (inkommande) från det interna nätverket. 2. För C2D-scenarier (klient till enhet). 80 för HTTP stöds inte av IoT Edge. Om icke-HTTP-protokoll (till exempel AMQP eller MQTT) inte kan konfigureras i företaget; meddelandena kan skickas via WebSockets. Port 443 används i så fall för WebSocket-kommunikation. |
Kommentar
Om du använder en extern virtuell växel måste du lägga till lämpliga brandväggsregler för de modulportmappningar som du använder i den virtuella EFLOW-datorn.
Mer information om brandväggen för virtuella EFLOW-datorer finns i IoT Edge för Linux på Windows bezbednost. Använd följande steg för att kontrollera reglerna för den virtuella EFLOW-datorn:
- Starta en upphöjd PowerShell-session med Kör som administratör.
- Anslut till den virtuella EFLOW-datorn.
Connect-EflowVm
- Visa en lista över iptables-brandväggsregler .
sudo iptables -L
Om du vill lägga till en brandväggsregel i den virtuella EFLOW-datorn kan du använda PowerShell-cmdletarna EFLOW Util – Firewall Rules . Du kan också skapa samma regler genom att följa dessa steg:
- Starta en upphöjd PowerShell-session med Kör som administratör.
- Ansluta till den virtuella EFLOW-datorn
Connect-EflowVm
- Lägg till en brandväggsregel för att acceptera inkommande trafik till <port> för <protokolltrafik> (udp eller tcp).
sudo iptables -A INPUT -p <protocol> --dport <port> -j ACCEPT
- Spara slutligen reglerna så att de återskapas vid varje vm-start
sudo iptables-save | sudo tee /etc/systemd/scripts/ip4save
Kontrollera andra konfigurationer
Det finns flera andra orsaker till att nätverkskommunikationen kan misslyckas. I följande avsnitt visas bara ett par problem som användare har stött på tidigare.
Den virtuella EFLOW-datorn svarar inte på ping-begäranden (ICMP-trafik).
Som standard inaktiveras ICMP-pingtrafiksvaret i brandväggen för den virtuella EFLOW-datorn. Om du vill svara på ping-begäranden tillåter du ICMP-trafiken med hjälp av följande PowerShell-cmdlet:
Invoke-EflowVmCommand "sudo iptables -A INPUT -p icmp --icmp-type 8 -s 0/0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT"
Det gick inte att identifiera enheter med multicast-trafik.
För att tillåta enhetsidentifiering via multicast måste den virtuella Hyper-V-datorn konfigureras för att använda en extern växel. För det andra måste den anpassade IoT Edge-modulen konfigureras för att använda värdnätverket via alternativen för att skapa containrar:
{ "HostConfig": { "NetworkMode": "host" }, "NetworkingConfig": { "EndpointsConfig": { "host": {} } } }
Brandväggsregler har lagts till, men trafiken kan fortfarande inte nå IoT Edge-modulen.
Om kommunikationen fortfarande inte fungerar när du har lagt till lämpliga brandväggsregler kan du prova att helt inaktivera brandväggen för att felsöka.
sudo iptables -F sudo iptables -X sudo iptables -P INPUT ACCEPT sudo iptables -P OUTPUT ACCEPT sudo iptables -P FORWARD ACCEPT
När du är klar startar du om den virtuella datorn (
Stop-EflowVm
ochStart-EflowVm
) för att återställa brandväggen för den virtuella EFLOW-datorn till normalt tillstånd.Det går inte att ansluta till Internet när du använder flera nätverkskort.
I allmänhet är det här problemet relaterat till ett routningsproblem. Kontrollera Hur du konfigurerar Azure IoT Edge för Linux på Windows Industrial IoT & DMZ-konfiguration för att konfigurera en statisk väg.
Nästa steg
Tror du att du har hittat ett fel i IoT Edge-plattformen? Skicka in ett problem så att vi kan fortsätta att förbättra.
Om du har fler frågor skapar du en supportbegäran om hjälp.