Come creare una macchina virtuale Linux in Azure con più schede di interfaccia di rete

Si applica a: ✔️ Set di scalabilità flessibili di macchine virtuali ✔️ Linux

Questo articolo illustra come creare una macchina virtuale con più schede di interfaccia di rete usando l'interfaccia della riga di comando di Azure.

Creare risorse di supporto

Installare la versione più recente dell'interfaccia della riga di comando di Azure e accedere all'account di Azure con il comando az login.

Nell'esempio seguente sostituire i nomi dei parametri di esempio con i valori desiderati. I nomi dei parametri di esempio includono myResourceGroup, mystorageaccount e myVM.

Creare prima un gruppo di risorse con az group create. L'esempio seguente crea un gruppo di risorse denominato myResourceGroup nella posizione eastus:

az group create --name myResourceGroup --location eastus

Creare la rete virtuale con az network vnet create. L'esempio seguente crea una rete virtuale denominata myVnet e una subnet denominata mySubnetFrontEnd:

az network vnet create \
    --resource-group myResourceGroup \
    --name myVnet \
    --address-prefix 10.0.0.0/16 \
    --subnet-name mySubnetFrontEnd \
    --subnet-prefix 10.0.1.0/24

Creare una subnet per il traffico di back-end con il comando az network vnet subnet create. L'esempio seguente crea una subnet denominata mySubnetBackEnd:

az network vnet subnet create \
    --resource-group myResourceGroup \
    --vnet-name myVnet \
    --name mySubnetBackEnd \
    --address-prefix 10.0.2.0/24

Creare un gruppo di sicurezza di rete con il comando az network nsg create. L'esempio seguente crea un gruppo di sicurezza di rete denominato myNetworkSecurityGroup:

az network nsg create \
    --resource-group myResourceGroup \
    --name myNetworkSecurityGroup

Creare e configurare più schede di interfaccia di rete

Creare due schede di interfaccia di rete con il comando az network nic create. L'esempio seguente crea due schede di interfaccia di rete, denominate myNic1 e myNic2, connesse al gruppo di sicurezza di rete, con una scheda che si connette a ogni subnet:

az network nic create \
    --resource-group myResourceGroup \
    --name myNic1 \
    --vnet-name myVnet \
    --subnet mySubnetFrontEnd \
    --network-security-group myNetworkSecurityGroup
az network nic create \
    --resource-group myResourceGroup \
    --name myNic2 \
    --vnet-name myVnet \
    --subnet mySubnetBackEnd \
    --network-security-group myNetworkSecurityGroup

Creare una macchina virtuale e collegare le schede di interfaccia di rete

Quando si crea la macchina virtuale, specificare le schede di interfaccia di rete create con --nics. L'utente deve anche fare attenzione quando seleziona la dimensione della macchina virtuale. Esistono dei limiti per quanto riguarda il numero totale di schede di rete che è possibile aggiungere. Ulteriori informazioni sulle dimensioni delle macchine virtuali di Linux.

Creare una VM con il comando az vm create. L'esempio seguente crea una VM denominata myVM:

az vm create \
    --resource-group myResourceGroup \
    --name myVM \
    --image Ubuntu2204 \
    --size Standard_DS3_v2 \
    --admin-username azureuser \
    --generate-ssh-keys \
    --nics myNic1 myNic2

Aggiungere le tabelle di routing al sistema operativo guest. A tale scopo, completare i passaggi descritti in Configurare il sistema operativo guest per più schede di interfaccia di rete.

Aggiungere una scheda di interfaccia di rete a una VM

I passaggi precedenti hanno consentito di creare una VM con più schede di interfaccia di rete. È anche possibile aggiungere schede di interfaccia di rete a una macchina virtuale esistente con l'interfaccia della riga di comando di Azure. Le differenti dimensioni della macchina virtuale supportano un numero variabile di schede di rete, pertanto scegliere le dimensioni della macchina virtuale di conseguenza. Se necessario, è possibile ridimensionare una VM.

Creare un'altra scheda di interfaccia di rete con az network nic create. L'esempio seguente crea una scheda di interfaccia rete denominata myNic3 connessa alla subnet back-end e al gruppo di sicurezza di rete creato nei passaggi precedenti:

az network nic create \
    --resource-group myResourceGroup \
    --name myNic3 \
    --vnet-name myVnet \
    --subnet mySubnetBackEnd \
    --network-security-group myNetworkSecurityGroup

Per aggiungere una scheda di interfaccia di rete a una VM esistente, deallocare prima di tutto la VM con az vm deallocate. L'esempio seguente dealloca la VM denominata myVM:

az vm deallocate --resource-group myResourceGroup --name myVM

Aggiungere la scheda di interfaccia di rete con az vm nic add. L'esempio seguente aggiunge myNic3 a myVM:

az vm nic add \
    --resource-group myResourceGroup \
    --vm-name myVM \
    --nics myNic3

Avviare la VM con az vm start:

az vm start --resource-group myResourceGroup --name myVM

Aggiungere le tabelle di routing al sistema operativo guest. A tale scopo, completare i passaggi descritti in Configurare il sistema operativo guest per più schede di interfaccia di rete.

Rimuovere una scheda di interfaccia di rete da una VM

Per rimuovere una scheda di interfaccia di rete da una VM esistente, deallocare prima di tutto la VM con az vm deallocate. L'esempio seguente dealloca la VM denominata myVM:

az vm deallocate --resource-group myResourceGroup --name myVM

Rimuovere la scheda di interfaccia di rete con az vm nic remove. L'esempio seguente rimuove myNic3 da myVM:

az vm nic remove \
    --resource-group myResourceGroup \
    --vm-name myVM \
    --nics myNic3

Avviare la VM con az vm start:

az vm start --resource-group myResourceGroup --name myVM

Creare più schede di interfaccia di rete usando i modelli di Resource Manager

I modelli di Azure Resource Manager utilizzano i file JSON dichiarativi per definire l'ambiente. È possibile consultare una panoramica di Azure Resource Manager. I modelli di Resource Manager offrono un modo di creare più istanze di una risorsa durante la distribuzione, come ad esempio la creazione di più schede di rete. Utilizzare Copia per specificare il numero di istanze da creare:

"copy": {
    "name": "multiplenics"
    "count": "[parameters('count')]"
}

Ulteriori informazioni sulla creazione di più istanze utilizzando Copia.

È anche possibile usare un copyIndex() oggetto per aggiungere un numero a un nome di risorsa, che consente di creare myNic1, myNic2e così via. Di seguito viene illustrato un esempio di aggiunta del valore di indice:

"name": "[concat('myNic', copyIndex())]",

È possibile consultare un esempio completo di creazione di più schede di rete utilizzando i modelli di Resource Manager.

Aggiungere le tabelle di routing al sistema operativo guest. A tale scopo, completare i passaggi descritti in Configurare il sistema operativo guest per più schede di interfaccia di rete.

Configurare il sistema operativo guest per più schede di rete

I passaggi precedenti hanno consentito di creare una rete virtuale e una subnet, collegare le schede di rete e quindi creare una macchina virtuale. Non sono stati creati un indirizzo IP pubblico e le regole del gruppo di sicurezza di rete che consentono il traffico SSH. Per configurare il sistema operativo guest per più schede di rete, è necessario consentire le connessioni remote ed eseguire i comandi in locale nella macchina virtuale.

Per consentire il traffico SSH, creare una regola del gruppo di sicurezza di rete con az network nsg rule create, come indicato di seguito:

az network nsg rule create \
    --resource-group myResourceGroup \
    --nsg-name myNetworkSecurityGroup \
    --name allow_ssh \
    --priority 101 \
    --destination-port-ranges 22

Creare un indirizzo IP pubblico con az network public-ip create e assegnarla alla prima scheda di rete con az network nic ip-config update:

az network public-ip create --resource-group myResourceGroup --name myPublicIP

az network nic ip-config update \
    --resource-group myResourceGroup \
    --nic-name myNic1 \
    --name ipconfig1 \
    --public-ip myPublicIP

Per visualizzare l'indirizzo IP pubblico della macchina virtuale, usare az vm show, come indicato di seguito:

az vm show --resource-group myResourceGroup --name myVM -d --query publicIps -o tsv

Connettersi all'indirizzo IP pubblico della macchina virtuale tramite SSH. Il nome utente predefinito specificato in un passaggio precedente era azureuser. Specificare il proprio nome utente e l'indirizzo IP pubblico:

ssh azureuser@137.117.58.232

Per consentire l'invio a o da un'interfaccia di rete secondaria, è necessario aggiungere manualmente route persistenti al sistema operativo per ogni interfaccia di rete secondaria. In questo articolo, eth1 è l'interfaccia secondaria. Le istruzioni per l'aggiunta di route persistenti al sistema operativo variano in base alla distribuzione. Per istruzioni, vedere la documentazione relativa alla distribuzione.

Quando si aggiunge la route al sistema operativo, l'indirizzo del gateway è il primo indirizzo della subnet in cui si trova l'interfaccia di rete. Ad esempio, se alla subnet è stato assegnato l'intervallo 10.0.2.0/24, il gateway specificato per la route è 10.0.2.1 o se alla subnet è stato assegnato l'intervallo 10.0.2.128/25, il gateway specificato per la route è 10.0.2.129. È possibile definire una rete specifica per la destinazione della route o specificare 0.0.0.0 come destinazione, se si vuole che tutto il traffico per l'interfaccia venga inviato attraverso il gateway specificato. Il gateway per ogni subnet viene gestito dalla rete virtuale.

Dopo aver aggiunto la route per un'interfaccia secondaria, verificare che la route sia presente nella tabella di route con route -n. L'output di esempio seguente è relativo alla tabella di route che contiene le due interfacce di rete aggiunte alla macchina virtuale in questo articolo:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.0.1.1        0.0.0.0         UG    0      0        0 eth0
0.0.0.0         10.0.2.1        0.0.0.0         UG    0      0        0 eth1
10.0.1.0        0.0.0.0         255.255.255.0   U     0      0        0 eth0
10.0.2.0        0.0.0.0         255.255.255.0   U     0      0        0 eth1
168.63.129.16   10.0.1.1        255.255.255.255 UGH   0      0        0 eth0
169.254.169.254 10.0.1.1        255.255.255.255 UGH   0      0        0 eth0

Verificare che la route aggiunta sia persistente tra un riavvio e l'altro controllando nuovamente la tabella di route dopo un riavvio. Per testare la connettività, è ad esempio possibile immettere il comando seguente, dove eth1 è il nome di un'interfaccia di rete secondaria:

ping bing.com -c 4 -I eth1

Passaggi successivi

Quando si cerca di creare una macchina virtuale con più schede di rete, consultare Dimensioni per le macchine virtuali di Linux. Prestare attenzione al numero massimo di schede di rete supportato per ogni dimensione della macchina virtuale.

Per proteggere ulteriormente le macchine virtuali, usare l'accesso Just-In-Time alle macchine virtuali. Questa funzionalità consente di aprire le regole del gruppo di sicurezza di rete per il traffico SSH quando necessario e per un periodo di tempo definito. Per altre informazioni, vedere Gestire l'accesso alle macchine virtuali con la funzionalità JIT (Just-in-Time).