Creare una rete virtuale con una connessione VPN da sito a sito usando PowerShell e Azure Resource Manager

Questo articolo illustra come usare PowerShell per creare una connessione gateway VPN da sito a sito dalla rete locale alla rete virtuale. I passaggi descritti in questo articolo si applicano al modello di distribuzione resource manager. È anche possibile creare questa configurazione usando strumenti o modelli di distribuzione diversi selezionando un'opzione differente nell'elenco seguente:

Una connessione gateway VPN da sito a sito viene usata per connettere la rete locale a una rete virtuale di Azure tramite un tunnel VPN IPsec/IKE (IKEv1 o IKEv2). Questo tipo di connessione richiede un dispositivo VPN che si trova in locale con un indirizzo IP pubblico esterno assegnato. Per altre informazioni al riguardo, vedere Informazioni sul gateway VPN.

Diagram of site-to-site VPN Gateway cross-premises connections.

Operazioni preliminari

Prima di iniziare la configurazione, verificare di soddisfare i criteri seguenti:

  • Verificare di avere un dispositivo VPN compatibile e che sia presente un utente in grado di configurarlo. Per altre informazioni sui dispositivi VPN compatibili e sulla configurazione dei dispositivi, vedere Informazioni sui dispositivi VPN.
  • Verificare di avere un indirizzo IPv4 pubblico esterno per il dispositivo VPN.
  • Se non si ha familiarità con gli intervalli di indirizzi IP presenti nella configurazione di rete locale, è necessario coordinarsi con un utente che possa fornire tali dettagli. Quando si crea questa configurazione, è necessario specificare i prefissi degli intervalli di indirizzi IP che Azure instraderà alla posizione locale. Nessuna delle subnet della rete locale può sovrapporsi alle subnet della rete virtuale a cui ci si vuole connettere.

Azure PowerShell

Questo articolo usa i cmdlet di PowerShell. Per eseguire i cmdlet, è possibile usare Azure Cloud Shell. Cloud Shell è una shell interattiva gratuita che è possibile usare per eseguire i passaggi descritti in questo articolo. Include strumenti comuni di Azure preinstallati e configurati per l'uso con l'account.

Per aprire Cloud Shell, selezionare Apri CloudShell nell'angolo superiore destro di un blocco di codice. È anche possibile aprire Cloud Shell in una scheda del browser separata passando a https://shell.azure.com/powershell. Selezionare Copia per copiare i blocchi di codice, incollarli in Cloud Shell e selezionare la chiave Invio per eseguirli.

È anche possibile installare ed eseguire i cmdlet di Azure PowerShell in locale nel computer. I cmdlet di PowerShell vengono aggiornati di frequente. Se non è stata installata la versione più recente, i valori specificati nelle istruzioni potrebbero non riuscire. Per trovare le versioni di Azure PowerShell installate nel computer, usare il Get-Module -ListAvailable Az cmdlet . Per installare o aggiornare, vedere Installare il modulo Azure PowerShell.

Valori di esempio

Gli esempi di questo articolo usano i valori seguenti. È possibile usare questi valori per creare un ambiente di test o farvi riferimento per comprendere meglio gli esempi di questo articolo.

#Example values

VnetName                = VNet1
ResourceGroup           = TestRG1
Location                = East US 
AddressSpace            = 10.1.0.0/16 
SubnetName              = Frontend 
Subnet                  = 10.1.0.0/24 
GatewaySubnet           = 10.1.255.0/27
LocalNetworkGatewayName = Site1
LNG Public IP           = <On-premises VPN device IP address> 
Local Address Prefixes  = 10.0.0.0/24, 20.0.0.0/24
Gateway Name            = VNet1GW
PublicIP                = VNet1GWPIP
Gateway IP Config       = gwipconfig1 
VPNType                 = RouteBased 
GatewayType             = Vpn 
ConnectionName          = VNet1toSite1

1. Creare una rete virtuale e una subnet del gateway

Se non si ha una rete virtuale, crearne una. Quando si crea una rete virtuale, verificare che gli spazi di indirizzi specificati non si sovrappongano agli spazi di indirizzi presenti nella rete locale.

Nota

Per consentire a questa rete virtuale di connettersi a una posizione locale, è necessario coordinarsi con l'amministratore di rete locale per definire un intervallo di indirizzi IP da usare in modo specifico per questa rete virtuale. Se esiste un intervallo di indirizzi duplicato su entrambi i lati della connessione VPN, il traffico non instrada il modo in cui potrebbe essere previsto. Se inoltre si vuole connettere questa rete virtuale a un'altra rete virtuale, lo spazio degli indirizzi non può sovrapporsi a un'altra rete virtuale. Pianificare quindi con attenzione la configurazione della rete.

Informazioni sulla subnet del gateway

Il gateway di rete virtuale usa una subnet specifica denominata subnet del gateway. La subnet del gateway è inclusa nell'intervallo di indirizzi IP della rete virtuale specificato durante la configurazione della rete virtuale. Contiene gli indirizzi IP usati dai servizi e dalle risorse del gateway di rete virtuale. Affinché Azure vi distribuisca le risorse gateway, la subnet deve essere denominata "GatewaySubnet". Non è possibile specificare una diversa subnet per la distribuzione delle risorse gateway. Se non è presente una subnet denominata "GatewaySubnet" quando si crea il gateway VPN, l'operazione avrà esito negativo.

Quando si crea la subnet del gateway, si specifica il numero di indirizzi IP inclusi nella subnet. Il numero di indirizzi IP necessari dipende alla configurazione di gateway VPN che si vuole creare. Alcune configurazioni richiedono più indirizzi IP di altre. È consigliabile creare una subnet del gateway che usi /27 o /28.

Se viene visualizzato un errore che specifica che lo spazio indirizzi si sovrappone a una subnet o che la subnet non è inclusa nello spazio indirizzi della rete virtuale, controllare l'intervallo di indirizzi della rete virtuale. Gli indirizzi IP disponibili nell'intervallo di indirizzi creato per la rete virtuale potrebbero non essere sufficienti. Se la subnet predefinita copre l'intero intervallo di indirizzi, ad esempio, non rimarranno indirizzi IP per creare subnet aggiuntive. È possibile modificare le subnet nello spazio indirizzi esistente per liberare indirizzi IP oppure specificare un intervallo di indirizzi aggiuntivo e creare la subnet del gateway in tale intervallo.

Importante

Quando si lavora con le subnet del gateway, evitare di associare un gruppo di sicurezza di rete (NSG) alla subnet del gateway. L'associazione di un gruppo di sicurezza di rete a questa subnet potrebbe causare l'arresto del gateway di rete virtuale (VPN ed ExpressRoute) come previsto. Per altre informazioni sui gruppi di sicurezza di rete, vedere Che cos'è un gruppo di sicurezza di rete?.

Creare una rete virtuale e una subnet del gateway

Questo esempio crea una rete virtuale e una subnet del gateway. Se esiste già una rete virtuale a cui è necessario aggiungere una subnet del gateway, vedere Per aggiungere una subnet del gateway a una rete virtuale già creata.

Creare un gruppo di risorse:

New-AzResourceGroup -Name TestRG1 -Location 'East US'

Creare la rete virtuale.

  1. Impostare le variabili.

    $subnet1 = New-AzVirtualNetworkSubnetConfig -Name 'GatewaySubnet' -AddressPrefix 10.1.255.0/27
    $subnet2 = New-AzVirtualNetworkSubnetConfig -Name 'Frontend' -AddressPrefix 10.1.0.0/24
    
  2. Creare la rete virtuale.

    New-AzVirtualNetwork -Name VNet1 -ResourceGroupName TestRG1 `
    -Location 'East US' -AddressPrefix 10.1.0.0/16 -Subnet $subnet1, $subnet2
    

Per aggiungere una subnet del gateway a una rete virtuale già creata

Usare la procedura illustrata in questa sezione se è già disponibile una rete virtuale, ma è necessario aggiungere una subnet del gateway.

  1. Impostare le variabili.

    $vnet = Get-AzVirtualNetwork -ResourceGroupName TestRG1 -Name VNet1
    
  2. Creare la subnet del gateway.

    Add-AzVirtualNetworkSubnetConfig -Name 'GatewaySubnet' -AddressPrefix 10.1.255.0/27 -VirtualNetwork $vnet
    
  3. Impostare la configurazione.

    Set-AzVirtualNetwork -VirtualNetwork $vnet
    

2. Creare il gateway di rete locale

Il gateway di rete locale in genere fa riferimento al percorso locale. Non è uguale a un gateway di rete virtuale. Assegnare al sito un nome che Azure possa usare come riferimento, quindi specificare l'indirizzo IP del dispositivo VPN locale con cui si creerà una connessione. Specificare anche i prefissi degli indirizzi IP che verranno instradati tramite il gateway VPN al dispositivo VPN. I prefissi degli indirizzi specificati sono quelli disponibili nella rete locale. Se la rete locale viene modificata, è possibile aggiornare facilmente i prefissi.

Selezionare uno degli esempi seguenti. I valori usati negli esempi sono:

  • Il GatewayIPAddress è l'indirizzo IP del dispositivo VPN locale.
  • AddressPrefix corrisponde allo spazio degli indirizzi locale.

Esempio di prefisso di indirizzo singolo

New-AzLocalNetworkGateway -Name Site1 -ResourceGroupName TestRG1 `
-Location 'East US' -GatewayIpAddress '23.99.221.164' -AddressPrefix '10.0.0.0/24'

Esempio di prefisso di più indirizzi

New-AzLocalNetworkGateway -Name Site1 -ResourceGroupName TestRG1 `
-Location 'East US' -GatewayIpAddress '23.99.221.164' -AddressPrefix @('20.0.0.0/24','10.0.0.0/24')

3. Richiedere un indirizzo IP pubblico

Un gateway VPN deve avere un indirizzo IP pubblico. È necessario richiedere prima di tutto la risorsa dell'indirizzo IP e quindi farvi riferimento durante la creazione del gateway di rete virtuale. L'indirizzo IP viene assegnato dinamicamente alla risorsa durante la creazione del gateway VPN. L'unica volta in cui l'indirizzo IP pubblico viene modificato è quando il gateway viene eliminato e creato di nuovo. Non viene modificato in caso di ridimensionamento, reimpostazione o altre manutenzioni/aggiornamenti del gateway VPN.

Richiedere un indirizzo IP pubblico per il gateway VPN di rete virtuale.

$gwpip= New-AzPublicIpAddress -Name VNet1GWPIP -ResourceGroupName TestRG1 -Location 'East US' -AllocationMethod Static -Sku Standard

4. Creare la configurazione degli indirizzi IP del gateway

La configurazione del gateway definisce la subnet ('GatewaySubnet') e l'indirizzo IP pubblico da usare. Per creare la configurazione del gateway, usare l'esempio seguente:

$vnet = Get-AzVirtualNetwork -Name VNet1 -ResourceGroupName TestRG1
$subnet = Get-AzVirtualNetworkSubnetConfig -Name 'GatewaySubnet' -VirtualNetwork $vnet
$gwipconfig = New-AzVirtualNetworkGatewayIpConfig -Name gwipconfig1 -SubnetId $subnet.Id -PublicIpAddressId $gwpip.Id

5. Creare il gateway VPN

Creare il gateway VPN di rete virtuale. La creazione di un gateway spesso richiede anche più di 45 minuti di tempo a seconda dello SKU gateway selezionato. Nell'esempio vengono usati i valori seguenti:

  • - GatewayType per una configurazione da sito a sito è Vpn. Il tipo di gateway è sempre specifico della configurazione che si sta implementando. Ad esempio, altre configurazioni del gateway potrebbero richiedere -GatewayType ExpressRoute.
  • Il valore di -VpnType può essere RouteBased, talvolta definito gateway dinamico nella documentazione, o PolicyBased, talvolta definito gateway statico nella documentazione. Per altre informazioni sui tipi di gateway VPN, vedere Informazioni sul gateway VPN.
  • Selezionare lo SKU del gateway da usare. Esistono limitazioni di configurazione per alcuni SKU. Per altre informazioni, vedere SKU del gateway. Se durante la creazione del gateway VPN si ottiene un errore relativo a -GatewaySku, verificare di avere installato la versione più recente dei cmdlet di PowerShell.
New-AzVirtualNetworkGateway -Name VNet1GW -ResourceGroupName TestRG1 `
-Location 'East US' -IpConfigurations $gwipconfig -GatewayType Vpn `
-VpnType RouteBased -GatewaySku VpnGw2

6. Configurare il dispositivo VPN

Le connessioni da sito a sito verso una rete locale richiedono un dispositivo VPN. In questo passaggio viene configurato il dispositivo VPN. Per la configurazione del dispositivo VPN è necessario quanto segue:

  • Chiave condivisa. Si tratta della stessa chiave condivisa che viene specificata durante la creazione della connessione VPN da sito a sito. In questi esempi viene usata una chiave condivisa semplice. È consigliabile generare una chiave più complessa per l'uso effettivo.

  • Indirizzo IP pubblico del gateway di rete virtuale. È possibile visualizzare l'indirizzo IP pubblico usando il portale di Azure, PowerShell o l'interfaccia della riga di comando. Per trovare l'indirizzo IP pubblico del gateway di rete virtuale con PowerShell, usare l'esempio seguente. In questo esempio VNet1GWPIP è il nome della risorsa indirizzo IP pubblico creata nel passaggio precedente.

    Get-AzPublicIpAddress -Name VNet1GWPIP -ResourceGroupName TestRG1
    

Per scaricare gli script di configurazione del dispositivo VPN:

A seconda del dispositivo VPN in uso, potrebbe essere possibile scaricare uno script di configurazione per il dispositivo VPN. Per altre informazioni, vedere Scaricare gli script di configurazione del dispositivo VPN.

Per altre informazioni sulla configurazione, vedere i collegamenti seguenti:

7. Creare la connessione VPN

Creare quindi la connessione VPN da sito a sito tra il gateway di rete virtuale e il dispositivo VPN. Assicurarsi di sostituire i valori con i propri. La chiave condivisa deve corrispondere al valore utilizzato per la configurazione del dispositivo VPN. Si noti che "-Connessione ionType" per site-to-site è IPsec.

  1. Impostare le variabili.

    $gateway1 = Get-AzVirtualNetworkGateway -Name VNet1GW -ResourceGroupName TestRG1
    $local = Get-AzLocalNetworkGateway -Name Site1 -ResourceGroupName TestRG1
    
  2. Creare la connessione.

    New-AzVirtualNetworkGatewayConnection -Name VNet1toSite1 -ResourceGroupName TestRG1 `
    -Location 'East US' -VirtualNetworkGateway1 $gateway1 -LocalNetworkGateway2 $local `
    -ConnectionType IPsec -SharedKey 'abc123'
    

La connessione verrà stabilita in breve tempo.

8. Verificare la connessione VPN

Esistono diversi modi per verificare la connessione VPN.

Per verificare l'esito positivo della connessione è possibile usare il cmdlet 'Get-AzVirtualNetworkGatewayConnection' con o senza '-Debug'.

  1. Per configurare i valori in modo che corrispondano ai propri, usare l'esempio di cmdlet seguente. Quando richiesto, selezionare "A" per eseguire "Tutti". Il valore " -Name" nell'esempio fa riferimento al nome della connessione che si vuole testare.

    Get-AzVirtualNetworkGatewayConnection -Name VNet1toSite1 -ResourceGroupName TestRG1
    
  2. Al termine dell'esecuzione del cmdlet, visualizzare i valori. Nell'esempio seguente lo stato di connessione risulta "Connesso" ed è possibile visualizzare i byte in ingresso e in uscita.

    "connectionStatus": "Connected",
    "ingressBytesTransferred": 33509044,
    "egressBytesTransferred": 4142431
    

Per connettersi a una macchina virtuale

È possibile connettersi a una macchina virtuale distribuita nella rete virtuale creando un Connessione Desktop remoto nella macchina virtuale. Il modo migliore per verificare inizialmente che è possibile connettersi alla VM consiste nel connettersi usando il rispettivo indirizzo IP privato, invece del nome del computer. Ciò consente di verificare se è possibile connettersi, non se la risoluzione dei nomi è configurata correttamente.

  1. Individuare l'indirizzo IP privato. È possibile trovare l'indirizzo IP privato di una macchina virtuale esaminando le proprietà della macchina virtuale nel portale di Azure o usando PowerShell.

    • portale di Azure: individuare la macchina virtuale nel portale di Azure. Visualizzare le proprietà per la VM. Viene elencato l'indirizzo IP.

    • PowerShell: usare l'esempio per visualizzare un elenco di macchine virtuali e indirizzi IP privati dai gruppi di risorse. Non è necessario modificare questo esempio prima di usarlo.

      $VMs = Get-AzVM
      $Nics = Get-AzNetworkInterface | Where-Object VirtualMachine -ne $null
      
      foreach ($Nic in $Nics) {
      $VM = $VMs | Where-Object -Property Id -eq $Nic.VirtualMachine.Id
      $Prv = $Nic.IpConfigurations | Select-Object -ExpandProperty PrivateIpAddress
      $Alloc = $Nic.IpConfigurations | Select-Object -ExpandProperty PrivateIpAllocationMethod
      Write-Output "$($VM.Name): $Prv,$Alloc"
      }
      
  2. Verificare di essere connessi alla rete virtuale.

  3. Aprire Remote Desktop Connessione ion immettendo RDP o Remote Desktop Connessione ion nella casella di ricerca sulla barra delle applicazioni. Selezionare quindi Desktop remoto Connessione ion. È anche possibile aprire Connessione Desktop remoto usando il mstsc comando in PowerShell.

  4. In Connessione Desktop remoto immettere l'indirizzo IP privato della macchina virtuale. È possibile selezionare Mostra opzioni per modificare altre impostazioni e quindi connettersi.

Se si verificano problemi di connessione a una macchina virtuale tramite la connessione VPN, verificare i punti seguenti:

  • Verificare che la connessione VPN sia attiva.
  • Verificare che venga effettuata la connessione all'indirizzo IP privato per la macchina virtuale.
  • Se è possibile connettersi alla macchina virtuale usando l'indirizzo IP privato ma non il nome del computer, verificare di aver configurato il DNS correttamente. Per altre informazioni sul funzionamento della risoluzione dei nomi per le macchine virtuali, vedere Risoluzione dei nomi per le macchine virtuali.

Per altre informazioni sulle connessioni RDP, vedere Risolvere i problemi delle connessioni Desktop remoto a una macchina virtuale.

Per modificare i prefissi di indirizzo IP per un gateway di rete locale

In caso di modifica dei prefissi degli indirizzi IP da indirizzare alla posizione locale, è possibile modificare il gateway di rete locale. Quando si usano questi esempi, modificare i valori per adattarli all'ambiente.

Per aggiungere altri prefissi degli indirizzi:

  1. Impostare la variabile per LocalNetworkGateway.

    $local = Get-AzLocalNetworkGateway -Name Site1 -ResourceGroupName TestRG1
    
  2. Modificare i prefissi. I valori specificati sovrascrivono i valori precedenti.

    Set-AzLocalNetworkGateway -LocalNetworkGateway $local `
    -AddressPrefix @('10.101.0.0/24','10.101.1.0/24','10.101.2.0/24')
    

Per rimuovere prefissi degli indirizzi:

Escludere i prefissi non più necessari. In questo esempio non è più necessario il prefisso 10.101.2.0/24 (dall'esempio precedente), quindi aggiorneremo il gateway di rete locale ed escludiamo tale prefisso.

  1. Impostare la variabile per LocalNetworkGateway.

    $local = Get-AzLocalNetworkGateway -Name Site1 -ResourceGroupName TestRG1
    
  2. Impostare il gateway con i prefissi aggiornati.

    Set-AzLocalNetworkGateway -LocalNetworkGateway $local `
    -AddressPrefix @('10.101.0.0/24','10.101.1.0/24')
    

Per modificare l'indirizzo IP del gateway per un gateway di rete locale

Se l'indirizzo IP pubblico del dispositivo VPN a cui ci si vuole connettere è stato modificato, è necessario modificare il gateway di rete locale per riflettere tale modifica. Quando si modifica questo valore, è anche possibile modificare contemporaneamente i prefissi degli indirizzi. Assicurarsi di usare il nome del gateway di rete locale esistente per sovrascrivere le impostazioni correnti. Se si usa un nome diverso, creare un nuovo gateway di rete locale, invece di sovrascrivere il valore esistente.

New-AzLocalNetworkGateway -Name Site1 `
-Location "East US" -AddressPrefix @('10.101.0.0/24','10.101.1.0/24') `
-GatewayIpAddress "5.4.3.2" -ResourceGroupName TestRG1

Per eliminare una connessione gateway

Se non si conosce il nome della connessione, è possibile trovarla usando il cmdlet 'Get-AzVirtualNetworkGateway Connessione ion'.

Remove-AzVirtualNetworkGatewayConnection -Name VNet1toSite1 `
-ResourceGroupName TestRG1

Passaggi successivi

  • Dopo aver completato la connessione, è possibile aggiungere macchine virtuali alle reti virtuali. Per altre informazioni, vedere Macchine virtuali.
  • Per informazioni su BGP, vedere Panoramica di BGP e Come configurare BGP.
  • Per informazioni sulla creazione di una connessione VPN da sito a sito tramite il modello di Azure Resource Manager, vedere Creare un Connessione VPN da sito a sito.
  • Per informazioni sulla creazione di una connessione VPN da rete virtuale a rete virtuale con il modello di Azure Resource Manager, vedere Deploy HBase geo replication (Distribuire una replica geografica HBase).