Configurazione di rete per Azure IoT Edge per Linux in Windows
Si applica a: IoT Edge 1.4
Importante
Le versioni di IoT Edge 1.5 LTS e IoT Edge 1.4 sono supportate. IoT Edge 1.4 LTS è di fine vita il 12 novembre 2024. Se si usa una versione precedente, vedere Aggiornare IoT Edge.
Questo articolo illustra come decidere quale opzione di rete è ideale per lo scenario e fornire informazioni dettagliate sui requisiti di configurazione di IoT Edge per Linux in Windows (EFLOW).
Per connettere la macchina virtuale IoT Edge per Linux in Windows (EFLOW) tramite una rete all'host, ad altre macchine virtuali nell'host Windows e ad altri dispositivi/posizioni in una rete esterna, è necessario configurare di conseguenza la rete della macchina virtuale.
Il modo più semplice per stabilire la rete di base negli SKU del client Windows consiste nell'usare l'opzione predefinita, già creata quando si abilita la funzionalità Windows Hyper-V. Tuttavia, nei dispositivi SKU di Windows Server, la rete è un po'più complessa perché non è disponibile alcun commutatore predefinito. Per altre informazioni sulla creazione di commutatori virtuali per Windows Server, vedere Creare un commutatore virtuale per Linux in Windows.
Per altre informazioni sui concetti relativi alla rete EFLOW, vedere IoT Edge per Linux in rete Windows.
Configurare il commutatore virtuale della macchina virtuale
Il primo passaggio prima di distribuire la macchina virtuale EFLOW consiste nel determinare il tipo di commutatore virtuale usato. Per altre informazioni sui commutatori virtuali supportati da EFLOW, vedere Opzioni del commutatore virtuale EFLOW. Dopo aver determinato il tipo di commutatore virtuale da usare, assicurarsi di creare correttamente il commutatore virtuale. Per altre informazioni sulla creazione di commutatori virtuali, vedere Creare un commutatore virtuale per le macchine virtuali Hyper-V.
Nota
Se si usa il client Windows e si vuole usare l'opzione predefinita, non è necessaria alcuna creazione dell'opzione e non -vSwitchType
sono necessari parametri e -vSwitchName
.
Nota
Se si usa una macchina virtuale Windows all'interno dell'infrastruttura VMware e del commutatore esterno, vedere Virtualizzazione annidata EFLOW.
Dopo aver creato il commutatore virtuale e prima di avviare la distribuzione, assicurarsi che il nome e il tipo del commutatore virtuale siano configurati correttamente e siano elencati nel sistema operativo host Windows. Per elencare tutti i commutatori virtuali nel sistema operativo host Windows, in una sessione di PowerShell con privilegi elevati, usare il cmdlet di PowerShell seguente:
Get-VmSwitch
A seconda dei commutatori virtuali dell'host Windows, l'output dovrebbe essere simile al seguente:
Name SwitchType NetAdapterInterfaceDescription
---- ---------- ------------------------------
Default Switch Internal
IntOff Internal
EFLOW-Ext External
Per usare un commutatore virtuale specifico (interno o esterno), assicurarsi di specificare i parametri corretti: -vSwitchName
e vSwitchType
. Ad esempio, se si vuole distribuire la macchina virtuale EFLOW con un commutatore esterno denominato EFLOW-Ext, in una sessione di PowerShell con privilegi elevati usare il comando seguente:
Deploy-Eflow -vSwitchType "External" -vSwitchName "EFLOW-Ext"
Configurare l'allocazione degli indirizzi IP della macchina virtuale
Il secondo passaggio dopo aver deciso il tipo di commutatore virtuale in uso consiste nel determinare il tipo di allocazione degli indirizzi IP del commutatore virtuale. Per altre informazioni sulle opzioni di allocazione IP, vedere Allocazioni IP supportate da EFLOW. A seconda del tipo di commutatore virtuale in uso, assicurarsi di usare un meccanismo di allocazione degli indirizzi IP supportato.
Per impostazione predefinita, se non è configurato alcun indirizzo IP statico, la macchina virtuale EFLOW tenta di allocare un indirizzo IP al commutatore virtuale tramite DHCP. Assicurarsi che nella rete del commutatore virtuale sia presente un server DHCP; se non disponibile, l'installazione della macchina virtuale EFLOW non riesce ad allocare un indirizzo IP e l'installazione non riesce. Se si usa l'opzione predefinita, non è necessario verificare la presenza di un server DHCP, perché il commutatore virtuale ha già DHCP per impostazione predefinita. Tuttavia, se si usa un commutatore virtuale interno o esterno , è possibile verificare seguendo questa procedura:
- Apri un prompt dei comandi.
- Visualizzare tutte le configurazioni IP e le informazioni
ipconfig /all
- Se si usa un commutatore virtuale esterno , controllare l'interfaccia di rete usata per creare il commutatore virtuale. Se si usa un commutatore virtuale interno , è sufficiente cercare il nome usato per l'opzione. Dopo aver individuato l'opzione, controllare se
DHCP Enabled
è indicato Sì o No e controllare l'indirizzoDHCP server
.
Se si usa un indirizzo IP statico, è necessario specificare tre parametri durante la distribuzione EFLOW: -ip4Address
e ip4GatewayAddress
ip4PrefixLength
. Se manca o non è corretto un parametro, l'installazione della macchina virtuale EFLOW non riesce ad allocare un indirizzo IP e l'installazione non riesce. Per altre informazioni sulla distribuzione di macchine virtuali EFLOW, vedere Funzioni di PowerShell per IoT Edge per Linux in Windows. Ad esempio, se si vuole distribuire la macchina virtuale EFLOW con un commutatore esterno denominato EFLOW-Ext e una configurazione IP statica, con un indirizzo IP uguale a 192.168.0.2, l'indirizzo IP del gateway è uguale a 192.168.0.1 e la lunghezza del prefisso IP uguale a 24, quindi in una sessione di PowerShell con privilegi elevati usare il comando seguente:
Deploy-Eflow -vSwitchType "External" -vSwitchName "EFLOW-Ext" -ip4Address "192.168.0.2" -ip4GatewayAddress "192.168.0.1" -ip4PrefixLength "24"
Suggerimento
La macchina virtuale EFLOW manterrà lo stesso indirizzo MAC per il commutatore virtuale principale (usato durante la distribuzione) tra i riavvii. Se si usa la prenotazione di indirizzi MAC DHCP, è possibile ottenere l'indirizzo MAC del commutatore virtuale principale usando il cmdlet di PowerShell: Get-EflowVmAddr
.
Controllare l'allocazione IP
Esistono diversi modi per controllare l'indirizzo IP allocato alla macchina virtuale EFLOW. Prima di tutto, usando una sessione di PowerShell con privilegi elevati, usare il cmdlet EFLOW:
Get-EflowVmAddr
L'output dovrebbe essere simile al seguente:
C:\> Get-EflowVmAddr
[03/31/2022 12:54:31] Querying IP and MAC addresses from virtual machine (DESKTOP-EFLOW)
- Virtual machine MAC: 00:15:5d:4e:15:2c
- Virtual machine IP : 172.27.120.111 retrieved directly from virtual machine
00:15:5d:4e:15:2c
172.27.120.111
Un altro modo consiste nell'usare il Connect-Eflow
cmdlet per eseguire la connessione remota alla macchina virtuale, quindi è possibile usare il ifconfig eth0
comando bash e verificare la presenza dell'interfaccia eth0 . L'output avrà un aspetto analogo al seguente:
eth0 Link encap:Ethernet HWaddr 00:15:5d:4e:15:2c
inet addr:172.27.120.111 Bcast:172.27.127.255 Mask:255.255.240.0
inet6 addr: fe80::215:5dff:fe4e:152c/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:5636 errors:0 dropped:0 overruns:0 frame:0
TX packets:2214 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:766832 (766.8 KB) TX bytes:427274 (427.2 KB)
Configurare i server DNS della macchina virtuale
Per impostazione predefinita, la macchina virtuale EFLOW non ha alcuna configurazione DNS. Le distribuzioni che usano DHCP tentano di ottenere la configurazione DNS propagata dal server DHCP. Se si usa un indirizzo IP statico, il server DNS deve essere configurato manualmente. Per altre informazioni sul DNS della macchina virtuale EFLOW, vedere Configurazione DNS EFLOW.
Per controllare i server DNS usati dall'interfaccia predefinita (eth0), è possibile usare il comando seguente:
resolvectl | grep eth0 -A 8
L'output dovrebbe essere simile al seguente. Controllare gli indirizzi IP dei campi "Server DNS correnti" e "Server DNS" dell'elenco. Se non è presente alcun indirizzo IP o l'indirizzo IP non è un indirizzo IP del server DNS valido, il servizio DNS non funzionerà.
Link 2 (eth0)
Current Scopes: DNS
LLMNR setting: yes
MulticastDNS setting: no
DNSOverTLS setting: no
DNSSEC setting: no
DNSSEC supported: no
Current DNS Server: 172.27.112.1
DNS Servers: 172.27.112.1
Se è necessario configurare manualmente gli indirizzi del server DNS, è possibile usare il cmdlet Set-EflowVmDNSServers
di PowerShell EFLOW . Per altre informazioni sulla configurazione DNS della macchina virtuale EFLOW, vedere Funzioni di PowerShell per IoT Edge per Linux in Windows.
Controllare la risoluzione DNS
Esistono diversi modi per controllare la risoluzione DNS.
Prima di tutto, dall'interno della macchina virtuale EFLOW, usare il resolvectl query
comando per eseguire query su un URL specifico. Ad esempio, per verificare se la risoluzione dei nomi funziona per l'indirizzo microsoft.com, usare:
resolvectl query microsoft.com
L'output avrà un aspetto analogo al seguente:
PS C:\> resolvectl query
microsoft.com: 40.112.72.205
40.113.200.201
13.77.161.179
104.215.148.63
40.76.4.15
-- Information acquired via protocol DNS in 1.9ms.
-- Data is authenticated: no
È anche possibile usare il dig
comando per eseguire query su un URL specifico. Ad esempio, per verificare se la risoluzione dei nomi funziona per l'indirizzo microsoft.com, usare:
dig microsoft.com
L'output avrà un aspetto analogo al seguente:
PS C:\> dig microsoft.com
; <<>> DiG 9.16.22 <<>> microsoft.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 36427
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;microsoft.com. IN A
;; ANSWER SECTION:
microsoft.com. 0 IN A 40.112.72.205
microsoft.com. 0 IN A 40.113.200.201
microsoft.com. 0 IN A 13.77.161.179
microsoft.com. 0 IN A 104.215.148.63
microsoft.com. 0 IN A 40.76.4.15
;; Query time: 11 msec
;; SERVER: 127.0
Passaggi successivi
Altre informazioni su Azure IoT Edge per Linux in Sicurezza di Windows.
Rimanere aggiornati con gli aggiornamenti più recenti di IoT Edge per Linux in Windows.