Connettere reti virtuali con il peering reti virtuali usando PowerShell

È possibile connettere due reti virtuali tra loro con il peering reti virtuali. Dopo che è stato eseguito il peering, le risorse delle due reti virtuali possono comunicare tra loro con la stessa larghezza di banda e la stessa latenza che sarebbero disponibili se si trovassero nella stessa rete virtuale. In questo articolo vengono illustrate le operazioni seguenti:

  • Creare due reti virtuali
  • Connettere due reti virtuali con un peering di reti virtuali
  • Distribuire una macchina virtuale in ogni rete virtuale
  • Stabilire la comunicazione tra le macchine virtuali

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

Azure Cloud Shell

Azure Cloud Shell è un ambiente di shell interattivo ospitato in Azure e usato tramite il browser. È possibile usare Bash o PowerShell con Cloud Shell per usare i servizi di Azure. È possibile usare i comandi preinstallati di Cloud Shell per eseguire il codice contenuto in questo articolo senza dover installare alcun elemento nell'ambiente locale.

Per avviare Azure Cloud Shell:

Opzione Esempio/Collegamento
Selezionare Prova nell'angolo superiore destro di un blocco di codice o di comando. Quando si seleziona Prova, il codice o il comando non viene copiato automaticamente in Cloud Shell. Screenshot che mostra un esempio di Prova per Azure Cloud Shell.
Passare a https://shell.azure.com o selezionare il pulsante Avvia Cloud Shell per aprire Cloud Shell nel browser. Pulsante per avviare Azure Cloud Shell.
Selezionare il pulsante Cloud Shell nella barra dei menu nell'angolo in alto a destra del portale di Azure. Screenshot che mostra il pulsante Cloud Shell nel portale di Azure

Per usare Azure Cloud Shell:

  1. Avviare Cloud Shell.

  2. Selezionare il pulsante Copia in un blocco di codice (o in un blocco di comando) per copiare il codice o il comando.

  3. Incollare il codice o il comando nella sessione di Cloud Shell selezionando CTRL+MAIUSC+V in Windows e Linux o selezionando CMD+MAIUSC+V in macOS.

  4. Selezionare Invio per eseguire il codice o il comando.

Se si sceglie di installare e usare PowerShell in locale, per questo articolo è necessario il modulo Azure PowerShell 1.0.0 o versione successiva. Eseguire Get-Module -ListAvailable Az per trovare la versione installata. Se è necessario eseguire l'aggiornamento, vedere Installare e configurare Azure PowerShell. Se si esegue PowerShell in locale, è anche necessario eseguire Connect-AzAccount per creare una connessione con Azure.

Creare reti virtuali

Prima di creare una rete virtuale, è necessario creare un gruppo di risorse per la rete virtuale e tutte le altre risorse create in questo articolo. Creare un gruppo di risorse con New-AzResourceGroup. L'esempio seguente crea un gruppo di risorse denominato myResourceGroup nella località stati uniti orientali.

New-AzResourceGroup -ResourceGroupName myResourceGroup -Location EastUS

Creare una rete virtuale con New-AzVirtualNetwork. L'esempio seguente crea una rete virtuale denominata myVirtualNetwork1 con prefisso di indirizzo 10.0.0.0/16.

$virtualNetwork1 = New-AzVirtualNetwork `
  -ResourceGroupName myResourceGroup `
  -Location EastUS `
  -Name myVirtualNetwork1 `
  -AddressPrefix 10.0.0.0/16

Creare una configurazione della subnet con Add-AzVirtualNetworkSubnetConfig. L'esempio seguente crea una configurazione di subnet con prefisso di indirizzo 10.0.0.0/24:

$subnetConfig = Add-AzVirtualNetworkSubnetConfig `
  -Name Subnet1 `
  -AddressPrefix 10.0.0.0/24 `
  -VirtualNetwork $virtualNetwork1

Scrivere la configurazione della subnet nella rete virtuale con Set-AzVirtualNetwork, che crea la subnet:

$virtualNetwork1 | Set-AzVirtualNetwork

Creare una rete virtuale con il prefisso di indirizzo 10.1.0.0/16 e una subnet:

# Create the virtual network.
$virtualNetwork2 = New-AzVirtualNetwork `
  -ResourceGroupName myResourceGroup `
  -Location EastUS `
  -Name myVirtualNetwork2 `
  -AddressPrefix 10.1.0.0/16

# Create the subnet configuration.
$subnetConfig = Add-AzVirtualNetworkSubnetConfig `
  -Name Subnet1 `
  -AddressPrefix 10.1.0.0/24 `
  -VirtualNetwork $virtualNetwork2

# Write the subnet configuration to the virtual network.
$virtualNetwork2 | Set-AzVirtualNetwork

Peering reti virtuali

Creare un peering con Add-AzVirtualNetworkPeering. L'esempio seguente crea il peering da myVirtualNetwork1 a myVirtualNetwork2.

Add-AzVirtualNetworkPeering `
  -Name myVirtualNetwork1-myVirtualNetwork2 `
  -VirtualNetwork $virtualNetwork1 `
  -RemoteVirtualNetworkId $virtualNetwork2.Id

Nell'output restituito dopo l'esecuzione del comando precedente si può osservare che il valore di PeeringState è Initiated. Il peering rimane nello stato Initiated finché non si crea il peering da myVirtualNetwork2 a myVirtualNetwork1. Creare un peering da myVirtualNetwork2 a myVirtualNetwork1.

Add-AzVirtualNetworkPeering `
  -Name myVirtualNetwork2-myVirtualNetwork1 `
  -VirtualNetwork $virtualNetwork2 `
  -RemoteVirtualNetworkId $virtualNetwork1.Id

Nell'output restituito dopo l'esecuzione del comando precedente si può osservare che il valore di PeeringState è Connected. Azure avrà modificato anche lo stato del peering myVirtualNetwork1-myVirtualNetwork2 in Connected. Verificare che lo stato del peering per il peering myVirtualNetwork1-myVirtualNetwork2 sia stato modificato in Connessione ed con Get-AzVirtualNetworkPeering.

Get-AzVirtualNetworkPeering `
  -ResourceGroupName myResourceGroup `
  -VirtualNetworkName myVirtualNetwork1 `
  | Select PeeringState

Le risorse in una rete virtuale non possono comunicare con le risorse nell'altra rete virtuale finché il valore di PeeringState relativo ai peering in entrambe le reti virtuali non è Connected.

Creare macchine virtuali

Creare una macchina virtuale in ogni rete virtuale per poter stabilire la comunicazione tra di esse in un passaggio successivo.

Creare la prima VM

Creare una VM con New-AzVM. L'esempio seguente crea una macchina virtuale denominata myVm1 nella rete virtuale myVirtualNetwork1. L'opzione -AsJob crea la macchina virtuale in background, pertanto è possibile continuare con il passaggio successivo. Quando richiesto, immettere il nome utente e la password con cui si vuole accedere alla macchina virtuale.

New-AzVm `
  -ResourceGroupName "myResourceGroup" `
  -Location "East US" `
  -VirtualNetworkName "myVirtualNetwork1" `
  -SubnetName "Subnet1" `
  -ImageName "Win2016Datacenter" `
  -Name "myVm1" `
  -AsJob

Creare la seconda VM

New-AzVm `
  -ResourceGroupName "myResourceGroup" `
  -Location "East US" `
  -VirtualNetworkName "myVirtualNetwork2" `
  -SubnetName "Subnet1" `
  -ImageName "Win2016Datacenter" `
  -Name "myVm2"

La creazione della VM richiede alcuni minuti. Non procedere con i passaggi successivi finché Azure non crea la macchina virtuale e restituisce l'output in PowerShell.

Nota

Azure fornisce un IP di accesso in uscita predefinito per le macchine virtuali a cui non è stato assegnato un indirizzo IP pubblico o che si trovano nel pool back-end di un servizio del bilanciamento del carico di base di Azure. Il meccanismo dell'IP di accesso in uscita predefinito fornisce un IP in uscita non configurabile.

L'IP di accesso in uscita predefinito è disabilitato quando si verifica uno degli eventi seguenti:

  • Alla macchina virtuale viene assegnato un indirizzo IP pubblico.
  • La macchina virtuale è posizionata nel pool back-end di un servizio di bilanciamento del carico standard, con o senza regole in uscita.
  • Una risorsa gateway NAT di Azure viene assegnata alla subnet della macchina virtuale.

Le macchine virtuali create usando set di scalabilità di macchine virtuali in modalità di orchestrazione flessibile non hanno l'accesso in uscita predefinito.

Per altre informazioni sulle connessioni in uscita in Azure, vedere Accesso in uscita predefinito in Azure e Uso di Source Network Address Translation (SNAT) per le connessioni in uscita.

Stabilire la comunicazione tra le macchine virtuali

È possibile connettersi all'indirizzo IP pubblico di una macchina virtuale da Internet. Usare Get-AzPublicIpAddress per restituire l'indirizzo IP pubblico di una macchina virtuale. L'esempio seguente restituisce l'indirizzo IP pubblico della VM myVm1:

Get-AzPublicIpAddress `
  -Name myVm1 `
  -ResourceGroupName myResourceGroup | Select IpAddress

Usare il comando seguente per creare una sessione di Desktop remoto con la macchina virtuale myVm1 dal computer locale. Sostituire <publicIpAddress> con l'indirizzo IP restituito dal comando precedente.

mstsc /v:<publicIpAddress>

Viene creato, scaricato nel computer e aperto un file Remote Desktop Protocol con estensione rdp. Immettere il nome utente e la password e quindi fare clic su OK. Per specificare le credenziali immesse durante la creazione della macchina virtuale, potrebbe essere necessario selezionare Altre opzioni e quindi Usa un account diverso. Durante il processo di accesso, è possibile che venga visualizzato un avviso relativo al certificato. Fare clic su o Continua per procedere con la connessione.

Nella macchina virtuale myVm1 abilitare il protocollo ICMP (Internet Control Message Protocol) attraverso Windows Firewall, in modo che sia possibile effettuare il ping della macchina virtuale da myVm2 in un passaggio successivo tramite PowerShell:

New-NetFirewallRule –DisplayName "Allow ICMPv4-In" –Protocol ICMPv4

Anche se in questo articolo viene usato il ping per la comunicazione tra le macchine virtuali, non è consigliabile consentire il protocollo ICMP tramite Windows Firewall per le distribuzioni di produzione.

Per stabilire la connessione alla macchina virtuale myVm2, immettere il comando seguente da un prompt dei comandi nella macchina virtuale myVm1:

mstsc /v:10.1.0.4

Dato che è stato abilitato il ping in myVm1, è ora possibile effettuare il ping in base all'indirizzo IP dal prompt dei comandi nella macchina virtuale myVm2:

ping 10.0.0.4

Si riceveranno quattro risposte. Disconnettere le sessioni RDP con myVm1 e myVm2.

Pulire le risorse

Quando non è più necessario, usare Remove-AzResourcegroup per rimuovere il gruppo di risorse e tutte le risorse in esso contenute.

Remove-AzResourceGroup -Name myResourceGroup -Force

Passaggi successivi

In questo articolo è stato illustrato come connettere due reti nella stessa area di Azure con il peering di rete virtuale. È anche possibile creare un peering di reti virtuali in aree supportate diverse e in sottoscrizioni di Azure diverse e creare progettazioni di rete di tipo hub-spoke con peering. Per altre informazioni sul peering di rete virtuale, vedere Peering di rete virtuale e Gestire un peering di rete virtuale.

È possibile connettere il proprio computer a una rete virtuale tramite una VPN e interagire con le risorse in una rete virtuale o in reti virtuali associate tramite peering. Vedere gli esempi di script riutilizzabili per completare molte delle attività illustrate negli articoli relativi alle reti virtuali.