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 servizio Load Balancer Standard con doppie configurazioni front-end (IPv4 + IPv6), macchine virtuali con schede di interfaccia di rete con doppia configurazione IP, doppie regole del gruppo di sicurezza di rete e doppi indirizzi IP pubblici.

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 creare la rete virtuale dual stack, è necessario creare un gruppo di risorse con il comando 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 bilanciamento del carico

Per accedere agli endpoint IPv4 e Ipv6 da 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 vengono configurati il doppio indirizzo IP front-end (IPv4 e IPv6) e il pool di indirizzi back-end per il servizio di bilanciamento del carico e viene creata un'istanza di Load Balancer Standard.

Creare un servizio di bilanciamento del carico

Usare il comando az network lb create per creare un servizio Load Balancer Standard denominato dsLB, che include un pool front-end denominato dsLbFrontEnd_v4 e 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 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, a cui associa 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 un pool di indirizzi back-end IPv6 con il comando az network lb address-pool create. L'esempio seguente crea un pool di indirizzi back-end denominato dsLbBackEndPool_v6 per includere 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 le macchine virtuali, è necessario creare alcune 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 aumentare la disponibilità dell'app, posizionare 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à chiamato 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 regolamentano le comunicazioni in ingresso e in uscita della rete virtuale.

Creare un gruppo di sicurezza di rete

Creare un gruppo di sicurezza di rete con il comando 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 consentire connessioni in ingresso e in uscita

Creare una regola del gruppo di sicurezza di rete per consentire connessioni RDP tramite la porta 3389, la connessione Internet tramite la porta 80 e 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 le 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 il comando az network nic create. L'esempio seguente crea una scheda di interfaccia di rete virtuale per ogni macchina virtuale. Ogni scheda di interfaccia di rete ha due configurazioni IP (una configurazione IPv4 e una 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. L'esempio seguente crea due macchine virtuali e i componenti di rete virtuale necessari, se non sono già disponibili.

Creare la 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 la 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 nel portale di Azure

È possibile visualizzare la rete virtuale dual stack IPv6 nel 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 servizio Load Balancer Standard con una doppia configurazione IP front-end (IPv4 e IPv6). Sono state anche create due macchine virtuali che includono schede di interfaccia di rete con doppie configurazioni IP (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 la rete virtuale di Azure?