Guida introduttiva: Creare un gateway NAT con Azure PowerShell

Questa guida introduttiva illustra come creare un gateway NAT usando PowerShell. Il servizio gateway NAT offre connettività in uscita per le macchine virtuali in Azure.

Diagramma delle risorse create nella guida introduttiva al gateway NAT.

Prerequisiti

  • Un account Azure con una sottoscrizione attiva. Creare un account gratuitamente.

  • Azure Cloud Shell o Azure PowerShell.

    I passaggi descritti in questa guida introduttiva eseguono i cmdlet di Azure PowerShell in modo interattivo in Azure Cloud Shell. Per eseguire i comandi in Cloud Shell, selezionare Apri Cloud Shell nell'angolo superiore destro di un blocco di codice. Selezionare Copia per copiare il codice e incollarlo in Cloud Shell per eseguirlo. È anche possibile eseguire Cloud Shell dal portale di Azure.

    È anche possibile installare Azure PowerShell in locale per eseguire i cmdlet. I passaggi di questo articolo richiedono il modulo Azure PowerShell versione 5.4.1 o successiva. Eseguire Get-Module -ListAvailable Az per trovare la versione installata. Se è necessario eseguire l'aggiornamento, vedere Installare e configurare Azure PowerShell.

Creare un gruppo di risorse

Creare un gruppo di risorse con New-AzResourceGroup. Un gruppo di risorse di Azure è un contenitore logico in cui le risorse di Azure vengono distribuite e gestite.

L'esempio seguente crea un gruppo di risorse denominato test-rg nella località eastus2 :

$rsg = @{
    Name = 'test-rg'
    Location = 'eastus2'
}
New-AzResourceGroup @rsg

Creare il gateway NAT

In questa sezione viene creato il gateway NAT e le risorse di supporto.

  • Per accedere a Internet, sono necessari uno o più indirizzi IP pubblici per il gateway NAT. Usare New-AzPublicIpAddress per creare una risorsa indirizzo IP pubblico denominata public-ip-nat in test-rg.

  • Creare un gateway NAT di Azure globale con New-AzNatGateway. Il risultato di questo comando creerà una risorsa gateway denominata nat-gateway che usa l'indirizzo IP pubblico public-ip-nat. Il timeout di inattività è impostato su 10 minuti.

  • Creare una rete virtuale denominata vnet-1 con una subnet denominata subnet-1 usando New-AzVirtualNetworkSubnetConfig nel test-rg usando New-AzVirtualNetwork. Lo spazio degli indirizzi IP per la rete virtuale è 10.0.0.0/16. La subnet all'interno della rete virtuale è 10.0.0.0/24.

  • Creare un host Azure Bastion denominato bastion per accedere alla macchina virtuale. Usare New-AzBastion per creare l'host bastion. Creare un indirizzo IP pubblico per l'host bastion con New-AzPublicIpAddress.

## Create public IP address for NAT gateway ##
$ip = @{
    Name = 'public-ip-nat'
    ResourceGroupName = 'test-rg'
    Location = 'eastus2'
    Sku = 'Standard'
    AllocationMethod = 'Static'
    Zone = 1,2,3
}
$publicIP = New-AzPublicIpAddress @ip

## Create NAT gateway resource ##
$nat = @{
    ResourceGroupName = 'test-rg'
    Name = 'nat-gateway'
    IdleTimeoutInMinutes = '10'
    Sku = 'Standard'
    Location = 'eastus2'
    PublicIpAddress = $publicIP
}
$natGateway = New-AzNatGateway @nat

## Create subnet config and associate NAT gateway to subnet##
$subnet = @{
    Name = 'subnet-1'
    AddressPrefix = '10.0.0.0/24'
    NatGateway = $natGateway
}
$subnetConfig = New-AzVirtualNetworkSubnetConfig @subnet 

## Create Azure Bastion subnet. ##
$bastsubnet = @{
    Name = 'AzureBastionSubnet' 
    AddressPrefix = '10.0.1.0/26'
}
$bastsubnetConfig = New-AzVirtualNetworkSubnetConfig @bastsubnet

## Create the virtual network ##
$net = @{
    Name = 'vnet-1'
    ResourceGroupName = 'test-rg'
    Location = 'eastus2'
    AddressPrefix = '10.0.0.0/16'
    Subnet = $subnetConfig,$bastsubnetConfig
}
$vnet = New-AzVirtualNetwork @net

## Create public IP address for bastion host. ##
$ip = @{
    Name = 'public-ip'
    ResourceGroupName = 'test-rg'
    Location = 'eastus2'
    Sku = 'Standard'
    AllocationMethod = 'Static'
    Zone = 1,2,3
}
$publicip = New-AzPublicIpAddress @ip

## Create bastion host ##
$bastion = @{
    Name = 'bastion'
    ResourceGroupName = 'test-rg'
    PublicIpAddressRgName = 'test-rg'
    PublicIpAddressName = 'public-ip'
    VirtualNetworkRgName = 'test-rg'
    VirtualNetworkName = 'vnet-1'
    Sku = 'Basic'
}
New-AzBastion @bastion

La distribuzione dell'host bastion può richiedere alcuni minuti. Attendere che l'host bastion venga distribuito prima di passare alla sezione successiva.

Macchina virtuale

In questa sezione si creerà una macchina virtuale per testare il gateway NAT e verificare l'indirizzo IP pubblico della connessione in uscita.

# Set the administrator and password for the VMs. ##
$cred = Get-Credential

## Place the virtual network into a variable. ##
$vnet = Get-AzVirtualNetwork -Name 'vnet-1' -ResourceGroupName 'test-rg'

## Create network interface for virtual machine. ##
$nic = @{
    Name = "nic-1"
    ResourceGroupName = 'test-rg'
    Location = 'eastus2'
    Subnet = $vnet.Subnets[0]
}
$nicVM = New-AzNetworkInterface @nic

## Create a virtual machine configuration for VMs ##
$vmsz = @{
    VMName = 'vm-1'
    VMSize = 'Standard_DS1_v2'  
}
$vmos = @{
    ComputerName = 'vm-1'
    Credential = $cred
}
$vmimage = @{
    PublisherName = 'Canonical'
    Offer = '0001-com-ubuntu-server-jammy'
    Skus = '22_04-lts-gen2'
    Version = 'latest'     
}
$vmConfig = New-AzVMConfig @vmsz `
    | Set-AzVMOperatingSystem @vmos -Linux `
    | Set-AzVMSourceImage @vmimage `
    | Add-AzVMNetworkInterface -Id $nicVM.Id

## Create the virtual machine for VMs ##
$vm = @{
    ResourceGroupName = 'test-rg'
    Location = 'eastus2'
    VM = $vmConfig
}
New-AzVM @vm

Attendere il completamento della creazione della macchina virtuale prima di passare alla sezione successiva.

Testare il gateway NAT

In questa sezione viene testato il gateway NAT. Si individua prima di tutto l'indirizzo IP pubblico del gateway NAT. Connettersi quindi alla macchina virtuale di test e verificare la connessione in uscita tramite il gateway NAT.

  1. Accedere al portale di Azure.

  2. Nella casella di ricerca nella parte superiore del portale, immettere Indirizzo IP pubblico. Selezionare Indirizzi IP pubblici nei risultati della ricerca.

  3. Selezionare public-ip-nat.

  4. Prendere nota dell'indirizzo IP pubblico:

    Individuare l'indirizzo IP pubblico del gateway NAT

  5. Nella casella di ricerca, nella parte superiore del portale, immettere Macchina virtuale. Selezionare Macchine virtuali nei risultati della ricerca.

  6. Selezionare vm-1.

  7. Nella pagina Panoramica selezionare Connessione e quindi selezionare la scheda Bastion.

  8. Selezionare Usa Bastion.

  9. Immettere il nome utente e la password specificati durante la creazione della VM. Selezionare Connetti.

  10. Nel prompt di bash immettere il comando seguente:

    curl ifconfig.me
    
  11. Verificare che l'indirizzo IP restituito dal comando corrisponda all'indirizzo IP pubblico del gateway NAT.

    azureuser@vm-1:~$ curl ifconfig.me
    20.7.200.36
    

Pulire le risorse

Se non si intende continuare a usare questa applicazione, eliminare la rete virtuale, la macchina virtuale e il gateway NAT seguendo questa procedura:

Remove-AzResourceGroup -Name 'test-rg' -Force

Passaggi successivi

Per altre informazioni sul gateway NAT di Azure, vedere: