En este inicio rápido, aprenderá a crear una puerta de enlace NAT mediante Azure Portal, la CLI de Azure, PowerShell, Bicep, la plantilla de ARM y Terraform. El servicio NAT Gateway proporciona conectividad de salida para máquinas virtuales en Azure.
Crear una puerta de enlace NAT
Antes de implementar el recurso de puerta de enlace NAT y los demás recursos, se requiere un grupo de recursos para contener los recursos implementados. En los siguientes pasos, crearás un grupo de recursos, un recurso de puerta de enlace NAT y una dirección IP pública. Puede usar uno o varios recursos de dirección IP pública, prefijos de dirección IP pública, o ambos.
Para obtener información sobre los prefijos de IP pública y una puerta de enlace NAT, consulte Administración de la puerta de enlace NAT.
En el cuadro de búsqueda que aparece en la parte superior del portal, escriba Puerta de enlace NAT. Seleccione Puertas de enlace NAT en los resultados de búsqueda.
Seleccione + Create.
En Crear puerta de enlace de traducción de direcciones de red (NAT) , escriba o seleccione esta información en la pestaña Información básica:
Configuración |
Valor |
Detalles del proyecto |
|
Suscripción |
Seleccione su suscripción a Azure. |
Grupo de recursos |
Seleccione Crear nuevo. Introducir test-rg. Seleccione OK. |
Detalles de la instancia |
|
Nombre de NAT Gateway |
Introducir nat-gateway |
Región |
Seleccione Este de EE. UU. 2. |
Zona de disponibilidad |
Seleccione Ninguna zona. |
Tiempo de espera de inactividad de TCP (minutos) |
Deje el valor predeterminado 4. |
Para obtener información sobre las zonas de disponibilidad y la puerta de enlace NAT, consulte Zonas de disponibilidad y puerta de enlace NAT.
Seleccione la pestaña Dirección IP de salida o elija el botón Next: Outbound IP (Siguiente: Dirección IP de salida) situado en la parte inferior de la página.
En la pestaña Dirección IP de salida, escriba o seleccione la siguiente información:
Configuración |
Valor |
Direcciones IP públicas |
Seleccione Crear una dirección IP pública. En Nombre, introducir public-ip-nat. Seleccione OK. |
Seleccione la pestaña Revisar y crear o el botón azul Revisar y crear en la parte inferior de la página.
Selecciona Crear.
Creación de una red virtual y un host bastión
El procedimiento siguiente crea una red virtual con una subred de recursos, una subred de Azure Bastion y un host de Azure Bastion.
En el portal, busque y seleccione Redes virtuales.
En la página Redes virtuales, seleccione y Crear.
En la pestaña Datos básicos de Crear una red virtual, introduce o selecciona la siguiente información:
Configuración |
Importancia |
Detalles del proyecto |
|
Suscripción |
Seleccione su suscripción. |
Grupo de recursos |
Seleccione test-rg. |
Detalles de la instancia |
|
Nombre |
Escriba vnet-1. |
Región |
Seleccione (EE. UU.) Este de EE. UU. 2. |
Seleccione Siguiente para ir a la pestaña Seguridad.
Seleccione Habilitar Azure Bastion en la sección Azure Bastion de la pestaña Seguridad.
Azure Bastion usa el explorador para conectarse a las máquinas virtuales de la red virtual a través del shell seguro (SSH) o el protocolo de escritorio remoto (RDP) mediante sus direcciones IP privadas. Las máquinas virtuales no necesitan direcciones IP públicas, software cliente ni configuración especial. Para más información sobre Azure Bastion, consulte Azure Bastion
Nota:
Las tarifas por hora se aplican desde el momento en que se despliega Bastion, independientemente del uso de datos salientes. Para más información, consulte Precios y SKU. Si va a implementar Bastion como parte de un tutorial o prueba, se recomienda eliminar este recurso una vez que haya terminado de usarlo.
Escriba o seleccione la información siguiente en Azure Bastion:
Configuración |
Importancia |
Nombre de host de Azure Bastion |
Escriba bastión. |
Dirección IP pública de Azure Bastion |
Seleccione Crear una dirección IP pública. Escriba public-ip-bastion en Nombre. Seleccione OK. |
Seleccione Siguiente para continuar a la pestaña Direcciones IP.
En el cuadro espacio de direcciones de Subredes, seleccione la subred predeterminada.
En Editar subred, escriba o seleccione la información siguiente:
Configuración |
Importancia |
Propósito de la subred |
Deje el valor predeterminado. |
Nombre |
Escriba subnet-1. |
IPv4 |
|
Intervalo de direcciones IPv4 |
Deje el valor predeterminado de 10.0.0.0/16. |
Dirección inicial |
Deje el valor predeterminado de 10.0.0.0. |
Tamaño |
Deje el valor predeterminado de /24(256 direcciones). |
Seguridad |
|
Puerta de enlace NAT |
Seleccione nat-gateway. |
Haga clic en Guardar.
Seleccione Revisar y crear en la parte inferior de la pantalla y, cuando se supere la validación, seleccione Crear.
Creación de una máquina virtual de prueba
El procedimiento siguiente crea una máquina virtual (VM) de prueba denominada vm-1 en la red virtual.
En el portal, busque y seleccione Máquinas virtuales.
En Máquinas virtuales, seleccione + Crear y, después, Máquina virtual de Azure.
En la pestaña Datos básicos de Crear una máquina virtual, escriba o seleccione la siguiente información:
Configuración |
Importancia |
Detalles del proyecto |
|
Suscripción |
Seleccione su suscripción. |
Grupo de recursos |
Seleccione test-rg. |
Detalles de la instancia |
|
Nombre de la máquina virtual |
Escriba vm-1. |
Región |
Seleccione Este de EE. UU. 2. |
Opciones de disponibilidad |
Seleccione No se requiere redundancia de la infraestructura. |
Tipo de seguridad |
Deje el valor predeterminado Estándar. |
Imagen |
Seleccione Ubuntu Server 22.04 LTS: x64 Gen2. |
Arquitectura VM |
Deje el valor predeterminado, x64. |
Tamaño |
Seleccione un tamaño. |
Cuenta de administrador |
|
Tipo de autenticación |
Seleccione Contraseña. |
Nombre de usuario |
escriba usuarioazure. |
Contraseña |
Escriba una contraseña. |
Confirmar contraseña |
Reescriba la contraseña. |
Reglas de puerto de entrada |
|
Puertos de entrada públicos |
Seleccione Ninguno. |
Seleccione la pestaña Redes en la parte superior de la página.
En la pestaña Redes, escriba o seleccione la siguiente información:
Configuración |
Importancia |
Interfaz de red |
|
Red de área virtual |
Seleccione vnet-1. |
Subred |
Seleccione subnet-1 (10.0.0.0/24). |
Dirección IP pública |
Seleccione Ninguno. |
Grupo de seguridad de red de NIC |
Seleccione Advanced (Avanzadas). |
Configuración del grupo de seguridad de red |
Seleccione Crear nuevo. Escriba nsg-1 como nombre. Deje el resto de los valores predeterminados y seleccione Aceptar. |
Deje el resto de las opciones en sus valores predeterminados y luego seleccione Revisar + crear.
Revise la configuración y seleccione Crear.
Nota:
Las máquinas virtuales de una red virtual con un host bastión no necesitarán direcciones IP públicas. Bastion proporcionará la dirección IP pública y las máquinas virtuales usarán direcciones IP privadas para comunicarse dentro de la red. Es posible quitar las direcciones IP públicas de cualquier máquina virtual en redes virtuales hospedadas por Bastion. Para obtener más información, consulte Desasociar una dirección IP pública de una máquina virtual de Azure.
Nota:
Azure proporciona una dirección IP de acceso de salida predeterminada para las máquinas virtuales que no tienen asignada una dirección IP pública o están en el grupo back-end de un equilibrador de carga de Azure básico interno. El mecanismo de dirección IP de acceso de salida predeterminado proporciona una dirección IP de salida que no se puede configurar.
La dirección IP de acceso de salida predeterminada está deshabilitada cuando se produce uno de los siguientes eventos:
- Se asigna una dirección IP pública a la máquina virtual.
- La máquina virtual se coloca en el grupo de back-end de un balanceador de carga estándar, con o sin reglas de salida.
- Se asigna un recurso de Azure NAT Gateway a la subred de la máquina virtual.
Las máquinas virtuales creadas mediante conjuntos de escalado de máquinas virtuales en modo de orquestación flexible no tienen acceso de salida predeterminado.
Para más información sobre las conexiones de salida en Azure, vea Acceso de salida predeterminado en Azure y Uso de traducción de direcciones de red (SNAT) de origen para conexiones de salida.
Creación de un grupo de recursos
Cree un grupo de recursos con New-AzResourceGroup. Un grupo de recursos de Azure es un contenedor lógico en el que se implementan y se administran los recursos de Azure.
En el ejemplo siguiente se crea un grupo de recursos denominado test-rg en la ubicación eastus2:
$rsg = @{
Name = 'test-rg'
Location = 'eastus2'
}
New-AzResourceGroup @rsg
Creación de la puerta de enlace de NAT
En esta sección, crea la puerta de enlace de NAT y los recursos de soporte.
## 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
El host bastión puede tardar varios minutos en implementarse. Espere a que el host bastión se implemente antes de pasar a la sección siguiente.
Crear máquina virtual
En esta sección, creará una máquina virtual para probar la puerta de enlace NAT y comprobará la dirección IP pública de la conexión saliente.
# 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
Espere a que se complete la creación de la máquina virtual antes de pasar a la siguiente sección.
Creación de un grupo de recursos
Cree un grupo de recursos con az group create. Un grupo de recursos de Azure es un contenedor lógico en el que se implementan y se administran los recursos de Azure.
az group create \
--name test-rg \
--location eastus2
Creación de la puerta de enlace de NAT
En esta sección, crea la puerta de enlace de NAT y los recursos de soporte.
Creación de una dirección IP pública
Para acceder a Internet, necesita una o varias direcciones IP públicas para la puerta de enlace NAT. Use az network public-ip create para crear un recurso de dirección IP pública.
az network public-ip create \
--resource-group test-rg \
--name public-ip-nat \
--sku Standard \
--allocation-method Static \
--location eastus2 \
--zone 1 2 3
Creación de un recurso de puerta de enlace de NAT
Cree un recurso de puerta de enlace NAT mediante az network nat gateway create. La puerta de enlace NAT usa la dirección IP pública creada en el paso anterior. El tiempo de inactividad se establece en 10 minutos.
az network nat gateway create \
--resource-group test-rg \
--name nat-gateway \
--public-ip-addresses public-ip-nat \
--idle-timeout 10
Creación de una red virtual y una subred
Cree una red virtual denominada vnet-1 con una subred denominada subnet-1 mediante az network vnet create. El espacio de direcciones IP de la red virtual es 10.0.0.0/16. La subred en la red virtual es 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
Creación de una subred de Azure Bastion
Cree una subred de Azure Bastion denominada AzureBastionSubnet mediante 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
Asignar la puerta de enlace NAT a la subred
Asocie la puerta de enlace NAT a la subred mediante 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
Creación de una dirección IP pública para el host de Bastion
Cree una dirección IP pública para el host de Bastion mediante 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
Creación de un host de Bastion
Cree el host de Azure Bastion mediante 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
El host de Bastion puede tardar varios minutos en implementarse. Espere a que el servidor Bastion se implemente antes de proceder a la sección siguiente.
Crear máquina virtual
Cree una máquina virtual denominada vm-1 para probar la puerta de enlace NAT y comprobar la dirección IP pública de la conexión saliente. Use 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
Espere a que se complete la creación de la máquina virtual antes de pasar a la siguiente sección.
Una plantilla de Azure Resource Manager es un archivo de notación de objetos JavaScript (JSON) que define tanto la infraestructura como la configuración de un proyecto. La plantilla usa sintaxis declarativa. Describes tu implementación deseada sin escribir la secuencia de comandos de programación para crearla.
Si su entorno cumple los requisitos previos y está familiarizado con el uso de plantillas de ARM, seleccione el botón Implementar en Azure. La plantilla se abre en Azure Portal.
Revisión de la plantilla
La plantilla usada en este inicio rápido forma parte de las plantillas de inicio rápido de Azure.
Esta plantilla está configurada para crear lo siguiente:
La máquina virtual Ubuntu se implementa en una subred asociada al recurso de puerta de enlace 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'))]"
}
}
}
En la plantilla se definen nueve recursos de Azure:
Implementación de la plantilla
Portal
Revisión de los recursos implementados
Inicie sesión en Azure Portal.
Seleccione Grupos de recursos en el panel izquierdo.
Seleccione el grupo de recursos que creó en la sección anterior. El nombre predeterminado del grupo de recursos es myResourceGroupNAT.
Compruebe que los recursos siguientes se han creado en el grupo de recursos:

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
CLI de 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
Revisión del archivo de Bicep
El archivo Bicep utilizado en este inicio rápido proviene de las Plantillas de Inicio Rápido de Azure.
Este archivo Bicep está configurado para crear los siguientes elementos:
La máquina virtual de Ubuntu se implementa en una subred que está asociada al recurso de puerta de enlace 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
En el archivo Bicep se definen recursos de Nine Azure:
Desplegar el archivo Bicep
Guarde el archivo de Bicep como main.bicep en el equipo local.
Implemente el archivo de Bicep mediante la CLI de Azure o Azure PowerShell.
CLI de 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>"
Nota:
Reemplace <admin-name> por el nombre de usuario de administrador de la máquina virtual. También se le pedirá que escriba adminpassword.
Una vez finalizada la implementación, debería mostrarse un mensaje indicando que la implementación se realizó correctamente.
Revisión de los recursos implementados
Use los Azure Portal, CLI de Azure o Azure PowerShell para enumerar los recursos implementados en el grupo de recursos.
CLI de Azure
az resource list --resource-group exampleRG
PowerShell
Get-AzResource -ResourceGroupName exampleRG
En esta sección, probarás la puerta de enlace NAT. Primero descubrirás la IP pública de la puerta de enlace NAT. Luego, te conectarás a la máquina virtual de prueba y verificarás la conexión saliente a través de la puerta de enlace NAT.