Configurazione di rete per Azure IoT Edge per Linux in Windows

Si applica a: Segno di spunta IoT Edge 1.4 IoT Edge 1.4

Importante

IoT Edge 1.5 LTS e IoT Edge 1.4 sono versioni supportate. IoT Edge 1.4 LTS raggiungerà la fine del ciclo di 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 in uso e fornire informazioni dettagliate sui requisiti di configurazione di IoT Edge per Linux in Windows.

Per connettere la macchina virtuale IoT Edge per Linux in Windows 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 prevede l'utilizzo del commutatore predefinito, che viene già creato quando si abilita la funzionalità Windows Hyper-V. Tuttavia, nei dispositivi con SKU Windows Server, la configurazione della rete risulta più complessa perché non è disponibile un 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 relatiivi alla rete in Azure IoT Edge per Linux in Windows, vedere Configurazione di rete per Azure IoT Edge per Linux in Windows.

Configurare il commutatore virtuale della macchina virtuale

Il primo passaggio prima di distribuire la macchina virtuale Azure IoT Edge per Linux in Windows consiste nel determinare il tipo di commutatore virtuale da usare. Per altre informazioni sui commutatori virtuali supportati da Azure IoT Edge per Linux in Windows, vedere Opzioni del commutatore virtuale in Azure IoT Edge per Linux in Windows. Dopo aver determinato il tipo di commutatore virtuale da usare, assicurarsi di crearlo correttamente. Per altre informazioni sulla creazione del commutatore virtuale, vedere Creare un commutatore virtuale per le macchine virtuali Hyper-V.

Nota

Se si usa il client Windows e si vuole usare il commutatore predefinito, non occorre creare alcun commutatore e non sono necessari parametri -vSwitchType e -vSwitchName.

Nota

Se si usa una macchina virtuale Windows all'interno dell'infrastruttura VMware e un commutatore esterno, vedere Virtualizzazione annidata di Azure IoT Edge per Linux in Windows.

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 sarà 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 Azure IoT Edge per Linux in Windows 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 da usare consiste nel determinare il tipo di allocazione degli indirizzi IP del commutatore virtuale. Per altre informazioni sulle opzioni di allocazione degli indirizzi IP, vedere Allocazioni IP supportate da Azure IoT Edge per Linux in Windows. 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 Azure IoT Edge per Linux in Windows tenta di allocare un indirizzo IP al commutatore virtuale usando DHCP. Assicurarsi che nella rete del commutatore virtuale sia presente un server DHCP. Se non è disponibile, l'installazione della macchina virtuale Azure IoT Edge per Linux in Windows non riesce ad allocare un indirizzo IP e l'installazione ha esito negtivo. Se si usa il commutatore predefinito, non è necessario verificare la presenza di un server DHCP, perché il commutatore virtuale ha già un protocollo DHCP per impostazione predefinita. Tuttavia, se si usa un commutatore virtuale interno o esterno, è possibile verificare la presenza del server seguendo questa procedura:

  1. Apri un prompt dei comandi.
  2. Visualizzare tutte le configurazioni IP e le informazioni
    ipconfig /all
    
  3. 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 il commutatore. Dopo aver individuato il commutatore, verificare se DHCP Enabled indica o Noe controllare l'indirizzo di DHCP server.

Se si usa un indirizzo IP statico, è necessario specificare tre parametri durante la distribuzione di Azure IoT Edge per Linux in Windows: -ip4Address, ip4GatewayAddress e ip4PrefixLength. Se un parametro manca o non è corretto, l'installazione della macchina virtuale di Azure IoT Edge per Linux in Windows non riesce ad allocare un indirizzo IP e l'installazione non ha esito negativo. Per altre informazioni sulla distribuzione di macchine virtuali Azure IoT Edge per Linux in Windows, vedere Funzioni di PowerShell per IoT Edge per Linux in Windows. Se ad esempio si vuole distribuire la macchina virtuale Azure IoT Edge per Linux in Windows con un commutatore esterno denominato EFLOW-Ext e una configurazione IP statica, con indirizzo IP 192.168.0.2, indirizzo IP del gateway 192.168.0.1 e lunghezza del prefisso IP di 24, 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 Azure IoT Edge per Linux in Windows 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.

Verificare l'allocazione degli indirizzi IP

Esistono diversi modi per controllare l'indirizzo IP allocato alla macchina virtuale Azure IoT Edge per Linux in Windows. Prima di tutto, usando una sessione di PowerShell con privilegi elevati, usare il cmdlet Azure IoT Edge per Linux in Windows:

Get-EflowVmAddr

L'output sarà 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 cmdlet Connect-Eflow per connettersi in modalità remota alla macchina virtuale e quindi usare il comando bash ifconfig eth0 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 Azure IoT Edge per Linux in Windows non dispone di alcuna configurazione DNS. Le distribuzioni basate su DHCP tenteranno 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 delle macchine virtuali Azure IoT Edge per Linux in Windows, vedere Configurazione DNS per Azure IoT Edge per Linux in Windows.

Per verificare i server DNS usati dall'interfaccia predefinita (eth0), è possibile usare il comando seguente:

resolvectl | grep eth0 -A 8

L'output sarà 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 di PowerShell Set-EflowVmDNSServers per Azure IoT Edge per Linux in Windows. Per altre informazioni sulla configurazione del DNS delle macchine virtuali Azure IoT Edge per Linux in Windows, 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 Azure IoT Edge per Linux in Windows, usare il comando resolvectl query 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 comando dig 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 sulla Sicurezza di Azure IoT Edge per Linux in Windows.

Rimanere aggiornati con gli aggiornamenti più recenti in IoT Edge per Linux in Windows.