Questo argomento di avvio rapido illustra come creare un gateway NAT usando il portale di Azure, l'interfaccia della riga di comando di Azure, PowerShell, Bicep, arm e Terraform. Il servizio gateway NAT offre connettività in uscita per le macchine virtuali in Azure.
Creare un gateway NAT
Prima di distribuire la risorsa gateway NAT e le altre risorse, è necessario un gruppo di risorse per contenere le risorse distribuite. Nei passaggi seguenti viene creato un gruppo di risorse, una risorsa gateway NAT e un indirizzo IP pubblico. È possibile usare una o più risorse indirizzo IP pubblico, prefissi IP pubblici o entrambi.
Per informazioni sui prefissi IP pubblici e su un gateway NAT, vedere Gestire il gateway NAT.
Nella casella di ricerca nella parte superiore del portale immettere gateway NAT. Selezionare Gateway NAT nei risultati della ricerca.
Seleziona + Crea.
In Crea un gateway NAT (Network Address Translation) immettere o selezionare le informazioni seguenti nella scheda Informazioni di base:
impostazione |
Valore |
Dettagli del progetto |
|
Abbonamento |
Seleziona la tua sottoscrizione di Azure. |
Gruppo di risorse |
Seleziona Crea nuovo.
Immettere test-rg.
Selezionare OK. |
Dettagli dell'istanza |
|
Nome del gateway NAT |
Immettere nat-gateway |
Area geografica |
Selezionare Stati Uniti orientali 2 |
Availability Zone (Zona di disponibilità) |
Selezionare Nessuna zona. |
Timeout di inattività TCP (minuti) |
Lasciare l'impostazione predefinita 4. |
Per informazioni sulle zone di disponibilità e sul gateway NAT, vedere Gateway NAT e le zone di disponibilità.
Selezionare la scheda IP in uscita oppure il pulsante Avanti: IP in uscita nella parte inferiore della pagina.
Nella scheda IP in uscita immettere o selezionare le informazioni seguenti:
impostazione |
Valore |
Indirizzi IP pubblici |
Selezionare Crea un nuovo indirizzo IP pubblico.
In Nome immettere public-ip-nat.
Selezionare OK. |
Selezionare la scheda Rivedi e crea o selezionare il pulsante blu Rivedi e crea nella parte inferiore della pagina.
Fare clic su Crea.
Creare una rete virtuale e un host bastion
La procedura seguente crea una rete virtuale con una subnet di risorse, una subnet di Azure Bastion e un host Azure Bastion.
Nel portale cercare e selezionare Reti virtuali.
Nella pagina Reti virtuali selezionare + Crea.
Nella scheda Informazioni di base di Crea rete virtuale immettere o selezionare le informazioni seguenti:
Impostazione |
Valore |
Dettagli di progetto |
|
Abbonamento |
Selezionare la sottoscrizione. |
Gruppo di risorse |
Selezionare test-rg. |
Dettagli dell'istanza |
|
Nome |
Inserire vnet-1. |
Area geografica |
Selezionare (Stati Uniti) Stati Uniti orientali 2. |
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 macchine virtuali non necessitano di indirizzi IP pubblici, software client o configurazioni speciali. Per altre informazioni su Azure Bastion, vedere Azure Bastion
Annotazioni
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 Avanti per passare alla scheda Indirizzi IP.
Nella casella dello spazio indirizzi in Subnet, selezionare la subnet predefinita.
In Modifica subnet immettere o selezionare le informazioni seguenti:
Impostazione |
Valore |
Scopo della subnet |
Lasciare l'impostazione predefinita Predefinito. |
Nome |
Immettere subnet-1. |
IPv4 |
|
Intervallo di indirizzi IPv4 |
Lasciare l'impostazione predefinita 10.0.0.0/16. |
Indirizzo iniziale |
Lasciare l'impostazione predefinita 10.0.0.0. |
Misura |
Lasciare l'impostazione predefinita /24(256 indirizzi). |
sicurezza |
|
Gateway NAT |
Selezionare nat-gateway. |
Seleziona Salva.
Selezionare Rivedi e crea in fondo allo schermo e, quando la convalida ha esito positivo, selezionare Crea.
Creare una macchina virtuale di test
La procedura seguente crea nella rete virtuale una macchina virtuale di test denominata vm-1.
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 sottoscrizione. |
Gruppo di risorse |
Selezionare test-rg. |
Dettagli dell'istanza |
|
Nome della macchina virtuale |
Immettere vm-1. |
Area geografica |
Selezionare Stati Uniti orientali 2. |
Opzioni di disponibilità |
Selezionare La ridondanza dell'infrastruttura non è richiesta. |
Tipo di sicurezza |
Lasciare l'impostazione predefinita Standard. |
Immagine |
Selezionare Ubuntu Server 22.04 LTS - x64 Gen2. |
Architettura della macchina virtuale |
Lasciare il valore predefinito x64. |
Misura |
Selezionare una dimensione. |
Account dell'amministratore |
|
Tipo di autenticazione |
selezionare Password. |
Nome utente |
Inserire azureuser. |
Parola chiave |
Immettere una password. |
Conferma la password |
Immettere nuovamente la password. |
Regole delle porte in ingresso |
|
Porte di ingresso pubbliche |
Seleziona Nessuno. |
Selezionare la scheda Rete, nella parte superiore della pagina.
Nella scheda Rete immettere o selezionare le informazioni seguenti:
Impostazione |
Valore |
Interfaccia di rete |
|
Rete virtuale |
Selezionare vnet-1. |
Sottorete |
Selezionare subnet-1 (10.0.0.0/24). |
IP pubblico |
Seleziona Nessuno. |
Gruppo di sicurezza della rete NIC |
Seleziona Avanzate. |
Configura gruppo di sicurezza di rete |
Seleziona 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.
Annotazioni
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.
Annotazioni
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 del gateway NAT di Azure viene assegnata alla subnet della macchina virtuale.
Le macchine virtuali che crei utilizzando i set di scalabilità di macchine virtuali in modalità di orchestrazione flessibile non hanno accesso predefinito in uscita.
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.
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 creare il gateway NAT e le risorse di supporto.
## 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.
Crea macchina virtuale
In questa sezione viene creata 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 VM ##
$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 ##
$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 ##
$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.
Creare un gruppo di risorse
Creare un gruppo di risorse con az group create. Un gruppo di risorse di Azure è un contenitore logico in cui le risorse di Azure vengono distribuite e gestite.
az group create \
--name test-rg \
--location eastus2
Creare il gateway NAT
In questa sezione creare il gateway NAT e le risorse di supporto.
Creare un indirizzo IP pubblico
Per accedere a Internet, sono necessari uno o più indirizzi IP pubblici per il gateway NAT. Usare az network public-ip create per creare una risorsa indirizzo IP pubblico.
az network public-ip create \
--resource-group test-rg \
--name public-ip-nat \
--sku Standard \
--allocation-method Static \
--location eastus2 \
--zone 1 2 3
Creare una risorsa gateway NAT
Creare una risorsa gateway NAT utilizzando az network nat gateway create. Il gateway NAT usa l'indirizzo IP pubblico creato nel passaggio precedente. Il timeout di inattività è impostato su 10 minuti.
az network nat gateway create \
--resource-group test-rg \
--name nat-gateway \
--public-ip-addresses public-ip-nat \
--idle-timeout 10
Creare una rete virtuale e una subnet
Creare una rete virtuale denominata vnet-1 con una subnet denominata subnet-1 usando az network vnet create. Lo spazio indirizzi IP per la rete virtuale è 10.0.0.0/16. La subnet all'interno della rete virtuale è 10.0.0.0/24.
az network vnet create \
--resource-group test-rg \
--name vnet-1 \
--address-prefix 10.0.0.0/16 \
--subnet-name subnet-1 \
--subnet-prefixes 10.0.0.0/24
Creare una subnet di Azure Bastion
Creare una subnet di Azure Bastion denominata AzureBastionSubnet usando az network vnet subnet create:
az network vnet subnet create \
--name AzureBastionSubnet \
--resource-group test-rg \
--vnet-name vnet-1 \
--address-prefix 10.0.1.0/26
Associare il gateway NAT alla subnet
Associare il gateway NAT alla subnet usando az network vnet subnet update:
az network vnet subnet update \
--resource-group test-rg \
--vnet-name vnet-1 \
--name subnet-1 \
--nat-gateway nat-gateway
Creare un indirizzo IP pubblico per l'host Bastion
Creare un indirizzo IP pubblico per l'host Bastion usando az network public-ip create:
az network public-ip create \
--resource-group test-rg \
--name public-ip \
--sku Standard \
--location eastus2 \
--zone 1 2 3
Creare l'host Bastion
Creare l'host Azure Bastion usando az network bastion create:
az network bastion create \
--name bastion \
--public-ip-address public-ip \
--resource-group test-rg \
--vnet-name vnet-1 \
--location eastus2
La distribuzione dell'host Bastion può richiedere alcuni minuti. Attendere che l'host Bastion venga distribuito prima di passare alla sezione successiva.
Crea macchina virtuale
Creare una macchina virtuale denominata vm-1 per testare il gateway NAT e verificare l'indirizzo IP pubblico della connessione in uscita. Usare az vm create:
az vm create \
--resource-group test-rg \
--name vm-1 \
--image Ubuntu2204 \
--admin-username azureuser \
--authentication-type password \
--public-ip-address "" \
--subnet subnet-1 \
--vnet-name vnet-1
Attendere il completamento della creazione della macchina virtuale prima di passare alla sezione successiva.
Un modello di Azure Resource Manager è un file JSON (JavaScript Object Notation) che definisce l'infrastruttura e la configurazione del progetto. Il modello usa la sintassi dichiarativa. Si descrive la distribuzione prevista senza scrivere la sequenza di comandi di programmazione necessari per creare la distribuzione.
Se il tuo ambiente soddisfa i prerequisiti e siete familiari con l'uso di modelli ARM, selezionate il pulsante Distribuisci in Azure. Il modello viene visualizzato nel portale di Azure.
Rivedere il modello
Il modello usato in questo avvio rapido proviene dai modelli di avvio rapido di Azure.
Questo modello è configurato per la creazione di uno degli elementi seguenti:
Rete virtuale
Risorsa gateway NAT
Macchina virtuale Ubuntu
La macchina virtuale Ubuntu viene distribuita in una subnet associata alla risorsa gateway NAT.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.25.53.49325",
"templateHash": "15583664434476061565"
}
},
"parameters": {
"vmname": {
"type": "string",
"defaultValue": "vm-1",
"metadata": {
"description": "Name of the virtual machine"
}
},
"vmsize": {
"type": "string",
"defaultValue": "Standard_D2s_v3",
"metadata": {
"description": "Size of the virtual machine"
}
},
"vnetname": {
"type": "string",
"defaultValue": "vnet-1",
"metadata": {
"description": "Name of the virtual network"
}
},
"subnetname": {
"type": "string",
"defaultValue": "subnet-1",
"metadata": {
"description": "Name of the subnet for virtual network"
}
},
"vnetaddressspace": {
"type": "string",
"defaultValue": "10.0.0.0/16",
"metadata": {
"description": "Address space for virtual network"
}
},
"vnetsubnetprefix": {
"type": "string",
"defaultValue": "10.0.0.0/24",
"metadata": {
"description": "Subnet prefix for virtual network"
}
},
"natgatewayname": {
"type": "string",
"defaultValue": "nat-gateway",
"metadata": {
"description": "Name of the NAT gateway"
}
},
"networkinterfacename": {
"type": "string",
"defaultValue": "nic-1",
"metadata": {
"description": "Name of the virtual machine nic"
}
},
"publicipname": {
"type": "string",
"defaultValue": "public-ip-nat",
"metadata": {
"description": "Name of the NAT gateway public IP"
}
},
"nsgname": {
"type": "string",
"defaultValue": "nsg-1",
"metadata": {
"description": "Name of the virtual machine NSG"
}
},
"adminusername": {
"type": "string",
"metadata": {
"description": "Administrator username for virtual machine"
}
},
"adminpassword": {
"type": "securestring",
"metadata": {
"description": "Administrator password for virtual machine"
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "Name of resource group"
}
}
},
"resources": [
{
"type": "Microsoft.Network/networkSecurityGroups",
"apiVersion": "2021-05-01",
"name": "[parameters('nsgname')]",
"location": "[parameters('location')]",
"properties": {
"securityRules": [
{
"name": "SSH",
"properties": {
"protocol": "Tcp",
"sourcePortRange": "*",
"destinationPortRange": "22",
"sourceAddressPrefix": "*",
"destinationAddressPrefix": "*",
"access": "Allow",
"priority": 300,
"direction": "Inbound"
}
}
]
}
},
{
"type": "Microsoft.Network/publicIPAddresses",
"apiVersion": "2021-05-01",
"name": "[parameters('publicipname')]",
"location": "[parameters('location')]",
"sku": {
"name": "Standard"
},
"properties": {
"publicIPAddressVersion": "IPv4",
"publicIPAllocationMethod": "Static",
"idleTimeoutInMinutes": 4
}
},
{
"type": "Microsoft.Compute/virtualMachines",
"apiVersion": "2021-11-01",
"name": "[parameters('vmname')]",
"location": "[parameters('location')]",
"properties": {
"hardwareProfile": {
"vmSize": "[parameters('vmsize')]"
},
"storageProfile": {
"imageReference": {
"publisher": "Canonical",
"offer": "0001-com-ubuntu-server-jammy",
"sku": "22_04-lts-gen2",
"version": "latest"
},
"osDisk": {
"osType": "Linux",
"name": "[format('{0}_disk1', parameters('vmname'))]",
"createOption": "FromImage",
"caching": "ReadWrite",
"managedDisk": {
"storageAccountType": "Premium_LRS"
},
"diskSizeGB": 30
}
},
"osProfile": {
"computerName": "[parameters('vmname')]",
"adminUsername": "[parameters('adminusername')]",
"adminPassword": "[parameters('adminpassword')]",
"linuxConfiguration": {
"disablePasswordAuthentication": false,
"provisionVMAgent": true
},
"allowExtensionOperations": true
},
"networkProfile": {
"networkInterfaces": [
{
"id": "[resourceId('Microsoft.Network/networkInterfaces', parameters('networkinterfacename'))]"
}
]
}
},
"dependsOn": [
"[resourceId('Microsoft.Network/networkInterfaces', parameters('networkinterfacename'))]"
]
},
{
"type": "Microsoft.Network/virtualNetworks",
"apiVersion": "2021-05-01",
"name": "[parameters('vnetname')]",
"location": "[parameters('location')]",
"properties": {
"addressSpace": {
"addressPrefixes": [
"[parameters('vnetaddressspace')]"
]
},
"subnets": [
{
"name": "[parameters('subnetname')]",
"properties": {
"addressPrefix": "[parameters('vnetsubnetprefix')]",
"natGateway": {
"id": "[resourceId('Microsoft.Network/natGateways', parameters('natgatewayname'))]"
},
"privateEndpointNetworkPolicies": "Enabled",
"privateLinkServiceNetworkPolicies": "Enabled"
}
}
],
"enableDdosProtection": false,
"enableVmProtection": false
},
"dependsOn": [
"[resourceId('Microsoft.Network/natGateways', parameters('natgatewayname'))]"
]
},
{
"type": "Microsoft.Network/natGateways",
"apiVersion": "2021-05-01",
"name": "[parameters('natgatewayname')]",
"location": "[parameters('location')]",
"sku": {
"name": "Standard"
},
"properties": {
"idleTimeoutInMinutes": 4,
"publicIpAddresses": [
{
"id": "[resourceId('Microsoft.Network/publicIPAddresses', parameters('publicipname'))]"
}
]
},
"dependsOn": [
"[resourceId('Microsoft.Network/publicIPAddresses', parameters('publicipname'))]"
]
},
{
"type": "Microsoft.Network/virtualNetworks/subnets",
"apiVersion": "2021-05-01",
"name": "[format('{0}/{1}', parameters('vnetname'), 'subnet-1')]",
"properties": {
"addressPrefix": "[parameters('vnetsubnetprefix')]",
"natGateway": {
"id": "[resourceId('Microsoft.Network/natGateways', parameters('natgatewayname'))]"
},
"privateEndpointNetworkPolicies": "Enabled",
"privateLinkServiceNetworkPolicies": "Enabled"
},
"dependsOn": [
"[resourceId('Microsoft.Network/natGateways', parameters('natgatewayname'))]",
"[resourceId('Microsoft.Network/virtualNetworks', parameters('vnetname'))]"
]
},
{
"type": "Microsoft.Network/networkInterfaces",
"apiVersion": "2021-05-01",
"name": "[parameters('networkinterfacename')]",
"location": "[parameters('location')]",
"properties": {
"ipConfigurations": [
{
"name": "ipconfig-1",
"properties": {
"privateIPAddress": "10.0.0.4",
"privateIPAllocationMethod": "Dynamic",
"subnet": {
"id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('vnetname'), 'subnet-1')]"
},
"primary": true,
"privateIPAddressVersion": "IPv4"
}
}
],
"enableAcceleratedNetworking": false,
"enableIPForwarding": false,
"networkSecurityGroup": {
"id": "[resourceId('Microsoft.Network/networkSecurityGroups', parameters('nsgname'))]"
}
},
"dependsOn": [
"[resourceId('Microsoft.Network/networkSecurityGroups', parameters('nsgname'))]",
"[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('vnetname'), 'subnet-1')]"
]
}
],
"outputs": {
"location": {
"type": "string",
"value": "[parameters('location')]"
},
"name": {
"type": "string",
"value": "[parameters('natgatewayname')]"
},
"resourceGroupName": {
"type": "string",
"value": "[resourceGroup().name]"
},
"resourceId": {
"type": "string",
"value": "[resourceId('Microsoft.Network/natGateways', parameters('natgatewayname'))]"
}
}
}
Nel modello sono definite nove risorse di Azure:
Implementare il modello
Portale
Esaminare le risorse distribuite
Accedi al portale di Azure.
Selezionare Gruppi di risorse nel riquadro sinistro.
Selezionare il gruppo di risorse creato nella sezione precedente. Il nome del gruppo di risorse predefinito è myResourceGroupNAT
Verificare che le risorse seguenti siano state create nel gruppo di risorse:
PowerShell
$location = Read-Host -Prompt "Enter the location (i.e. westcentralus)"
$templateUri = "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.network/nat-gateway-1-vm/azuredeploy.json"
$resourceGroupName = "myResourceGroupNAT"
New-AzResourceGroup -Name $resourceGroupName -Location $location
New-AzResourceGroupDeployment -ResourceGroupName $resourceGroupName -TemplateUri $templateUri
Interfaccia CLI di Azure
read -p "Enter the location (i.e. westcentralus): " location
resourceGroupName="myResourceGroupNAT"
templateUri="https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.network/nat-gateway-1-vm/azuredeploy.json"
az group create \
--name $resourceGroupName \
--location $location
az deployment group create \
--resource-group $resourceGroupName \
--template-uri $templateUri
Rivedere il file Bicep
Il file Bicep usato in questo avvio rapido proviene dai modelli di avvio rapido di Azure.
Questo file Bicep è configurato per la creazione di:
Rete virtuale
Risorsa gateway NAT
Macchina virtuale Ubuntu
La macchina virtuale Ubuntu viene distribuita in una subnet associata alla risorsa gateway NAT.
@description('Name of the virtual machine')
param vmname string = 'vm-1'
@description('Size of the virtual machine')
param vmsize string = 'Standard_D2s_v3'
@description('Name of the virtual network')
param vnetname string = 'vnet-1'
@description('Name of the subnet for virtual network')
param subnetname string = 'subnet-1'
@description('Address space for virtual network')
param vnetaddressspace string = '10.0.0.0/16'
@description('Subnet prefix for virtual network')
param vnetsubnetprefix string = '10.0.0.0/24'
@description('Name of the NAT gateway')
param natgatewayname string = 'nat-gateway'
@description('Name of the virtual machine nic')
param networkinterfacename string = 'nic-1'
@description('Name of the NAT gateway public IP')
param publicipname string = 'public-ip-nat'
@description('Name of the virtual machine NSG')
param nsgname string = 'nsg-1'
@description('Administrator username for virtual machine')
param adminusername string
@description('Administrator password for virtual machine')
@secure()
param adminpassword string
@description('Name of resource group')
param location string = resourceGroup().location
resource nsg 'Microsoft.Network/networkSecurityGroups@2021-05-01' = {
name: nsgname
location: location
properties: {
securityRules: [
{
name: 'SSH'
properties: {
protocol: 'Tcp'
sourcePortRange: '*'
destinationPortRange: '22'
sourceAddressPrefix: '*'
destinationAddressPrefix: '*'
access: 'Allow'
priority: 300
direction: 'Inbound'
}
}
]
}
}
resource publicip 'Microsoft.Network/publicIPAddresses@2021-05-01' = {
name: publicipname
location: location
sku: {
name: 'Standard'
}
properties: {
publicIPAddressVersion: 'IPv4'
publicIPAllocationMethod: 'Static'
idleTimeoutInMinutes: 4
}
}
resource vm 'Microsoft.Compute/virtualMachines@2021-11-01' = {
name: vmname
location: location
properties: {
hardwareProfile: {
vmSize: vmsize
}
storageProfile: {
imageReference: {
publisher: 'Canonical'
offer: '0001-com-ubuntu-server-jammy'
sku: '22_04-lts-gen2'
version: 'latest'
}
osDisk: {
osType: 'Linux'
name: '${vmname}_disk1'
createOption: 'FromImage'
caching: 'ReadWrite'
managedDisk: {
storageAccountType: 'Premium_LRS'
}
diskSizeGB: 30
}
}
osProfile: {
computerName: vmname
adminUsername: adminusername
adminPassword: adminpassword
linuxConfiguration: {
disablePasswordAuthentication: false
provisionVMAgent: true
}
allowExtensionOperations: true
}
networkProfile: {
networkInterfaces: [
{
id: networkinterface.id
}
]
}
}
}
resource vnet 'Microsoft.Network/virtualNetworks@2021-05-01' = {
name: vnetname
location: location
properties: {
addressSpace: {
addressPrefixes: [
vnetaddressspace
]
}
subnets: [
{
name: subnetname
properties: {
addressPrefix: vnetsubnetprefix
natGateway: {
id: natgateway.id
}
privateEndpointNetworkPolicies: 'Enabled'
privateLinkServiceNetworkPolicies: 'Enabled'
}
}
]
enableDdosProtection: false
enableVmProtection: false
}
}
resource natgateway 'Microsoft.Network/natGateways@2021-05-01' = {
name: natgatewayname
location: location
sku: {
name: 'Standard'
}
properties: {
idleTimeoutInMinutes: 4
publicIpAddresses: [
{
id: publicip.id
}
]
}
}
resource subnet 'Microsoft.Network/virtualNetworks/subnets@2021-05-01' = {
parent: vnet
name: 'subnet-1'
properties: {
addressPrefix: vnetsubnetprefix
natGateway: {
id: natgateway.id
}
privateEndpointNetworkPolicies: 'Enabled'
privateLinkServiceNetworkPolicies: 'Enabled'
}
}
resource networkinterface 'Microsoft.Network/networkInterfaces@2021-05-01' = {
name: networkinterfacename
location: location
properties: {
ipConfigurations: [
{
name: 'ipconfig-1'
properties: {
privateIPAddress: '10.0.0.4'
privateIPAllocationMethod: 'Dynamic'
subnet: {
id: subnet.id
}
primary: true
privateIPAddressVersion: 'IPv4'
}
}
]
enableAcceleratedNetworking: false
enableIPForwarding: false
networkSecurityGroup: {
id: nsg.id
}
}
}
output location string = location
output name string = natgateway.name
output resourceGroupName string = resourceGroup().name
output resourceId string = natgateway.id
Nel file Bicep sono definite nove risorse di Azure:
Implementazione del file Bicep
Salvare il file Bicep come main.bicep nel computer locale.
Distribuisci il file Bicep usando l'interfaccia della riga di comando di Azure o Azure PowerShell.
Interfaccia CLI di Azure
az group create --name exampleRG --location eastus
az deployment group create --resource-group exampleRG --template-file main.bicep --parameters adminusername=<admin-name>
PowerShell
New-AzResourceGroup -Name exampleRG -Location eastus
New-AzResourceGroupDeployment -ResourceGroupName exampleRG -TemplateFile ./main.bicep -adminusername "<admin-name>"
Annotazioni
Sostituire <admin-name> con il nome utente dell'amministratore per la macchina virtuale. Verrà richiesto anche di immettere adminpassword.
Al termine della distribuzione, verrà visualizzato un messaggio che indica che la distribuzione è riuscita.
Esaminare le risorse distribuite
Usare il portale di Azure, l'interfaccia della riga di comando di Azure o Azure PowerShell per elencare le risorse distribuite nel gruppo di risorse.
Interfaccia CLI di Azure
az resource list --resource-group exampleRG
PowerShell
Get-AzResource -ResourceGroupName exampleRG
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.