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. Nell'esempio seguente viene creato un gruppo di risorse denominato test-rg nella posizione eastus .

$resourceGroup = @{
    Name = "test-rg"
    Location = "EastUS"
}
New-AzResourceGroup @resourceGroup

Creare una rete virtuale con New-AzVirtualNetwork. Nell'esempio seguente viene creata una rete virtuale denominata vnet-1 con il prefisso dell'indirizzo 10.0.0.0/16.

$vnet1 = @{
    ResourceGroupName = "test-rg"
    Location = "EastUS"
    Name = "vnet-1"
    AddressPrefix = "10.0.0.0/16"
}
$virtualNetwork1 = New-AzVirtualNetwork @vnet1

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

$subConfig = @{
    Name = "subnet-1"
    AddressPrefix = "10.0.0.0/24"
    VirtualNetwork = $virtualNetwork1
}
$subnetConfig = Add-AzVirtualNetworkSubnetConfig @subConfig

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

$virtualNetwork1 | Set-AzVirtualNetwork

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

# Create the virtual network.
$vnet2 = @{
    ResourceGroupName = "test-rg"
    Location = "EastUS"
    Name = "vnet-2"
    AddressPrefix = "10.1.0.0/16"
}
$virtualNetwork2 = New-AzVirtualNetwork @vnet2

# Create the subnet configuration.
$subConfig = @{
    Name = "subnet-1"
    AddressPrefix = "10.1.0.0/24"
    VirtualNetwork = $virtualNetwork2
}
$subnetConfig = Add-AzVirtualNetworkSubnetConfig @subConfig

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

Peering reti virtuali

Creare un peering con Add-AzVirtualNetworkPeering. Nell'esempio seguente viene eseguito il peering tra vnet-1 e vnet-2.

$peerConfig1 = @{
    Name = "vnet-1-to-vnet-2"
    VirtualNetwork = $virtualNetwork1
    RemoteVirtualNetworkId = $virtualNetwork2.Id
}
Add-AzVirtualNetworkPeering @peerConfig1

Nell'output restituito dopo l'esecuzione del comando precedente si può osservare che il valore di PeeringState è Initiated. Il peering rimane nello stato Avviato fino a quando non si crea il peering da vnet-2 a vnet-1. Creare un peering da vnet-2 a vnet-1.

$peerConfig2 = @{
    Name = "vnet-2-to-vnet-1"
    VirtualNetwork = $virtualNetwork2
    RemoteVirtualNetworkId = $virtualNetwork1.Id
}
Add-AzVirtualNetworkPeering @peerConfig2

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

$peeringState = @{
    ResourceGroupName = "test-rg"
    VirtualNetworkName = "vnet-1"
}
Get-AzVirtualNetworkPeering @peeringState | 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 vm-1 nella rete virtuale vnet-1 . 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 per la macchina virtuale.

$vm1 = @{
    ResourceGroupName = "test-rg"
    Location = "EastUS"
    VirtualNetworkName = "vnet-1"
    SubnetName = "subnet-1"
    ImageName = "Win2019Datacenter"
    Name = "vm-1"
}
New-AzVm @vm1 -AsJob

Creare la seconda VM

$vm2 = @{
    ResourceGroupName = "test-rg"
    Location = "EastUS"
    VirtualNetworkName = "vnet-2"
    SubnetName = "subnet-1"
    ImageName = "Win2019Datacenter"
    Name = "vm-2"
}
New-AzVm @vm2

La creazione della VM richiede alcuni minuti. Non continuare con i passaggi successivi finché Azure non crea vm-2 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 macchina virtuale vm-1 :

$ipAddress = @{
    ResourceGroupName = "test-rg"
    Name = "vm-1"
}
Get-AzPublicIpAddress @ipAddress | Select IpAddress

Usare il comando seguente per creare una sessione desktop remoto con la macchina virtuale vm-1 dal computer locale. Sostituire <publicIpAddress> con l'indirizzo IP restituito dal comando precedente.

mstsc /v:<publicIpAddress>

Viene creato 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.

In vm-1 abilitare Il protocollo ICMP (Internet Control Message Protocol) tramite Windows Firewall in modo da poter eseguire il ping di questa macchina virtuale da vm-2 in un passaggio successivo, usando PowerShell:

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

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

Per connettersi a vm-2, immettere il comando seguente da un prompt dei comandi in vm-1:

mstsc /v:10.1.0.4

È stato abilitato il ping in vm-1. È ora possibile eseguire il ping di vm-1 per indirizzo IP da un prompt dei comandi in vm-2.

ping 10.0.0.4

Si riceveranno quattro risposte. Disconnettere le sessioni RDP sia a vm-1 che a vm-2.

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 test-rg -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.