Řešení potíží se sítí IoT Edge pro Linux ve Windows
Platí pro: IoT Edge 1.4
Důležité
Podporované verze azure IoT Edge 1.5 LTS a IoT Edge 1.4. IoT Edge 1.4 LTS končí 12. listopadu 2024. Pokud používáte starší verzi, podívejte se na článek Aktualizace IoT Edge.
Pokud ve vašem prostředí dochází k problémům se sítí pomocí Azure IoT Edge pro Linux ve Windows (EFLOW), použijte tento článek jako průvodce odstraňováním potíží a diagnostikou. Další nápovědu k řešení potíží s virtuálním počítačem EFLOW najdete v tématu Řešení potíží s IoT Edge pro Linux na zařízení s Windows.
Izolace problému
Při řešení potíží se službou IoT Edge pro Linux v sítích s Windows existují čtyři síťové funkce, které by mohly způsobovat problémy:
- Konfigurace IP adres
- Konfigurace DNS (Domain Name System)
- Konfigurace brány firewall a portů
- Další komponenty
Další informace o konceptech sítí EFLOW najdete v tématu IoT Edge pro Linux v sítích s Windows. Další informace o síťových konfiguracích EFLOW najdete v tématu Konfigurace sítí pro Azure IoT Edge pro Linux ve Windows.
Kontrola IP adres
Prvním krokem při řešení potíží se službou IoT Edge pro Linux v sítích s Windows by mělo být kontrola konfigurací IP adres virtuálních počítačů. Pokud je komunikace s IP chybně nakonfigurovaná, všechna příchozí a odchozí připojení selžou.
- Spusťte relaci PowerShellu se zvýšenými oprávněními pomocí příkazu Spustit jako správce.
- Zkontrolujte IP adresu vrácenou agentem životního cyklu virtuálního počítače. Poznamenejte si IP adresu a porovnejte ji s IP adresou získanou z virtuálního počítače v dalších krocích.
Get-EflowVmAddr
- Připojte se k virtuálnímu počítači EFLOW.
Connect-EflowVm
- Zkontrolujte konfiguraci síťového rozhraní virtuálního počítače eth0 .
Ve výstupu by se měly zobrazit informace o konfiguraci eth0 . Ujistěte se, že je správně nastavená adresa sady .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
Pokud je IP adresa sady prázdná nebo jiná než ip adresa poskytovaná pomocí rutinyGet-EflowVmAddr
, musíte vyřešit potíže s tím, proč má virtuální počítač EFLOW přiřazenou neplatnou nebo žádnou IP adresu. Při řešení tohoto problému použijte následující tabulku:
Virtuální přepínač | Přiřazení IP adres | Odstraňování potíží |
---|---|---|
Externí | Statická IP adresa | Ujistěte se, že je správně nastavená konfigurace PROTOKOLU IP. Měly by se použít všechny tři parametry ip4Address, ip4GateWayAddress a ip4PrefixLength. IP adresa přiřazená virtuálnímu počítači by měla být platná a nepoužívala ji jiné zařízení v externí síti. Konfigurace rozhraní virtuálního počítače EFLOW můžete zkontrolovat tak, že zkontrolujete soubory v části /etc/systemd/network/ . |
Externí | DHCP | Ujistěte se, že je v externí síti server DHCP. Pokud není k dispozici žádný server DHCP, použijte konfigurace statických IP adres. Ujistěte se také, že server DHCP nemá žádné zásady brány firewall týkající se adres MAC. Pokud ano, můžete získat adresu MAC EFLOW pomocí rutiny Get-EflowVmAddr . |
Výchozí přepínač | DHCP | Obecně platí, že problém souvisí s poruchou výchozího přepínače. Zkuste restartovat hostitelský operační systém Windows. Pokud potíže potrvají, zkuste hyper-V zakázat a povolit. |
Interní | Statická IP adresa | Ujistěte se, že je správně nastavená konfigurace PROTOKOLU IP. Měly by se použít všechny tři parametry ip4Address, ip4GateWayAddress a ip4PrefixLength. IP adresa přiřazená virtuálnímu počítači by měla být platná a nepoužívala ji jiné zařízení v interní síti. Pokud se chcete připojit k internetu, budete muset nastavit tabulku NAT. Postupujte podle kroků konfigurace překladu adres (NAT) ve službě Azure IoT Edge pro Linux při vytváření virtuálního přepínače s Windows. |
Interní | DHCP | Ujistěte se, že je v interní síti server DHCP. Pokud chcete nastavit server DHCP a tabulku NAT na Windows Serveru, postupujte podle kroků v Azure IoT Edge pro Linux při vytváření virtuálního přepínače s Windows. Pokud není k dispozici žádný server DHCP, použijte konfigurace statických IP adres. |
Upozorňující
Pokud v některých případech používáte externí virtuální přepínač na virtuálním počítači s Windows Serverem nebo klientem, možná budete potřebovat další konfigurace. Další informace o vnořených konfiguracích virtualizace najdete v tématu Vnořené virtualizace pro Azure IoT Edge pro Linux ve Windows.
Pokud stále máte problémy s přiřazováním IP adres, zkuste nastavit jiný virtuální počítač s Windows nebo Linuxem a přiřadit stejnou konfiguraci přepínače a IP adresy. Pokud máte stejný problém s novým virtuálním počítačem bez EFLOW, je pravděpodobné, že problém souvisí s konfigurací virtuálního přepínače nebo IP adresy a není specifický pro EFLOW.
Kontrola konfigurace DNS (Domain Name System)
Druhým krokem při řešení potíží se službou IoT Edge pro Linux v sítích s Windows by mělo být kontrola serverů DNS přiřazených k virtuálnímu počítači EFLOW. Pokud chcete zkontrolovat konfiguraci DNS virtuálního počítače EFLOW, přečtěte si téma Konfigurace sítí pro Azure IoT Edge pro Linux ve Windows. Pokud řešení adresy funguje, problém pravděpodobně souvisí s konfigurací brány firewall nebo zabezpečení v síti.
Virtuální počítač EFLOW ke správě překladu DNS používá systémově přeloženou službu. Další informace o této službě naleznete v tématu Systemd-resolved. K nastavení konkrétní adresy serveru DNS můžete použít rutinu Set-EflowVmDnsServers
. Pokud potřebujete další informace o konfiguraci DNS, můžete pomocí příkazu zkontrolovat /etc/systemd/resolved.conf a službu sudo systemctl status systemd-resolved
přeloženou systémem. Můžete také nastavit konkrétní server DNS jako součást konfigurace modulu, viz možnost 2: Nastavení serveru DNS v nasazení IoT Edge pro jednotlivé moduly.
Řešení adresy může selhat z několika důvodů. Nejprve je možné správně nakonfigurovat servery DNS, ale z virtuálního počítače EFLOW se nedosáhly. Pokud servery DNS reagují na provoz ping protokolu ICMP, můžete zkusit otestovat připojení k síti pomocí příkazu ping na servery DNS.
- Spusťte relaci PowerShellu se zvýšenými oprávněními pomocí příkazu Spustit jako správce.
- Připojte se k virtuálnímu počítači EFLOW.
Connect-EflowVm
- Odešlete příkaz ping na adresu serveru DNS a zkontrolujte odpověď.
ping <DNS-Server-IP-Address>
Tip
Pokud je server dostupný, měli byste získat odpověď a váš problém může souviset s jinými konfiguracemi serveru DNS. Pokud odpověď neexistuje, pravděpodobně máte problém s připojením k serveru.
Za druhé, některá síťová prostředí omezí přístup serverů DNS na konkrétní adresy seznamu povolených. Pokud ano, nejprve se ujistěte, že máte přístup k serveru DNS z hostitelského operačního systému Windows, a pak se obraťte na síťový tým, pokud potřebujete přidat IP adresu EFLOW do seznamu povolených.
Některá síťová prostředí blokují veřejné servery DNS, jako je Google DNS (8.8.8.8 a 8.8.4.4). Pokud ano, promluvte si se svým týmem síťového prostředí, abyste definovali platný server DNS, a pak ho nastavte pomocí rutiny Set-EflowVmDnsServers
.
Kontrola pravidel konfigurace brány firewall a portu
Azure IoT Edge pro Linux ve Windows umožňuje komunikaci z místního serveru do cloudu Azure pomocí podporovaných protokolů Azure IoT Hubu. Další informace o protokolech IoT Hubu najdete v tématu Volba komunikačního protokolu. Další informace o konfiguraci brány firewall a portu služby IoT Hub najdete v tématu Řešení potíží se zařízením IoT Edge.
IoT Edge pro Linux ve Windows je stále závislý na základním hostitelském operačním systému Windows a konfiguraci sítě. Proto je nezbytné zajistit, aby byla pro zabezpečenou komunikaci s cloudem nastavená správná pravidla sítě a brány firewall. Následující tabulka se dá použít jako vodítko při hostování pravidel brány firewall konfigurace pro základní servery, kde je hostovaná služba Azure IoT Edge pro Linux v prostředí Windows Runtime:
Protokol | Port | Příchozí | Odchozí | Pokyny |
---|---|---|---|---|
MQTT | 8883 | BLOCKED (výchozí) | BLOCKED (výchozí) | Nakonfigurujte , aby odchozí (odchozí) byl při použití MQTT jako komunikačního protokolu otevřený . IoT Edge nepodporuje 1883 pro MQTT. – Příchozí (příchozí) připojení by měla být blokovaná. |
AMQP | 5671 | BLOCKED (výchozí) | OPEN (výchozí) | Výchozí komunikační protokol pro IoT Edge Musí být nakonfigurovaná tak, aby byla otevřená , pokud azure IoT Edge není nakonfigurovaný pro jiné podporované protokoly nebo AMQP je požadovaný komunikační protokol. IoT Edge nepodporuje 5672 pro AMQP. Tento port zablokujte, když Azure IoT Edge používá jiný podporovaný protokol ioT Hubu. Příchozí (příchozí) připojení by měla být blokovaná. |
HTTPS | 443 | BLOCKED (výchozí) | OPEN (výchozí) | Nakonfigurujte odchozí (odchozí) tak, aby byl otevřený na portu 443 pro zřizování IoT Edge. Tato konfigurace se vyžaduje při použití ručních skriptů nebo služby Azure IoT Device Provisioning Service (DPS). Příchozí (příchozí) připojení by mělo být otevřené jenom pro dva konkrétní scénáře: 1. Pokud máte transparentní bránu s podřízenými zařízeními, která mohou odesílat žádosti o metody. V takovém případě nemusí být port 443 otevřený pro externí sítě pro připojení ke službě IoT Hub nebo poskytování služeb IoT Hubu prostřednictvím Azure IoT Edge. Příchozí pravidlo by proto mohlo být omezeno pouze na otevření příchozí (příchozí) z interní sítě. 2. Scénáře pro klient-zařízení (C2D). IoT Edge nepodporuje 80 pro HTTP. Pokud protokoly jiné než HTTP (například AMQP nebo MQTT) nejde nakonfigurovat v podniku; zprávy lze odesílat přes webSockety. Port 443 se v takovém případě používá pro komunikaci protokolu WebSocket. |
Poznámka:
Pokud používáte externí virtuální přepínač, nezapomeňte přidat příslušná pravidla brány firewall pro mapování portů modulu, které používáte uvnitř virtuálního počítače EFLOW.
Další informace o bráně firewall virtuálních počítačů EFLOW najdete v tématu IoT Edge pro Linux na Zabezpečení Windows. Pokud chcete zkontrolovat pravidla virtuálního počítače EFLOW, postupujte následovně:
- Spusťte relaci PowerShellu se zvýšenými oprávněními pomocí příkazu Spustit jako správce.
- Připojte se k virtuálnímu počítači EFLOW.
Connect-EflowVm
- Vypíše pravidla firewallu iptables .
sudo iptables -L
Pokud chcete do virtuálního počítače EFLOW přidat pravidlo brány firewall, můžete použít rutiny PowerShellu pro pravidla brány firewall. Stejným postupem můžete také dosáhnout vytvoření stejných pravidel:
- Spusťte relaci PowerShellu se zvýšenými oprávněními pomocí příkazu Spustit jako správce.
- Připojení k virtuálnímu počítači EFLOW
Connect-EflowVm
- Přidejte pravidlo brány firewall pro příjem příchozího provozu na <port> protokolu> (udp nebo tcp).<
sudo iptables -A INPUT -p <protocol> --dport <port> -j ACCEPT
- Nakonec zachovají pravidla tak, aby se znovu vytvořily na každém spuštění virtuálního počítače.
sudo iptables-save | sudo tee /etc/systemd/scripts/ip4save
Kontrola dalších konfigurací
Existuje několik dalších důvodů, proč může dojít k selhání síťové komunikace. V následující části najdete několik problémů, se kterými se uživatelé v minulosti setkávali.
Virtuální počítač EFLOW nebude odpovídat na požadavky ping (provoz ICMP).
Ve výchozím nastavení je v bráně firewall virtuálního počítače EFLOW zakázaná odpověď na provoz ping protokolu ICMP. Pokud chcete reagovat na požadavky ping, povolte provoz PROTOKOLU ICMP pomocí následující rutiny PowerShellu:
Invoke-EflowVmCommand "sudo iptables -A INPUT -p icmp --icmp-type 8 -s 0/0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT"
Zjišťování zařízení selhalo pomocí provozu vícesměrového vysílání.
Pokud chcete povolit zjišťování zařízení prostřednictvím vícesměrového vysílání, musí být virtuální počítač Hyper-V nakonfigurovaný tak, aby používal externí přepínač. Za druhé musí být vlastní modul IoT Edge nakonfigurovaný tak, aby používal síť hostitelů prostřednictvím možností vytvoření kontejneru:
{ "HostConfig": { "NetworkMode": "host" }, "NetworkingConfig": { "EndpointsConfig": { "host": {} } } }
Přidali jsme pravidla brány firewall, ale provoz se stále nemůže spojit s modulem IoT Edge.
Pokud komunikace po přidání příslušných pravidel brány firewall stále nefunguje, zkuste bránu firewall úplně zakázat a vyřešit potíže.
sudo iptables -F sudo iptables -X sudo iptables -P INPUT ACCEPT sudo iptables -P OUTPUT ACCEPT sudo iptables -P FORWARD ACCEPT
Po dokončení restartujte virtuální počítač (
Stop-EflowVm
aStart-EflowVm
) a získejte bránu firewall virtuálního počítače EFLOW zpět do normálního stavu.Nejde se připojit k internetu při použití více síťových adaptérů.
Obecně platí, že tento problém souvisí se směrováním. Zkontrolujte , jak nakonfigurovat Azure IoT Edge pro Linux v konfiguraci Windows Industrial IoT &DMZ a nastavit statickou trasu.
Další kroky
Myslíte si, že jste v platformě IoT Edge našli chybu? Odešlete problém , abychom mohli pokračovat v vylepšování.
Pokud máte další otázky, vytvořte žádost o pomoc.