Distribuire un'applicazione dual stack IPv6 nella rete virtuale di Azure usando l'interfaccia della riga di comando di Azure

Questo articolo illustra come distribuire un'applicazione dual stack (IPv4 + IPv6) usando Load Balancer Standard in Azure che include una rete virtuale dual stack con una subnet dual stack, un Load Balancer Standard con configurazioni front-end doppie (IPv4 + IPv6), macchine virtuali con schede di interfaccia di rete con doppia configurazione IP, regole del gruppo di sicurezza di rete duale e indirizzi IP pubblici doppi.

Se non si ha una sottoscrizione di Azure, creare un account Azure gratuito prima di iniziare.

Prerequisiti

  • Questo articolo richiede la versione 2.0.49 o successiva dell'interfaccia della riga di comando di Azure. Se si usa Azure Cloud Shell, la versione più recente è già installata.

Creare un gruppo di risorse

Prima di poter creare la rete virtuale dual-stack, è necessario creare un gruppo di risorse con az group create. L'esempio seguente crea un gruppo di risorse denominato DsResourceGroup01 nella località eastus :

az group create \
--name DsResourceGroup01 \
--location eastus

Creare indirizzi IP pubblici IPv4 e IPv6 per il servizio di bilanciamento del carico

Per accedere agli endpoint IPv4 e IPv6 in Internet, sono necessari indirizzi IP pubblici IPv4 e IPv6 per il servizio di bilanciamento del carico. Creare un indirizzo IP pubblico con az network public-ip create. L'esempio seguente crea l'indirizzo IP pubblico IPv4 e IPv6 denominato dsPublicIP_v4 e dsPublicIP_v6 nel gruppo di risorse DsResourceGroup01 :

# Create an IPV4 IP address
az network public-ip create \
--name dsPublicIP_v4  \
--resource-group DsResourceGroup01  \
--location eastus  \
--sku STANDARD  \
--allocation-method static  \
--version IPv4

# Create an IPV6 IP address
az network public-ip create \
--name dsPublicIP_v6  \
--resource-group DsResourceGroup01  \
--location eastus \
--sku STANDARD  \
--allocation-method static  \
--version IPv6

Creare indirizzi IP pubblici per le macchine virtuali

Per accedere in remoto alle macchine virtuali in Internet, sono necessari indirizzi IP pubblici IPv4 per le macchine virtuali. Creare un indirizzo IP pubblico con az network public-ip create.

az network public-ip create \
--name dsVM0_remote_access  \
--resource-group DsResourceGroup01 \
--location eastus  \
--sku Standard  \
--allocation-method static  \
--version IPv4

az network public-ip create \
--name dsVM1_remote_access  \
--resource-group DsResourceGroup01  \
--location eastus  \
--sku Standard  \
--allocation-method static  \
--version IPv4

Creare un'istanza di Load Balancer Standard

In questa sezione viene configurato l'indirizzo IP front-end doppio (IPv4 e IPv6) e il pool di indirizzi back-end per il servizio di bilanciamento del carico e quindi viene creato un Load Balancer Standard.

Creare un servizio di bilanciamento del carico

Creare il Load Balancer Standard con az network lb create denominato dsLB che include un pool front-end denominato dsLbFrontEnd_v4, un pool back-end denominato dsLbBackEndPool_v4 associato all'indirizzo IP pubblico IPv4 dsPublicIP_v4 creato nel passaggio precedente.

az network lb create \
--name dsLB  \
--resource-group DsResourceGroup01 \
--sku Standard \
--location eastus \
--frontend-ip-name dsLbFrontEnd_v4  \
--public-ip-address dsPublicIP_v4  \
--backend-pool-name dsLbBackEndPool_v4

Creare un front-end IPv6

Creare un indirizzo IP front-end IPV6 con az network lb frontend-ip create. L'esempio seguente crea una configurazione IP front-end denominata dsLbFrontEnd_v6 e collega l'indirizzo dsPublicIP_v6 :

az network lb frontend-ip create \
--lb-name dsLB  \
--name dsLbFrontEnd_v6  \
--resource-group DsResourceGroup01  \
--public-ip-address dsPublicIP_v6

Configurare il pool di indirizzi back-end IPv6

Creare pool di indirizzi back-end IPv6 con az network lb address-pool create. L'esempio seguente crea un pool di indirizzi back-end denominato dsLbBackEndPool_v6 per includere le macchine virtuali con configurazioni della scheda di interfaccia di rete IPv6:

az network lb address-pool create \
--lb-name dsLB  \
--name dsLbBackEndPool_v6  \
--resource-group DsResourceGroup01

Creare un probe di integrità

Creare un probe di integrità con il comando az network lb probe create per monitorare l'integrità delle macchine virtuali.

az network lb probe create -g DsResourceGroup01  --lb-name dsLB -n dsProbe --protocol tcp --port 3389

Creare una regola di bilanciamento del carico

Una regola di bilanciamento del carico consente di definire come il traffico verrà distribuito alle VM. Definire la configurazione IP front-end per il traffico in ingresso e il pool IP back-end per la ricezione del traffico, insieme alle porte di origine e di destinazione necessarie.

Creare una regola di bilanciamento del carico con az network lb rule create. L'esempio seguente crea regole di bilanciamento del carico denominate dsLBrule_v4 e dsLBrule_v6 e bilancia il traffico sulla porta TCP 80 alle configurazioni IP front-end IPv4 e IPv6:

az network lb rule create \
--lb-name dsLB  \
--name dsLBrule_v4  \
--resource-group DsResourceGroup01  \
--frontend-ip-name dsLbFrontEnd_v4  \
--protocol Tcp  \
--frontend-port 80  \
--backend-port 80  \
--probe-name dsProbe \
--backend-pool-name dsLbBackEndPool_v4


az network lb rule create \
--lb-name dsLB  \
--name dsLBrule_v6  \
--resource-group DsResourceGroup01 \
--frontend-ip-name dsLbFrontEnd_v6  \
--protocol Tcp  \
--frontend-port 80 \
--backend-port 80  \
--probe-name dsProbe \
--backend-pool-name dsLbBackEndPool_v6

Creare risorse di rete

Prima di distribuire alcune macchine virtuali, è necessario creare risorse di rete di supporto: set di disponibilità, gruppo di sicurezza di rete, rete virtuale e schede di interfaccia di rete virtuali.

Creare un set di disponibilità

Per migliorare la disponibilità dell'app, inserire le macchine virtuali in un set di disponibilità.

Creare un set di disponibilità con az vm availability-set create. L'esempio seguente crea un set di disponibilità denominato dsAVset:

az vm availability-set create \
--name dsAVset  \
--resource-group DsResourceGroup01  \
--location eastus \
--platform-fault-domain-count 2  \
--platform-update-domain-count 2  

Creare un gruppo di sicurezza di rete

Creare un gruppo di sicurezza di rete per le regole che regolano le comunicazioni in ingresso e in uscita nella rete virtuale.

Creare un gruppo di sicurezza di rete

Creare un gruppo di sicurezza di rete con az network nsg create

az network nsg create \
--name dsNSG1  \
--resource-group DsResourceGroup01  \
--location eastus

Creare una regola del gruppo di sicurezza di rete per le connessioni in ingresso e in uscita

Creare una regola del gruppo di sicurezza di rete per consentire le connessioni RDP tramite la porta 3389, la connessione Internet tramite la porta 80 e per le connessioni in uscita con az network nsg rule create.

# Create inbound rule for port 3389
az network nsg rule create \
--name allowRdpIn  \
--nsg-name dsNSG1  \
--resource-group DsResourceGroup01  \
--priority 100  \
--description "Allow Remote Desktop In"  \
--access Allow  \
--protocol "*"  \
--direction Inbound  \
--source-address-prefixes "*"  \
--source-port-ranges "*"  \
--destination-address-prefixes "*"  \
--destination-port-ranges 3389

# Create inbound rule for port 80
az network nsg rule create \
--name allowHTTPIn  \
--nsg-name dsNSG1  \
--resource-group DsResourceGroup01  \
--priority 200  \
--description "Allow HTTP In"  \
--access Allow  \
--protocol "*"  \
--direction Inbound  \
--source-address-prefixes "*"  \
--source-port-ranges 80  \
--destination-address-prefixes "*"  \
--destination-port-ranges 80

# Create outbound rule

az network nsg rule create \
--name allowAllOut  \
--nsg-name dsNSG1  \
--resource-group DsResourceGroup01  \
--priority 300  \
--description "Allow All Out"  \
--access Allow  \
--protocol "*"  \
--direction Outbound  \
--source-address-prefixes "*"  \
--source-port-ranges "*"  \
--destination-address-prefixes "*"  \
--destination-port-ranges "*"

Creare una rete virtuale

Creare una rete virtuale con az network vnet create. L'esempio seguente crea una rete virtuale denominata dsVNET con subnet dsSubNET_v4 e dsSubNET_v6:

# Create the virtual network
az network vnet create \
--name dsVNET \
--resource-group DsResourceGroup01 \
--location eastus  \
--address-prefixes "10.0.0.0/16" "fd00:db8:deca::/48"

# Create a single dual stack subnet

az network vnet subnet create \
--name dsSubNET \
--resource-group DsResourceGroup01 \
--vnet-name dsVNET \
--address-prefixes "10.0.0.0/24" "fd00:db8:deca:deed::/64" \
--network-security-group dsNSG1

Creare NIC

Creare schede di interfaccia di rete virtuali per ogni macchina virtuale con az network nic create. Nell'esempio seguente viene creata una scheda di interfaccia di rete virtuale per ogni macchina virtuale. Ogni scheda di interfaccia di rete ha due configurazioni IP (1 configurazione IPv4, 1 configurazione IPv6). Creare la configurazione IPV6 con az network nic ip-config create.

# Create NICs
az network nic create \
--name dsNIC0  \
--resource-group DsResourceGroup01 \
--network-security-group dsNSG1  \
--vnet-name dsVNET  \
--subnet dsSubNet  \
--private-ip-address-version IPv4 \
--lb-address-pools dsLbBackEndPool_v4  \
--lb-name dsLB  \
--public-ip-address dsVM0_remote_access

az network nic create \
--name dsNIC1 \
--resource-group DsResourceGroup01 \
--network-security-group dsNSG1 \
--vnet-name dsVNET \
--subnet dsSubNet \
--private-ip-address-version IPv4 \
--lb-address-pools dsLbBackEndPool_v4 \
--lb-name dsLB \
--public-ip-address dsVM1_remote_access

# Create IPV6 configurations for each NIC

az network nic ip-config create \
--name dsIp6Config_NIC0  \
--nic-name dsNIC0  \
--resource-group DsResourceGroup01 \
--vnet-name dsVNET \
--subnet dsSubNet \
--private-ip-address-version IPv6 \
--lb-address-pools dsLbBackEndPool_v6 \
--lb-name dsLB

az network nic ip-config create \
--name dsIp6Config_NIC1 \
--nic-name dsNIC1 \
--resource-group DsResourceGroup01 \
--vnet-name dsVNET \
--subnet dsSubNet \
--private-ip-address-version IPv6 \
--lb-address-pools dsLbBackEndPool_v6 \
--lb-name dsLB

Creare macchine virtuali

Creare le VM con az vm create. Nell'esempio seguente vengono create due macchine virtuali e i componenti di rete virtuale necessari, se non esistono già.

Creare una macchina virtuale dsVM0 come indicato di seguito:

 az vm create \
--name dsVM0 \
--resource-group DsResourceGroup01 \
--nics dsNIC0 \
--size Standard_A2 \
--availability-set dsAVset \
--image MicrosoftWindowsServer:WindowsServer:2019-Datacenter:latest  

Creare una macchina virtuale dsVM1 come indicato di seguito:

az vm create \
--name dsVM1 \
--resource-group DsResourceGroup01 \
--nics dsNIC1 \
--size Standard_A2 \
--availability-set dsAVset \
--image MicrosoftWindowsServer:WindowsServer:2019-Datacenter:latest 

Visualizzare la rete virtuale dual stack IPv6 in portale di Azure

È possibile visualizzare la rete virtuale dual stack IPv6 in portale di Azure come indicato di seguito:

  1. Nella barra di ricerca del portale immettere dsVnet.
  2. Selezionare myVirtualNetwork quando viene visualizzato nei risultati della ricerca. Verrà avviata la pagina Panoramica della rete virtuale dual stack denominata dsVnet. La rete virtuale dual stack mostra le due schede di interfaccia di rete con configurazioni IPv4 e IPv6 che si trovano nella subnet dual stack denominata dsSubnet.

IPv6 dual stack virtual network in Azure

Pulire le risorse

Quando non servono più, è possibile usare il comando az group delete per rimuovere il gruppo di risorse, la macchina virtuale e tutte le risorse correlate.

 az group delete --name DsResourceGroup01

Passaggi successivi

In questo articolo è stato creato un Load Balancer Standard con una configurazione IP front-end doppia (IPv4 e IPv6). Sono state anche create due macchine virtuali che includevano schede di interfaccia di rete con configurazioni IP doppie (IPV4 + IPv6) aggiunte al pool back-end del servizio di bilanciamento del carico. Per altre informazioni sul supporto IPv6 nelle reti virtuali di Azure, vedere Che cos'è IPv6 per Azure Rete virtuale?