Questa esercitazione illustra come integrare un gateway NAT con Firewall di Azure in una rete hub-spoke per migliorare la connettività e la scalabilità in uscita.
Firewall di Azure offre 2.496 porte SNAT per ogni indirizzo IP pubblico configurato per ogni istanza del set di scalabilità di macchine virtuali back-end (almeno due istanze). È possibile associare fino a 250 indirizzi IP pubblici a Firewall di Azure. A seconda dei requisiti di architettura e dei modelli di traffico, potrebbero essere necessarie più porte SNAT rispetto a quelle che possono essere fornite da Firewall di Azure. È anche possibile richiedere l'uso di un minor numero di indirizzi IP pubblici, richiedendo anche più porte SNAT. Un metodo migliore per la connettività in uscita consiste nell'usare il gateway NAT. Il gateway NAT offre 64.512 porte SNAT per ogni indirizzo IP pubblico e può essere usato con un massimo di 16 indirizzi IP pubblici.
Il gateway NAT può essere integrato con Firewall di Azure configurando il gateway NAT direttamente nella subnet di Firewall di Azure. Questa associazione fornisce un metodo più scalabile di connettività in uscita. Per le distribuzioni di produzione è consigliabile una rete hub e spoke, in cui il firewall si trova nella propria rete virtuale. I server del carico di lavoro sono reti virtuali con peering nella stessa area della rete virtuale hub in cui risiede il firewall. In questa configurazione dell'architettura, il gateway NAT può fornire connettività in uscita dalla rete virtuale hub per tutte le reti virtuali spoke con peering.
Nota
Il gateway NAT di Azure non è attualmente supportato nelle architetture vWAN (Virtual Hub Network) protette. È necessario eseguire la distribuzione usando un'architettura di rete virtuale hub come descritto in questa esercitazione. Per altre informazioni sulle opzioni di architettura di Firewall di Azure, vedere Quali sono le opzioni di architettura di Gestione firewall di Azure?
In questa esercitazione apprenderai a:
- Creare una rete virtuale hub e distribuire un firewall di Azure e Azure Bastion durante la distribuzione
- Creare un gateway NAT e associarlo alla subnet del firewall nella rete virtuale hub
- Creare una rete virtuale spoke
- Creare un peering di rete virtuale
- Creare una tabella di route per la rete virtuale spoke
- Creare criteri firewall per la rete virtuale hub
- Creare una macchina virtuale per testare la connettività in uscita tramite il gateway NAT
Prerequisiti
Azure Cloud Shell
Azure ospita Azure Cloud Shell, un ambiente shell interattivo che è possibile usare 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 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 codice o di un blocco di comandi. Quando si seleziona Prova, il codice o il comando non viene copiato automaticamente in Cloud Shell. |
|
Passare a https://shell.azure.com o selezionare il pulsante Avvia Cloud Shell per aprire Cloud Shell nel browser. |
|
Selezionare il pulsante Cloud Shell nella barra dei menu in alto a destra nel portale di Azure. |
|
Per usare Azure Cloud Shell:
Avviare Cloud Shell.
Selezionare il pulsante Copia in un blocco di codice (o in un blocco di comando) per copiare il codice o il comando.
Incollare il codice o il comando nella sessione di Cloud Shell selezionando Ctrl+Shift+V in Windows e Linux oppure selezionando Cmd+Shift+V in macOS.
Selezionare Immettere 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 il modulo Azure PowerShell. Se si esegue PowerShell in locale, è anche necessario eseguire Connect-AzAccount
per creare una connessione con Azure.
Se non si ha un account Azure, creare un account gratuito prima di iniziare.
- Questo articolo richiede Azure CLI versione 2.0.28 o successiva. Se si usa Azure Cloud Shell, la versione più recente è già installata.
Creare la rete virtuale hub
La rete virtuale hub contiene la subnet del firewall associata al firewall di Azure e al gateway NAT. Usare l'esempio seguente per creare la rete virtuale hub.
Accedere al portale di Azure.
Nella casella di ricerca nella parte superiore del portale immettere Rete virtuale. Selezionare Reti virtuali nei risultati della ricerca.
Seleziona + Crea.
Nella scheda Informazioni di base di Crea rete virtuale immettere o selezionare le informazioni seguenti:
Impostazione |
Valore |
Dettagli di progetto |
|
Abbonamento |
Selezionare la propria sottoscrizione. |
Gruppo di risorse |
Selezionare Crea nuovo.
Immettere test-rg.
Selezionare OK. |
Dettagli istanza |
|
Nome |
Immettere vnet-hub. |
Paese |
Selezionare (USA) Stati Uniti centro-meridionali. |
Selezionare Avanti per passare alla scheda Sicurezza.
Selezionare Abilita Azure Bastion nella sezione Azure Bastion della scheda Sicurezza.
Azure Bastion usa il browser per connettersi alle VM nella rete virtuale tramite Secure Shell (SSH) o Remote Desktop Protocol (RDP) usando i relativi indirizzi IP privati. Le VM non necessitano di indirizzi IP pubblici, software client o configurazione speciale. Per altre informazioni su Azure Bastion, vedere Azure Bastion
Nota
La tariffa oraria inizia dal momento in cui viene distribuito Bastion, a prescindere dall'utilizzo dei dati in uscita. Per altre informazioni, vedere Prezzi e SKU. Se si distribuisce Bastion nel corso di un'esercitazione o di un test, è consigliabile eliminare questa risorsa dopo averla usata.
Immettere o selezionare le informazioni seguenti in Azure Bastion:
Impostazione |
Valore |
Nome host Azure Bastion |
Immettere bastion. |
Indirizzo IP pubblico di Azure Bastion |
Selezionare Crea un indirizzo IP pubblico.
Immettere public-ip-bastion in Nome.
Selezionare OK. |
Selezionare Abilita Firewall di Azure nella sezione Firewall di Azure della scheda Sicurezza.
Firewall di Azure è un servizio di sicurezza di rete gestito basato sul cloud che consente di proteggere le risorse della rete virtuale di Azure. È un firewall con stato completo distribuito come servizio con disponibilità elevata e scalabilità cloud senza limiti. Per altre informazioni su Firewall di Azure, vedere Firewall di Azure.
Immettere o selezionare le informazioni seguenti in Firewall di Azure:
Impostazione |
Valore |
Nome Firewall di Azure |
Immettere firewall. |
Livello |
Selezionare Standard. |
Criteri |
Selezionare Crea nuovo.
Immettere firewall-policy in Nome.
Selezionare OK. |
Indirizzo IP pubblico di Firewall di Azure |
Selezionare Crea un indirizzo IP pubblico.
Immettere public-ip-firewall in Nome.
Selezionare OK. |
Selezionare Avanti per passare alla scheda Indirizzi IP.
Selezionare Rivedi e crea.
Seleziona Crea.
La distribuzione dell'host bastion e del firewall richiede alcuni minuti. Quando viene creata la rete virtuale nell’ambito della distribuzione, è possibile procedere con i passaggi successivi.
Usare New-AzResourceGroup per creare un gruppo di risorse.
# Create resource group
$rgParams = @{
Name = 'test-rg'
Location = 'South Central US'
}
New-AzResourceGroup @rgParams
Usare New-AzVirtualNetwork per creare la rete virtuale hub.
# Create hub virtual network
$vnetParams = @{
ResourceGroupName = 'test-rg'
Location = 'South Central US'
Name = 'vnet-hub'
AddressPrefix = '10.0.0.0/16'
}
$hubVnet = New-AzVirtualNetwork @vnetParams
Usare Add-AzVirtualNetworkSubnetConfig per creare una subnet per Firewall di Azure e Azure Bastion.
# Create default subnet
$subnetParams = @{
Name = 'subnet-1'
AddressPrefix = '10.0.0.0/24'
VirtualNetwork = $hubVnet
}
Add-AzVirtualNetworkSubnetConfig @subnetParams
# Create subnet for Azure Firewall
$subnetParams = @{
Name = 'AzureFirewallSubnet'
AddressPrefix = '10.0.1.64/26'
VirtualNetwork = $hubVnet
}
Add-AzVirtualNetworkSubnetConfig @subnetParams
# Create subnet for Azure Bastion
$subnetParams = @{
Name = 'AzureBastionSubnet'
AddressPrefix = '10.0.1.0/26'
VirtualNetwork = $hubVnet
}
Add-AzVirtualNetworkSubnetConfig @subnetParams
Usare Set-AzVirtualNetwork per aggiornare la rete virtuale.
# Create the virtual network
$hubVnet | Set-AzVirtualNetwork
Usare New-AzPublicIpAddress per creare un indirizzo IP pubblico per Azure Bastion.
# Create public IP for Azure Bastion
$publicIpBastionParams = @{
ResourceGroupName = 'test-rg'
Location = 'South Central US'
Name = 'public-ip-bastion'
Sku = 'Standard'
AllocationMethod = 'Static'
Zone = 1, 2, 3
}
$publicIpBastion = New-AzPublicIpAddress @publicIpBastionParams
Usare New-AzBastion per creare Azure Bastion.
# Create Azure Bastion
$bastionParams = @{
ResourceGroupName = "test-rg"
Name = "bastion"
VirtualNetworkName = "vnet-hub"
PublicIpAddressName = "public-ip-bastion"
PublicIPAddressRgName = "test-rg"
VirtualNetworkRgName = "test-rg"
}
New-AzBastion @bastionParams
Usare New-AzPublicIpAddress per creare un indirizzo IP pubblico per Firewall di Azure.
# Create public IP for Azure Firewall
$publicIpFirewallParams = @{
ResourceGroupName = 'test-rg'
Location = 'South Central US'
Name = 'public-ip-firewall'
AllocationMethod = 'Static'
Sku = 'Standard'
Zone = 1, 2, 3
}
$publicIpFirewall = New-AzPublicIpAddress @publicIpFirewallParams
Usare New-AzFirewallPolicy per creare criteri firewall.
# Create firewall policy
$firewallPolicyParams = @{
ResourceGroupName = 'test-rg'
Location = 'South Central US'
Name = 'firewall-policy'
}
$firewallPolicy = New-AzFirewallPolicy @firewallPolicyParams
Usare New-AzFirewall per creare Firewall di Azure.
# Create Azure Firewall
$firewallParams = @{
ResourceGroupName = 'test-rg'
Location = 'South Central US'
Name = 'firewall'
VirtualNetworkName = 'vnet-hub'
PublicIpName = 'public-ip-firewall'
FirewallPolicyId = $firewallPolicy.Id
}
$firewall = New-AzFirewall @firewallParams
Usare az group create per creare un gruppo di risorse.
# Variables
RESOURCE_GROUP="test-rg"
LOCATION="southcentralus"
az group create \
--name $RESOURCE_GROUP \
--location $LOCATION
Usare az network vnet create per creare la rete virtuale hub.
# Variables
RESOURCE_GROUP="test-rg"
VNET_HUB_NAME="vnet-hub"
VNET_HUB_ADDRESS_PREFIX="10.0.0.0/16"
SUBNET_1_NAME="subnet-1"
SUBNET_1_PREFIX="10.0.0.0/24"
az network vnet create \
--resource-group $RESOURCE_GROUP \
--name $VNET_HUB_NAME \
--address-prefix $VNET_HUB_ADDRESS_PREFIX \
--subnet-name $SUBNET_1_NAME \
--subnet-prefix $SUBNET_1_PREFIX
Usare az network vnet subnet create per creare una subnet per Azure Bastion.
# Variables
RESOURCE_GROUP="test-rg"
VNET_HUB_NAME="vnet-hub"
BASTION_SUBNET_NAME="AzureBastionSubnet"
BASTION_SUBNET_PREFIX="10.0.1.0/26"
az network vnet subnet create \
--resource-group $RESOURCE_GROUP \
--vnet-name $VNET_HUB_NAME \
--name $BASTION_SUBNET_NAME \
--address-prefix $BASTION_SUBNET_PREFIX
Usare az network vnet subnet create per creare una subnet per Firewall di Azure.
# Variables
RESOURCE_GROUP="test-rg"
VNET_HUB_NAME="vnet-hub"
FIREWALL_SUBNET_NAME="AzureFirewallSubnet"
FIREWALL_SUBNET_PREFIX="10.0.1.64/26"
az network vnet subnet create \
--resource-group $RESOURCE_GROUP \
--vnet-name $VNET_HUB_NAME \
--name $FIREWALL_SUBNET_NAME \
--address-prefix $FIREWALL_SUBNET_PREFIX
Usare az network public-ip create per creare un indirizzo IP pubblico per Azure Bastion.
# Variables
RESOURCE_GROUP="test-rg"
BASTION_PUBLIC_IP_NAME="public-ip-bastion"
ALLOCATION_METHOD="Static"
SKU="Standard"
az network public-ip create \
--resource-group $RESOURCE_GROUP \
--name $BASTION_PUBLIC_IP_NAME \
--allocation-method $ALLOCATION_METHOD \
--sku $SKU
Usare az network bastion create per creare Azure Bastion.
# Variables
RESOURCE_GROUP="test-rg"
BASTION_NAME="bastion"
BASTION_PUBLIC_IP_NAME="public-ip-bastion"
VNET_HUB_NAME="vnet-hub"
az network bastion create \
--resource-group $RESOURCE_GROUP \
--name $BASTION_NAME \
--public-ip-address $BASTION_PUBLIC_IP_NAME \
--vnet-name $VNET_HUB_NAME
Usare az network public-ip create per creare un indirizzo IP pubblico per Firewall di Azure.
# Variables
RESOURCE_GROUP="test-rg"
FIREWALL_PUBLIC_IP_NAME="public-ip-firewall"
ALLOCATION_METHOD="Static"
SKU="Standard"
az network public-ip create \
--resource-group $RESOURCE_GROUP \
--name $FIREWALL_PUBLIC_IP_NAME \
--allocation-method $ALLOCATION_METHOD \
--sku $SKU
Usare az network firewall policy create per creare una politica firewall.
# Variables
RESOURCE_GROUP="test-rg"
FIREWALL_POLICY_NAME="firewall-policy"
az network firewall policy create \
--resource-group $RESOURCE_GROUP \
--name $FIREWALL_POLICY_NAME
Usare az network firewall create per creare Firewall di Azure.
# Variables
RESOURCE_GROUP="test-rg"
FIREWALL_NAME="firewall"
VNET_HUB_NAME="vnet-hub"
FIREWALL_POLICY_NAME="firewall-policy"
FIREWALL_PUBLIC_IP_NAME="public-ip-firewall"
az network firewall create \
--resource-group $RESOURCE_GROUP \
--name $FIREWALL_NAME \
--vnet-name $VNET_HUB_NAME \
--firewall-policy $FIREWALL_POLICY_NAME \
--public-ip $FIREWALL_PUBLIC_IP_NAME
Creare il gateway NAT
Tutto il traffico Internet in uscita attraversa il gateway NAT andando verso Internet. Usare l'esempio seguente per creare un gateway NAT per la rete hub-spoke e associarlo ad AzureFirewallSubnet.
Nella casella di ricerca nella parte superiore del portale immettere gateway NAT. Selezionare Gateway NAT nei risultati della ricerca.
Seleziona + Crea.
Nella scheda Informazioni di base di Crea un gateway NAT (Network Address Translation) immettere o selezionare le informazioni seguenti:
Impostazione |
Valore |
Dettagli di progetto |
|
Abbonamento |
Selezionare la propria sottoscrizione. |
Gruppo di risorse |
Selezionare test-rg. |
Dettagli istanza |
|
Nome del gateway NAT |
Immettere nat-gateway. |
Paese |
selezionare Stati Uniti centro-meridionali. |
Zona di disponibilità |
Selezionare una zona o Nessuna zona. |
Timeout di inattività TCP (minuti) |
Lasciare l'impostazione predefinita 4. |
Per altre informazioni sulle zone di disponibilità, vedere Gateway NAT e zone di disponibilità.
Selezionare Avanti: IP in uscita.
In IP in uscita, in Indirizzi IP pubblici, selezionare Crea un nuovo indirizzo IP pubblico.
Immettere public-ip-nat in Nome.
Seleziona OK.
Selezionare Avanti: Subnet.
In Rete virtuale selezionare vnet-hub.
Selezionare AzureFirewallSubnet in Nome subnet.
Selezionare Rivedi e crea.
Seleziona Crea.
Usare New-AzPublicIpAddress per creare un indirizzo IP pubblico per il gateway NAT.
# Create public IP for NAT gateway
$publicIpNatParams = @{
ResourceGroupName = 'test-rg'
Location = 'southcentralus'
Name = 'public-ip-nat'
AllocationMethod = 'Static'
Sku = 'Standard'
}
$publicIpNat = New-AzPublicIpAddress @publicIpNatParams
Usare New-AzNatGateway per creare il gateway NAT.
$natGatewayParams = @{
ResourceGroupName = 'test-rg'
Name = 'nat-gateway'
PublicIpAddress = $publicIpNat
Sku = 'Standard'
IdleTimeoutInMinutes = 4
Location = 'South Central US'
}
$natGateway = New-AzNatGateway @natGatewayParams
Usare Set-AzVirtualNetworkSubnetConfig per associare il gateway NAT ad AzureFirewallSubnet.
# Get the AzureFirewallSubnet from the hub virtual network
$subnetParams = @{
VirtualNetwork = $hubVnet
Name = 'AzureFirewallSubnet'
}
$subnet = Get-AzVirtualNetworkSubnetConfig @subnetParams
$subnet.NatGateway = $natGateway
# Associate NAT gateway with AzureFirewallSubnet
$subnetParams = @{
VirtualNetwork = $hubVnet
Name = 'AzureFirewallSubnet'
AddressPrefix = '10.0.1.64/26'
NatGateway = $natGateway
}
Set-AzVirtualNetworkSubnetConfig @subnetParams
Usare Set-AzVirtualNetwork per aggiornare la rete virtuale.
# Update the virtual network
$hubVnet | Set-AzVirtualNetwork
Usare az network public-ip create per creare un indirizzo IP pubblico per il gateway NAT.
# Variables
RESOURCE_GROUP="test-rg"
NAT_PUBLIC_IP_NAME="public-ip-nat"
ALLOCATION_METHOD="Static"
SKU="Standard"
az network public-ip create \
--resource-group $RESOURCE_GROUP \
--name $NAT_PUBLIC_IP_NAME \
--allocation-method $ALLOCATION_METHOD \
--sku $SKU
Usare az network nat gateway create per creare un gateway NAT.
# Variables
RESOURCE_GROUP="test-rg"
NAT_GATEWAY_NAME="nat-gateway"
NAT_PUBLIC_IP_NAME="public-ip-nat"
IDLE_TIMEOUT="4"
az network nat gateway create \
--resource-group $RESOURCE_GROUP \
--name $NAT_GATEWAY_NAME \
--public-ip-address $NAT_PUBLIC_IP_NAME \
--idle-timeout $IDLE_TIMEOUT
Usare az network vnet subnet update per associare il gateway NAT ad AzureFirewallSubnet.
# Variables
RESOURCE_GROUP="test-rg"
VNET_HUB_NAME="vnet-hub"
FIREWALL_SUBNET_NAME="AzureFirewallSubnet"
NAT_GATEWAY_NAME="nat-gateway"
az network vnet subnet update \
--resource-group $RESOURCE_GROUP \
--vnet-name $VNET_HUB_NAME \
--name $FIREWALL_SUBNET_NAME \
--nat-gateway $NAT_GATEWAY_NAME
Creare la rete virtuale spoke
La rete virtuale spoke contiene la macchina virtuale di test usata per testare il routing del traffico Internet verso il gateway NAT. Usare l'esempio seguente per creare la rete spoke.
Nella casella di ricerca nella parte superiore del portale immettere Rete virtuale. Selezionare Reti virtuali nei risultati della ricerca.
Seleziona + Crea.
Nella scheda Informazioni di base di Crea rete virtuale immettere o selezionare le informazioni seguenti:
Impostazione |
Valore |
Dettagli di progetto |
|
Abbonamento |
Selezionare la propria sottoscrizione. |
Gruppo di risorse |
Selezionare test-rg. |
Dettagli istanza |
|
Nome |
Immettere vnet-spoke. |
Paese |
selezionare Stati Uniti centro-meridionali. |
Selezionare Avanti per passare alla scheda Sicurezza.
Selezionare Avanti per passare alla scheda Indirizzi IP.
Nella scheda Indirizzi IP nello spazio indirizzi IPv4, selezionare Elimina spazio indirizzi per eliminare lo spazio indirizzi popolato automaticamente.
Selezionare + Aggiungi spazio indirizzi IPv4.
Per lo spazio indirizzi IPv4 digitare 10.1.0.0. Lasciare il valore predefinito /16 (65.536 indirizzi) nella maschera di selezione.
Selezionare + Aggiungi una subnet.
In Aggiungi una subnet immettere o selezionare le informazioni seguenti:
Impostazione |
Valore |
Scopo della subnet |
Lasciare l'impostazione predefinita Predefinito. |
Nome |
Immettere subnet-private. |
IPv4 |
|
Intervallo di indirizzi IPv4 |
Lasciare l'impostazione predefinita 10.1.0.0/16. |
Indirizzo iniziale |
Lasciare l'impostazione predefinita 10.1.0.0. |
Dimensione |
Lasciare l'impostazione predefinita /24(256 indirizzi). |
Selezionare Aggiungi.
Selezionare Rivedi e crea.
Seleziona Crea.
Usare New-AzVirtualNetwork per creare la rete virtuale spoke.
# Create spoke virtual network
$vnetParams = @{
ResourceGroupName = 'test-rg'
Location = 'South Central US'
Name = 'vnet-spoke'
AddressPrefix = '10.1.0.0/16'
}
$spokeVnet = New-AzVirtualNetwork @vnetParams
Usare Add-AzVirtualNetworkSubnetConfig per creare una subnet per la rete virtuale spoke.
# Create subnet in spoke virtual network
$subnetParams = @{
Name = 'subnet-private'
AddressPrefix = '10.1.0.0/24'
VirtualNetwork = $spokeVnet
}
Add-AzVirtualNetworkSubnetConfig @subnetParams
Usare Set-AzVirtualNetwork per aggiornare la rete virtuale spoke.
# Create the virtual network
$spokeVnet | Set-AzVirtualNetwork
Usare az network vnet create per creare la rete virtuale spoke.
# Variables
RESOURCE_GROUP="test-rg"
VNET_SPOKE_NAME="vnet-spoke"
VNET_SPOKE_ADDRESS_PREFIX="10.1.0.0/16"
SPOKE_SUBNET_NAME="subnet-private"
SPOKE_SUBNET_PREFIX="10.1.0.0/24"
az network vnet create \
--resource-group $RESOURCE_GROUP \
--name $VNET_SPOKE_NAME \
--address-prefix $VNET_SPOKE_ADDRESS_PREFIX \
--subnet-name $SPOKE_SUBNET_NAME \
--subnet-prefix $SPOKE_SUBNET_PREFIX
Creare il peering tra hub e spoke
Un peering di reti virtuali viene usato per connettere l'hub allo spoke e lo spoke all'hub. Usare l'esempio seguente per creare un peering di rete bidirezionale tra l'hub e lo spoke.
Nella casella di ricerca nella parte superiore del portale immettere Rete virtuale. Selezionare Reti virtuali nei risultati della ricerca.
Selezionare vNet-hub.
Selezionare Peering, in Impostazioni.
Seleziona + Aggiungi.
In Aggiungi peering, immettere o selezionare le informazioni seguenti:
Impostazione |
Valore |
Riepilogo della rete virtuale remota |
|
Nome del collegamento di peering |
Immettere vnet-spoke-to-vnet-hub. |
Modello di distribuzione della rete virtuale |
Lasciare il valore predefinito di Resource Manager. |
Abbonamento |
Selezionare la propria sottoscrizione. |
Rete virtuale |
Selezionare vnet-spoke (test-rg). |
Impostazioni del peering di reti virtuali remoto |
|
Consentire a "vnet-spoke" di accedere a "vnet-hub" |
Lasciare selezionato come da impostazione predefinita. |
Consentire a "vnet-spoke" di ricevere traffico inoltrato da "vnet-hub" |
Selezionare la casella di controllo. |
Consentire al gateway o al server di route in "vnet-spoke" di inoltrare il traffico a "vnet-hub" |
Lasciare le opzioni non selezionate come da impostazione predefinita. |
Abilitare "vnet-spoke" per l'uso del gateway remoto o del server di route "vnet-hub" |
Lasciare le opzioni non selezionate come da impostazione predefinita. |
Riepilogo della rete virtuale locale |
|
Nome del collegamento di peering |
Immettere vnet-hub-to-vnet-spoke. |
Impostazioni del peering di reti virtuali locale |
|
Consentire a 'vnet-hub' di accedere a 'vnet-spoke' |
Lasciare selezionato come da impostazione predefinita. |
Consentire a "vnet-hub" di ricevere traffico inoltrato da "vnet-spoke" |
Selezionare la casella di controllo. |
Consentire al gateway o al server di route in "vnet-hub" di inoltrare il traffico a "vnet-spoke" |
Lasciare le opzioni non selezionate come da impostazione predefinita. |
Abilitare "vnet-hub" per usare il gateway remoto o il server di route "vnet-spoke" |
Lasciare le opzioni non selezionate come da impostazione predefinita. |
Selezionare Aggiungi.
Selezionare Aggiorna e verificare che lo stato del peering sia Connesso.
Usare Add-AzVirtualNetworkPeering per creare un peering dal nodo centrale al nodo periferico.
# Create peering from hub to spoke
$peeringParams = @{
Name = 'vnet-hub-to-vnet-spoke'
VirtualNetwork = $hubVnet
RemoteVirtualNetworkId = $spokeVnet.Id
AllowForwardedTraffic = $true
}
Add-AzVirtualNetworkPeering @peeringParams
Usare Add-AzVirtualNetworkPeering per creare un peering dallo spoke al hub.
# Create peering from spoke to hub
$peeringParams = @{
Name = 'vnet-spoke-to-vnet-hub'
VirtualNetwork = $spokeVnet
RemoteVirtualNetworkId = $hubVnet.Id
AllowForwardedTraffic = $true
}
Add-AzVirtualNetworkPeering @peeringParams
Utilizzare az network vnet peering create per configurare il peering dall'hub allo spoke.
# Variables
RESOURCE_GROUP="test-rg"
VNET_HUB_NAME="vnet-hub"
HUB_TO_SPOKE_PEERING_NAME="vnet-hub-to-vnet-spoke"
VNET_SPOKE_NAME="vnet-spoke"
az network vnet peering create \
--resource-group $RESOURCE_GROUP \
--vnet-name $VNET_HUB_NAME \
--name $HUB_TO_SPOKE_PEERING_NAME \
--remote-vnet $VNET_SPOKE_NAME \
--allow-forwarded-traffic
Utilizzare az network vnet peering create per creare un peering dal spoke al hub.
# Variables
RESOURCE_GROUP="test-rg"
VNET_SPOKE_NAME="vnet-spoke"
SPOKE_TO_HUB_PEERING_NAME="vnet-spoke-to-vnet-hub"
VNET_HUB_NAME="vnet-hub"
az network vnet peering create \
--resource-group $RESOURCE_GROUP \
--vnet-name $VNET_SPOKE_NAME \
--name $SPOKE_TO_HUB_PEERING_NAME \
--remote-vnet $VNET_HUB_NAME \
--allow-forwarded-traffic
Creare una tabella di route di rete spoke
Una tabella di route forza tutto il traffico che lascia la rete virtuale spoke verso la rete virtuale hub. La tabella di route viene configurata con l'indirizzo IP privato di Firewall di Azure come appliance virtuale.
Ottenere l'indirizzo IP privato del firewall
L'indirizzo IP privato del firewall è necessario per la tabella di route che verrà creata più avanti in questo articolo. Usare l'esempio seguente per ottenere l'indirizzo IP privato del firewall.
Nella casella di ricerca nella parte superiore del portale immettere Firewall. Selezionare Firewall nei risultati della ricerca.
Selezionare firewall.
Nella panoramica del firewall prendere nota dell'indirizzo IP nel campo Ip privato del firewall. In questo esempio l'indirizzo IP è 10.0.1.68.
Usare Get-AzFirewall per ottenere l'indirizzo IP privato del firewall.
# Get the private IP address of the firewall
$firewallParams = @{
ResourceGroupName = 'test-rg'
Name = 'firewall'
}
$firewall = Get-AzFirewall @firewallParams
$firewall.IpConfigurations[0].PrivateIpAddress
# Get the private IP address of the firewall
az network firewall show \
--resource-group test-rg \
--name firewall \
--query "ipConfigurations[0].privateIpAddress" \
--output tsv
Creare una tabella di route
Creare una tabella di route per forzare tutto il traffico in uscita tra spoke e verso Internet attraverso il firewall nella rete virtuale hub.
Nella casella di ricerca nella parte superiore del portale immettere Tabella di route. Selezionare Tabelle di route nei risultati della ricerca.
Seleziona + Crea.
In Crea tabella di route immettere o selezionare le informazioni seguenti:
Impostazione |
Valore |
Dettagli di progetto |
|
Abbonamento |
Selezionare la propria sottoscrizione. |
Gruppo di risorse |
Selezionare test-rg. |
Dettagli istanza |
|
Paese |
selezionare Stati Uniti centro-meridionali. |
Nome |
Immettere route-table-spoke. |
Propaga route del gateway |
Selezionare No. |
Selezionare Rivedi e crea.
Seleziona Crea.
Nella casella di ricerca nella parte superiore del portale immettere Tabella di route. Selezionare Tabelle di route nei risultati della ricerca.
Selezionare route-table-spoke.
In Impostazioni selezionare Route.
Selezionare + Aggiungi in Route.
Immettere o selezionare le informazioni seguenti in Aggiungi route:
Impostazione |
Valore |
Nome route |
Immettere route-to-hub. |
Tipo destinazione |
Selezionare Indirizzi IP. |
Indirizzi IP/Intervalli CIDR di destinazione |
Immettere 0.0.0.0/0. |
Tipo hop successivo |
Selezionare Appliance virtuale. |
Indirizzo hop successivo |
Immettere 10.0.1.68. |
Selezionare Aggiungi.
Selezionare subnet in Impostazioni.
Selezionare + Associa.
Immettere o selezionare le informazioni seguenti in Associa subnet:
Impostazione |
Valore |
Rete virtuale |
Selezionare vnet-spoke (test-rg). |
Sottorete |
Selezionare subnet-private. |
Seleziona OK.
Usare New-AzRouteTable per creare la tabella di route.
# Create route table
$routeTableParams = @{
ResourceGroupName = 'test-rg'
Location = 'South Central US'
Name = 'route-table-spoke'
}
$routeTable = New-AzRouteTable @routeTableParams
Usare Add-AzRouteConfig per creare una route nella tabella di route.
# Create route
$routeConfigParams = @{
Name = 'route-to-hub'
AddressPrefix = '0.0.0.0/0'
NextHopType = 'VirtualAppliance'
NextHopIpAddress = $firewall.IpConfigurations[0].PrivateIpAddress
RouteTable = $routeTable
}
Add-AzRouteConfig @routeConfigParams
Usare Set-AzRouteTable per aggiornare la tabella di route.
# Update the route table
$routeTable | Set-AzRouteTable
Usare Set-AzVirtualNetworkSubnetConfig per associare la tabella di route alla subnet spoke.
# Associate route table with subnet
$subnetConfigParams = @{
VirtualNetwork = $spokeVnet
Name = 'subnet-private'
AddressPrefix = '10.1.0.0/24'
RouteTable = $routeTable
}
Set-AzVirtualNetworkSubnetConfig @subnetConfigParams
Usare Set-AzVirtualNetwork per aggiornare la rete virtuale spoke.
# Update the virtual network
$spokeVnet | Set-AzVirtualNetwork
Usare az network route-table create per creare una tabella di route.
# Variables
RESOURCE_GROUP="test-rg"
ROUTE_TABLE_NAME="route-table-spoke"
LOCATION="southcentralus"
az network route-table create \
--resource-group $RESOURCE_GROUP \
--name $ROUTE_TABLE_NAME \
--location $LOCATION
Usare az network route-table route create per creare una route.
# Variables
RESOURCE_GROUP="test-rg"
ROUTE_TABLE_NAME="route-table-spoke"
ROUTE_NAME="route-to-hub"
ADDRESS_PREFIX="0.0.0.0/0"
NEXT_HOP_TYPE="VirtualAppliance"
NEXT_HOP_IP="10.0.1.68"
az network route-table route create \
--resource-group $RESOURCE_GROUP \
--route-table-name $ROUTE_TABLE_NAME \
--name $ROUTE_NAME \
--address-prefix $ADDRESS_PREFIX \
--next-hop-type $NEXT_HOP_TYPE \
--next-hop-ip-address $NEXT_HOP_IP
Usare az network vnet subnet update per associare la tabella di route alla subnet.
# Variables
RESOURCE_GROUP="test-rg"
VNET_SPOKE_NAME="vnet-spoke"
SPOKE_SUBNET_NAME="subnet-private"
ROUTE_TABLE_NAME="route-table-spoke"
az network vnet subnet update \
--resource-group $RESOURCE_GROUP \
--vnet-name $VNET_SPOKE_NAME \
--name $SPOKE_SUBNET_NAME \
--route-table $ROUTE_TABLE_NAME
Il traffico proveniente dallo spoke tramite l'hub deve essere consentito attraverso i criteri firewall e una regola di rete. Usare l'esempio seguente per creare i criteri firewall e la regola di rete.
Nella casella di ricerca nella parte superiore del portale immettere Firewall. Selezionare Criteri firewall nei risultati della ricerca.
Selezionare firewall-policy.
Espandere Impostazioni, quindi selezionare Regole di rete.
Selezionare + Aggiungi una raccolta regole.
In Aggiungi una raccolta regole immettere o selezionare le informazioni seguenti:
Impostazione |
Valore |
Nome |
Immettere spoke-to-internet. |
Tipo di raccolta regole |
Selezionare Rete. |
Priorità |
Immettere 100. |
Azione della raccolta regole |
Seleziona Consenti. |
Gruppo di raccolta regole |
Selezionare DefaultNetworkRuleCollectionGroup. |
Regole |
|
Nome |
Immettere allow-web. |
Tipo di origine |
Indirizzo IP. |
Origine |
Immettere 10.1.0.0/24. |
Protocollo |
Selezionare TCP. |
Porte di destinazione |
Immettere 80,443. |
Tipo destinazione |
Selezionare Indirizzo IP. |
Destinazione |
Immettere * |
Selezionare Aggiungi.
Usare Get-AzFirewallPolicy per ottenere i criteri firewall esistenti.
# Get the existing firewall policy
$firewallPolicyParams = @{
Name = 'firewall-policy'
ResourceGroupName = 'test-rg'
}
$firewallPolicy = Get-AzFirewallPolicy @firewallPolicyParams
Usare New-AzFirewallPolicyNetworkRule per creare una regola di rete.
# Create a network rule for web traffic
$networkRuleParams = @{
Name = 'allow-internet'
SourceAddress = '10.1.0.0/24'
Protocol = 'TCP'
DestinationAddress = '*'
DestinationPort = '*'
}
$networkRule = New-AzFirewallPolicyNetworkRule @networkRuleParams
Usare New-AzFirewallPolicyFilterRuleCollection per creare una raccolta regole per la regola di rete.
# Create a rule collection for the network rule
$ruleCollectionParams = @{
Name = 'spoke-to-internet'
Priority = 100
Rule = $networkRule
ActionType = 'Allow'
}
$ruleCollection = New-AzFirewallPolicyFilterRuleCollection @ruleCollectionParams
Usare New-AzFirewallPolicyRuleCollectionGroup per creare un gruppo di regole di raccolta.
$newRuleCollectionGroupParams = @{
Name = 'DefaultNetworkRuleCollectionGroup'
Priority = 200
FirewallPolicyObject = $firewallPolicy
RuleCollection = $ruleCollection
}
New-AzFirewallPolicyRuleCollectionGroup @newRuleCollectionGroupParams
Usare az network firewall policy rule-collection-group create per creare un gruppo di regole.
# Variables
RULE_COLLECTION_GROUP_NAME="DefaultNetworkRuleCollectionGroup"
FIREWALL_POLICY_NAME="firewall-policy"
RESOURCE_GROUP="test-rg"
PRIORITY="200"
az network firewall policy rule-collection-group create \
--name $RULE_COLLECTION_GROUP_NAME \
--policy-name $FIREWALL_POLICY_NAME \
--resource-group $RESOURCE_GROUP \
--priority $PRIORITY
Usare az network firewall policy rule-collection-group collection add-filter-collection per creare una collezione di regole per la rete.
# Variables
COLLECTION_NAME="spoke-to-internet"
ACTION="Allow"
RULE_NAME="allow-web"
RULE_TYPE="NetworkRule"
SOURCE_ADDRESSES="10.1.0.0/24"
IP_PROTOCOLS="TCP"
DESTINATION_ADDRESSES="*"
DESTINATION_PORTS="*"
COLLECTION_PRIORITY="100"
FIREWALL_POLICY_NAME="firewall-policy"
RESOURCE_GROUP="test-rg"
RULE_COLLECTION_GROUP_NAME="DefaultNetworkRuleCollectionGroup"
az network firewall policy rule-collection-group collection add-filter-collection \
--name $COLLECTION_NAME \
--action $ACTION \
--rule-name $RULE_NAME \
--rule-type $RULE_TYPE \
--source-addresses $SOURCE_ADDRESSES \
--ip-protocols $IP_PROTOCOLS \
--destination-addresses $DESTINATION_ADDRESSES \
--destination-ports $DESTINATION_PORTS \
--collection-priority $COLLECTION_PRIORITY \
--policy-name $FIREWALL_POLICY_NAME \
--resource-group $RESOURCE_GROUP \
--rule-collection-group-name $RULE_COLLECTION_GROUP_NAME
Creare una macchina virtuale di test
Viene usata una macchina virtuale Ubuntu per testare il traffico Internet in uscita attraverso il gateway NAT. Usare l'esempio seguente per creare una macchina virtuale Ubuntu.
Nel portale, cercare e selezionare Macchine virtuali.
In Macchine virtuali, selezionare + Crea, quindi Macchina virtuale di Azure.
Nella scheda Informazioni di base di Crea una macchina virtuale, immettere o selezionare le informazioni seguenti:
Impostazione |
Valore |
Dettagli di progetto |
|
Abbonamento |
Selezionare la propria sottoscrizione. |
Gruppo di risorse |
Selezionare test-rg. |
Dettagli istanza |
|
Nome della macchina virtuale |
Immettere vm-spoke. |
Paese |
Selezionare (USA) Stati Uniti centro-meridionali. |
Opzioni di disponibilità |
Selezionare La ridondanza dell'infrastruttura non è richiesta. |
Tipo di sicurezza |
Lasciare l'impostazione predefinita Standard. |
Immagine |
Selezionare Ubuntu Server 24.04 LTS - x64 Gen2. |
Architettura della macchina virtuale |
Lasciare il valore predefinito x64. |
Dimensione |
Selezionare una dimensione. |
Account amministratore |
|
Tipo di autenticazione |
selezionare Password. |
Nome utente |
digitare azureuser. |
Parola chiave |
Immettere una password. |
Conferma password |
Immettere nuovamente la password. |
Regole porta in ingresso |
|
Porte in ingresso pubbliche |
Selezionare Nessuno. |
Selezionare la scheda Rete nella parte superiore della pagina oppure selezionare Avanti: Dischi e quindi Avanti: Rete.
Nella scheda Rete immettere o selezionare le informazioni seguenti:
Impostazione |
Valore |
Interfaccia di rete |
|
Rete virtuale |
Selezionare vnet-spoke. |
Sottorete |
Selezionare subnet-private (10.1.0.0/24). |
IP pubblico |
Selezionare Nessuno. |
Gruppo di sicurezza di rete della scheda di interfaccia di rete |
Seleziona Avanzate. |
Configura gruppo di sicurezza di rete |
Selezionare Crea nuovo.
Immettere nsg-1 per il nome.
Lasciare invariate le impostazioni predefinite e selezionare OK. |
Lasciare invariate le impostazioni predefinite e selezionare Rivedi e crea.
Rivedere le impostazioni e selezionare Crea.
Prima di proseguire con i passaggi successivi, attendere il completamento della distribuzione della macchina virtuale.
Nota
Le macchine virtuali in una rete virtuale con un host Bastion non necessitano di indirizzi IP pubblici. Bastion fornisce l'indirizzo IP pubblico e le macchine virtuali usano indirizzi IP privati per comunicare all'interno della rete. È possibile rimuovere gli indirizzi IP pubblici da qualsiasi macchina virtuale in reti virtuali ospitate da Bastion. Per altre informazioni, vedere Annullare l'associazione di un indirizzo IP pubblico da una macchina virtuale di Azure.
Usare New-AzNetworkSecurityGroup per creare il gruppo di sicurezza di rete.
$nsgParams = @{
ResourceGroupName = "test-rg"
Name = "nsg-1"
Location = "southcentralus"
}
New-AzNetworkSecurityGroup @nsgParams
Usare New-AzNetworkInterface per creare l'interfaccia di rete.
$nicParams = @{
ResourceGroupName = "test-rg"
Name = "nic-1"
SubnetId = (Get-AzVirtualNetwork -ResourceGroupName "test-rg" -Name "vnet-spoke").Subnets[0].Id
NetworkSecurityGroupId = (Get-AzNetworkSecurityGroup -ResourceGroupName "test-rg" -Name "nsg-1").Id
Location = "southcentralus"
}
New-AzNetworkInterface @nicParams
Usare Get-Credential per impostare un nome utente e una password per la macchina virtuale e archiviarli nella $cred
variabile .
$cred = Get-Credential
Nota
Per la macchina virtuale è necessario un nome utente. La password è facoltativa e non viene usata se impostata. La configurazione della chiave SSH è consigliata per le macchine virtuali Linux.
Usare New-AzVMConfig per definire una macchina virtuale.
$vmConfigParams = @{
VMName = "vm-spoke"
VMSize = "Standard_DS4_v2"
}
$vmConfig = New-AzVMConfig @vmConfigParams
Usare Set-AzVMOperatingSystem e Set-AzVMSourceImage per creare il resto della configurazione della macchina virtuale. L'esempio seguente crea una macchina virtuale Ubuntu Server:
$osParams = @{
VM = $vmConfig
ComputerName = "vm-spoke"
Credential = $cred
}
$vmConfig = Set-AzVMOperatingSystem @osParams -Linux -DisablePasswordAuthentication
$imageParams = @{
VM = $vmConfig
PublisherName = "Canonical"
Offer = "ubuntu-24_04-lts"
Skus = "server"
Version = "latest"
}
$vmConfig = Set-AzVMSourceImage @imageParams
Usare Add-AzVMNetworkInterface per collegare la scheda di interfaccia di rete creata in precedenza alla macchina virtuale.
# Get the network interface object
$nicParams = @{
ResourceGroupName = "test-rg"
Name = "nic-1"
}
$nic = Get-AzNetworkInterface @nicParams
$vmConfigParams = @{
VM = $vmConfig
Id = $nic.Id
}
$vmConfig = Add-AzVMNetworkInterface @vmConfigParams
Usare New-AzVM per creare la macchina virtuale. Il comando genera chiavi SSH per la macchina virtuale per l'accesso. Prendere nota della posizione della chiave privata. La chiave privata è necessaria nei passaggi successivi per la connessione alla macchina virtuale con Azure Bastion.
$vmParams = @{
VM = $vmConfig
ResourceGroupName = "test-rg"
Location = "southcentralus"
SshKeyName = "ssh-key"
}
New-AzVM @vmParams -GenerateSshKey
Usare az network nsg create per creare un gruppo di sicurezza di rete.
# Variables
RESOURCE_GROUP="test-rg"
NSG_NAME="nsg-1"
LOCATION="southcentralus"
az network nsg create \
--resource-group $RESOURCE_GROUP \
--name $NSG_NAME \
--location $LOCATION
Usare az network nic create per creare un'interfaccia di rete.
# Variables
RESOURCE_GROUP="test-rg"
NIC_NAME="vm-spoke-nic"
VNET_SPOKE_NAME="vnet-spoke"
SPOKE_SUBNET_NAME="subnet-private"
NSG_NAME="nsg-1"
az network nic create \
--resource-group $RESOURCE_GROUP \
--name $NIC_NAME \
--vnet-name $VNET_SPOKE_NAME \
--subnet $SPOKE_SUBNET_NAME \
--network-security-group $NSG_NAME
Usare il comando az vm create per creare una macchina virtuale.
# Variables
RESOURCE_GROUP="test-rg"
VM_NAME="vm-spoke"
LOCATION="southcentralus"
NIC_NAME="vm-spoke-nic"
VM_IMAGE="Ubuntu2204"
ADMIN_USERNAME="azureuser"
az vm create \
--resource-group $RESOURCE_GROUP \
--name $VM_NAME \
--location $LOCATION \
--nics $NIC_NAME \
--image $VM_IMAGE \
--admin-username $ADMIN_USERNAME \
--generate-ssh-keys
Testare il gateway NAT
Connettersi alle macchine virtuali Ubuntu create nei passaggi precedenti per verificare che il traffico Internet in uscita esca dal gateway NAT.
Ottenere l'indirizzo IP pubblico del gateway NAT
Ottenere l'indirizzo IP pubblico del gateway NAT per la verifica dei passaggi descritti più avanti nell'articolo.
Nella casella di ricerca nella parte superiore del portale, immettere Indirizzo IP pubblico. Selezionare Indirizzi IP pubblici nei risultati della ricerca.
Selezionare public-ip-nat.
Prendere nota del valore nell'indirizzo IP. L'esempio usato in questo articolo è 203.0.113.0.25.
Usare Get-AzPublicIpAddress per ottenere l'indirizzo IP pubblico del gateway NAT.
# Get the public IP address of the NAT gateway
$publicIpNatParams = @{
ResourceGroupName = 'test-rg'
Name = 'public-ip-nat'
}
$publicIpNat = Get-AzPublicIpAddress @publicIpNatParams
$publicIpNat.IpAddress
Usare az network public-ip show per ottenere l'indirizzo IP pubblico del gateway NAT.
# Variables
RESOURCE_GROUP="test-rg"
NAT_PUBLIC_IP_NAME="public-ip-nat"
az network public-ip show \
--resource-group $RESOURCE_GROUP \
--name $NAT_PUBLIC_IP_NAME \
--query "ipAddress" \
--output tsv
Testare il gateway NAT dallo spoke
Nella casella di ricerca, nella parte superiore del portale, immettere Macchina virtuale. Selezionare Macchine virtuali nei risultati della ricerca.
Selezionare vm-spoke.
In Informazioni generali selezionare Connetti quindi Connetti tramite Bastion.
Selezionare SSH come tipo di connessione. Caricare il file di chiave privata SSH. Selezionare Connetti.
Nel prompt di bash immettere il comando seguente:
curl ifconfig.me
Verificare che l'indirizzo IP restituito dal comando corrisponda all'indirizzo IP pubblico del gateway NAT.
azureuser@vm-1:~$ curl ifconfig.me
203.0.113.0.25
Chiudere la connessione Bastion a vm-spoke.
Quando le risorse create non sono più necessarie, è possibile eliminare il gruppo di risorse e tutte le risorse al suo interno.
Accedere al portale di Azure e selezionare Gruppi di risorse.
Nella pagina Gruppi di risorse selezionare il gruppo di risorse test-rg.
Nella pagina test-rg selezionare Elimina gruppo di risorse.
Immettere test-rg in Immettere il nome del gruppo di risorse per confermare l'eliminazione, quindi selezionare Elimina.
Usare Remove-AzResourceGroup per rimuovere il gruppo di risorse.
# Remove resource group
$rgParams = @{
Name = 'test-rg'
}
Remove-AzResourceGroup @rgParams
Usare az group delete per rimuovere il gruppo di risorse.
# Variables
RESOURCE_GROUP="test-rg"
az group delete \
--name $RESOURCE_GROUP \
--yes \
--no-wait
Passaggi successivi
Passare all'articolo successivo per informazioni su come integrare un gateway NAT con Azure Load Balancer: