Neste início rápido, saiba como criar um gateway NAT usando o portal do Azure, a CLI do Azure, o PowerShell, o Bicep, o modelo ARM e o Terraform. O serviço Gateway NAT fornece conectividade de saída escalável para máquinas virtuais no Azure.
Criar um gateway NAT
Antes de implantar o recurso de gateway NAT e os outros recursos, um grupo de recursos é necessário para conter os recursos implantados. Nas etapas a seguir, você cria um grupo de recursos, um recurso de gateway NAT e um endereço IP público. Você pode usar um ou mais recursos de endereço IP público, prefixos IP públicos ou ambos.
Para obter informações sobre prefixos IP públicos e um gateway NAT, consulte Gerir gateway NAT.
Na caixa de pesquisa na parte superior do portal, digite NAT gateway. Selecione NAT Gateways nos resultados da pesquisa.
Selecione + Criar.
Em Criar gateway NAT (conversão de endereços de rede), insira ou selecione essas informações na guia Noções básicas :
Configuração |
Valor |
Detalhes do Projeto |
|
Subscrição |
Selecione sua assinatura do Azure. |
Grupo de Recursos |
Selecione Criar novo.
Digite test-rg.
Selecione OK. |
Detalhes da instância |
|
Nome do gateway NAT |
Aceder ao nat-gateway |
Região |
Selecione Leste dos EUA 2 |
Zona de Disponibilidade |
Selecione Sem zona. |
Tempo limite de inatividade TCP (minutos) |
Deixe o padrão de 4. |
Para obter informações sobre zonas de disponibilidade e gateway NAT, consulte Gateway NAT e zonas de disponibilidade.
Selecione o separador IP de Saída ou clique no botão Seguinte: IP de Saída na parte inferior da página.
Na guia IP de saída, insira ou selecione as seguintes informações:
Configuração |
Valor |
Endereços IP públicos |
Selecione Criar um novo endereço IP público.
Em Nome, insira public-ip-nat.
Selecione OK. |
Selecione a aba Rever + criar ou selecione o botão azul Rever + criar na parte inferior da página.
Selecione Criar.
Criar uma rede virtual e um host bastion
O procedimento a seguir cria uma rede virtual com uma sub-rede de recursos, uma sub-rede do Azure Bastion e um host do Azure Bastion.
No portal, procure e selecione Redes virtuais.
Na página Redes virtuais , selecione + Criar.
Na guia Noções básicas de Criar rede virtual, insira ou selecione as seguintes informações:
Configurações |
Valor |
Detalhes do projeto |
|
Subscrição |
Selecione a sua subscrição. |
Grupo de recursos |
Selecione test-rg. |
Detalhes da instância |
|
Nome |
Insira vnet-1. |
Região |
Selecione (EUA) Leste dos EUA 2. |
Selecione Avançar para prosseguir para a guia Segurança .
Selecione Habilitar Bastião do Azure na seção Bastião do Azure da guia Segurança .
O Azure Bastion utiliza o seu navegador para se conectar a máquinas virtuais na sua rede virtual, através de secure shell (SSH) ou do protocolo de ambiente de trabalho remoto (RDP), utilizando os seus endereços IP privados. As VMs não precisam de endereços IP públicos, software cliente ou configuração especial. Para obter mais informações sobre o Azure Bastion, consulte Azure Bastion
Observação
A faturação horária inicia-se no momento em que o Bastion é implantado, independentemente do uso de dados enviados. Para obter mais informações, consulte Preços e SKUs. Se estiver a implementar o Bastion como parte de um tutorial ou teste, recomendamos que elimine este recurso após terminar de o utilizar.
Insira ou selecione as seguintes informações no Azure Bastion:
Configurações |
Valor |
Nome do host do Azure Bastion |
Entre bastião. |
Endereço IP público do Azure Bastion |
Selecione Criar um endereço IP público.
Digite public-ip-bastion em Name.
Selecione OK. |
Selecione Avançar para ir para o separador Endereços IP.
Na caixa de espaço de endereço em Sub-redes, selecione a sub-rede padrão .
Em Editar sub-rede, insira ou selecione as seguintes informações:
Configurações |
Valor |
Finalidade da sub-rede |
Deixe o padrão Default. |
Nome |
Introduza subnet-1. |
IPv4 |
|
Intervalo de endereços IPv4 |
Deixe o padrão de 10.0.0.0/16. |
Endereço inicial |
Deixe o padrão de 10.0.0.0. |
Tamanho |
Deixe o padrão de /24(256 endereços). |
Segurança |
|
Porta de entrada NAT |
Selecione nat-gateway. |
Selecione Guardar.
Selecione Rever + criar na parte inferior do ecrã e, quando a validação for aprovada, selecione Criar.
Criar máquina virtual de teste
O procedimento a seguir cria uma máquina virtual (VM) de teste chamada vm-1 na rede virtual.
No portal, procure e selecione Máquinas virtuais.
Em Máquinas virtuais, selecione + Criar e, em seguida , Máquina virtual do Azure.
Na guia Noções básicas de Criar uma máquina virtual, insira ou selecione as seguintes informações:
Configurações |
Valor |
Detalhes do projeto |
|
Subscrição |
Selecione a sua subscrição. |
Grupo de recursos |
Selecione test-rg. |
Detalhes da instância |
|
Nome da máquina virtual |
Introduza vm-1. |
Região |
Selecione Leste dos EUA 2. |
Opções de disponibilidade |
Selecione Sem necessidade de redundância de infraestrutura. |
Tipo de segurança |
Deixe o valor predefinido de Padrão. |
Imagem |
Selecione Ubuntu Server 22.04 LTS - x64 Gen2. |
Arquitetura VM |
Deixe o padrão de x64. |
Tamanho |
Selecione um tamanho. |
Conta de administrador |
|
Tipo de autenticação |
Selecione Senha. |
Nome de utilizador |
Insira azureuser. |
Palavra-passe |
Introduza uma palavra-passe. |
Confirme a palavra-passe |
Reintroduza a palavra-passe. |
Regras de porta de entrada |
|
Portas de entrada públicas |
Selecione Nenhum. |
Selecione o separador Redes na parte superior da página.
Insira ou selecione as seguintes informações no separador Rede:
Configurações |
Valor |
Interface de Rede |
|
Rede virtual |
Selecione vnet-1. |
sub-rede |
Seleccione subnet-1 (10.0.0.0/24). |
IP público |
Selecione Nenhum. |
Grupo de segurança de rede NIC |
Selecione Avançado. |
Configurar grupo de segurança de rede |
Selecione Criar novo.
Digite nsg-1 para o nome.
Deixe o restante nos padrões e selecione OK. |
Deixe o restante das configurações nos padrões e selecione Revisar + criar.
Revise as configurações e selecione Criar.
Observação
As máquinas virtuais em uma rede virtual com um host bastion não precisam de endereços IP públicos. Bastion fornece o IP público, e as VMs usam IPs privados para se comunicar dentro da rede. Você pode remover os IPs públicos de qualquer VM em redes virtuais hospedadas por bastion. Para obter mais informações, consulte Dissociar um endereço IP público de uma VM do Azure.
Observação
O Azure fornece um IP de acesso de saída padrão para VMs que não recebem um endereço IP público ou estão no pool de back-end de um balanceador de carga básico interno do Azure. O mecanismo IP de acesso de saída padrão fornece um endereço IP de saída que não é configurável.
O IP de acesso de saída padrão é desativado quando um dos seguintes eventos acontece:
- Um endereço IP público é atribuído à VM.
- A VM é colocada no pool de back-end de um balanceador de carga padrão, com ou sem regras de saída.
- Um recurso Azure NAT Gateway é atribuído à subrede da VM.
As VMs que você cria usando conjuntos de dimensionamento de máquina virtual no modo de orquestração flexível não têm acesso de saída padrão.
Para obter mais informações sobre conexões de saída no Azure, consulte Acesso de saída padrão no Azure e Usar SNAT (Conversão de Endereço de Rede de Origem) para conexões de saída.
Criar um grupo de recursos
Crie um grupo de recursos com New-AzResourceGroup. Um grupo de recursos do Azure é um contêiner lógico no qual recursos do Azure são implantados e geridos.
O exemplo a seguir cria um grupo de recursos chamado test-rg no local eastus2:
$rsg = @{
Name = 'test-rg'
Location = 'eastus2'
}
New-AzResourceGroup @rsg
Criar o gateway NAT
Nesta seção, crie o gateway NAT e os recursos de suporte.
## 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
O host bastion pode levar vários minutos para ser implantado. Aguarde a implantação do bastion host antes de passar para a próxima seção.
Criar a máquina virtual
Nesta seção, você cria uma máquina virtual para testar o gateway NAT e verificar o endereço IP público da conexão de saída.
# 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
Aguarde a conclusão da criação da máquina virtual antes de passar para a próxima seção.
Criar um grupo de recursos
Crie um grupo de recursos com az group create. Um grupo de recursos do Azure é um contêiner lógico no qual recursos do Azure são implantados e geridos.
az group create \
--name test-rg \
--___location eastus2
Criar o gateway NAT
Nesta seção, crie o gateway NAT e os recursos de suporte.
Criar endereço IP público
Para acessar a Internet, você precisa de um ou mais endereços IP públicos para o gateway NAT. Use az network public-ip create para criar um recurso de endereço IP público.
az network public-ip create \
--resource-group test-rg \
--name public-ip-nat \
--sku Standard \
--allocation-method Static \
--___location eastus2 \
--zone 1 2 3
Criar recurso de gateway NAT
Crie um recurso de gateway NAT usando az network nat gateway create. O gateway NAT usa o endereço IP público criado na etapa anterior. O tempo limite de inatividade é definido como 10 minutos.
az network nat gateway create \
--resource-group test-rg \
--name nat-gateway \
--public-ip-addresses public-ip-nat \
--idle-timeout 10
Criar rede virtual e sub-rede
Crie uma rede virtual chamada vnet-1 com uma sub-rede chamada subnet-1 usando az network vnet create. O espaço de endereço IP para a rede virtual é 10.0.0.0/16. A sub-rede dentro da rede virtual é 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
Criar sub-rede do Azure Bastion
Crie uma sub-rede do Azure Bastion chamada 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
Associar gateway NAT à sub-rede
Associe o gateway NAT à sub-rede usando o comando 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
Criar endereço IP público para o host Bastion
Crie um endereço IP público para o 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
Criar servidor Bastion
Crie o host do 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
O host Bastion pode levar vários minutos para ser implantado. Aguarde pela implantação do host Bastion antes de avançar para a próxima secção.
Criar a máquina virtual
Crie uma máquina virtual chamada vm-1 para testar o gateway NAT e verificar o endereço IP público da conexão de saída. 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
Aguarde a conclusão da criação da máquina virtual antes de passar para a próxima seção.
Um modelo do Azure Resource Manager é um arquivo JSON (JavaScript Object Notation) que define a infraestrutura e a configuração do seu projeto. O modelo usa sintaxe declarativa. Você descreve a implantação pretendida sem escrever a sequência de comandos de programação para criar a implantação.
Se o seu ambiente cumpre os pré-requisitos e se está familiarizado com a utilização de modelos ARM, selecione o botão Implementar no Azure. O modelo é aberto no portal do Azure.
Rever o modelo
O modelo utilizado neste início rápido pertence aos Modelos de Início Rápido do Azure.
Este modelo está configurado para criar um:
Rede virtual
Recurso de gateway NAT
Máquina virtual Ubuntu
A máquina virtual do Ubuntu é implantada em uma sub-rede associada ao recurso de 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.37.4.10188",
"templateHash": "15883485077174970612"
}
},
"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"
}
},
"bastionName": {
"type": "string",
"defaultValue": "bastion-host",
"metadata": {
"description": "Name of the Bastion host"
}
},
"nsgname": {
"type": "string",
"defaultValue": "nsg-1",
"metadata": {
"description": "Name of the virtual machine NSG"
}
},
"adminusername": {
"type": "string",
"metadata": {
"description": "Administrator username for virtual machine"
}
},
"authenticationType": {
"type": "string",
"defaultValue": "sshPublicKey",
"allowedValues": [
"sshPublicKey",
"password"
],
"metadata": {
"description": "Type of authentication to use on the Virtual Machine. SSH key is recommended."
}
},
"adminPasswordOrKey": {
"type": "securestring",
"metadata": {
"description": "SSH Key or password for the Virtual Machine. SSH key is recommended."
}
},
"___location": {
"type": "string",
"defaultValue": "[resourceGroup().___location]",
"metadata": {
"description": "Name of resource group"
}
}
},
"variables": {
"linuxConfiguration": {
"disablePasswordAuthentication": true,
"ssh": {
"publicKeys": [
{
"path": "[format('/home/{0}/.ssh/authorized_keys', parameters('adminusername'))]",
"keyData": "[parameters('adminPasswordOrKey')]"
}
]
}
}
},
"resources": [
{
"type": "Microsoft.Network/networkSecurityGroups",
"apiVersion": "2024-01-01",
"name": "[parameters('nsgname')]",
"___location": "[parameters('___location')]",
"properties": {}
},
{
"type": "Microsoft.Network/publicIPAddresses",
"apiVersion": "2024-01-01",
"name": "[parameters('publicipname')]",
"___location": "[parameters('___location')]",
"sku": {
"name": "StandardV2"
},
"properties": {
"publicIPAddressVersion": "IPv4",
"publicIPAllocationMethod": "Static",
"idleTimeoutInMinutes": 4
}
},
{
"type": "Microsoft.Compute/virtualMachines",
"apiVersion": "2023-09-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('adminPasswordOrKey')]",
"linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), null(), variables('linuxConfiguration'))]"
},
"networkProfile": {
"networkInterfaces": [
{
"id": "[resourceId('Microsoft.Network/networkInterfaces', parameters('networkinterfacename'))]"
}
]
}
},
"dependsOn": [
"[resourceId('Microsoft.Network/networkInterfaces', parameters('networkinterfacename'))]"
]
},
{
"type": "Microsoft.Network/virtualNetworks",
"apiVersion": "2024-01-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": "2024-01-01",
"name": "[parameters('natgatewayname')]",
"___location": "[parameters('___location')]",
"sku": {
"name": "StandardV2"
},
"properties": {
"idleTimeoutInMinutes": 4,
"publicIpAddresses": [
{
"id": "[resourceId('Microsoft.Network/publicIPAddresses', parameters('publicipname'))]"
}
]
},
"dependsOn": [
"[resourceId('Microsoft.Network/publicIPAddresses', parameters('publicipname'))]"
]
},
{
"type": "Microsoft.Network/virtualNetworks/subnets",
"apiVersion": "2024-01-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": "2024-01-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')]"
]
},
{
"type": "Microsoft.Network/bastionHosts",
"apiVersion": "2024-01-01",
"name": "[parameters('bastionName')]",
"___location": "[parameters('___location')]",
"sku": {
"name": "Developer"
},
"properties": {
"virtualNetwork": {
"id": "[resourceId('Microsoft.Network/virtualNetworks', parameters('vnetname'))]"
}
},
"dependsOn": [
"[resourceId('Microsoft.Network/virtualNetworks', parameters('vnetname'))]"
]
}
],
"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'))]"
}
}
}
Nove recursos do Azure são definidos no modelo:
Implementar o modelo
Portal
Analisar os recursos implementados
Inicie sessão no portal Azure.
Selecione Grupos de recursos no painel esquerdo.
Selecione o grupo de recursos que você criou na seção anterior. O nome padrão do grupo de recursos é myResourceGroupNAT
Verifique se os seguintes recursos foram criados no 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
Azure CLI (Interface de Linha de Comando da 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
Revise o arquivo Bicep
O arquivo Bicep utilizado neste início rápido é dos Modelos de Início Rápido do Azure.
Este arquivo Bicep está configurado para criar um:
Rede virtual
Recurso de gateway NAT
Máquina virtual Ubuntu
A VM do Ubuntu é implantada em uma sub-rede associada ao recurso de 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 Bastion host')
param bastionName string = 'bastion-host'
@description('Name of the virtual machine NSG')
param nsgname string = 'nsg-1'
@description('Administrator username for virtual machine')
param adminusername string
@description('Type of authentication to use on the Virtual Machine. SSH key is recommended.')
@allowed([
'sshPublicKey'
'password'
])
param authenticationType string = 'sshPublicKey'
@description('SSH Key or password for the Virtual Machine. SSH key is recommended.')
@secure()
param adminPasswordOrKey string
@description('Name of resource group')
param ___location string = resourceGroup().___location
var linuxConfiguration = {
disablePasswordAuthentication: true
ssh: {
publicKeys: [
{
path: '/home/${adminusername}/.ssh/authorized_keys'
keyData: adminPasswordOrKey
}
]
}
}
resource nsg 'Microsoft.Network/networkSecurityGroups@2024-01-01' = {
name: nsgname
___location: ___location
properties: {}
}
resource publicip 'Microsoft.Network/publicIPAddresses@2024-01-01' = {
name: publicipname
___location: ___location
sku: {
name: 'StandardV2'
}
properties: {
publicIPAddressVersion: 'IPv4'
publicIPAllocationMethod: 'Static'
idleTimeoutInMinutes: 4
}
}
resource vm 'Microsoft.Compute/virtualMachines@2023-09-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: adminPasswordOrKey
linuxConfiguration: ((authenticationType == 'password') ? null : linuxConfiguration)
}
networkProfile: {
networkInterfaces: [
{
id: networkinterface.id
}
]
}
}
}
resource vnet 'Microsoft.Network/virtualNetworks@2024-01-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@2024-01-01' = {
name: natgatewayname
___location: ___location
sku: {
name: 'StandardV2'
}
properties: {
idleTimeoutInMinutes: 4
publicIpAddresses: [
{
id: publicip.id
}
]
}
}
resource subnet 'Microsoft.Network/virtualNetworks/subnets@2024-01-01' = {
parent: vnet
name: 'subnet-1'
properties: {
addressPrefix: vnetsubnetprefix
natGateway: {
id: natgateway.id
}
privateEndpointNetworkPolicies: 'Enabled'
privateLinkServiceNetworkPolicies: 'Enabled'
}
}
resource networkinterface 'Microsoft.Network/networkInterfaces@2024-01-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
}
}
}
resource bastionHost 'Microsoft.Network/bastionHosts@2024-01-01' = {
name: bastionName
___location: ___location
sku: {
name: 'Developer'
}
properties: {
virtualNetwork: {
id: vnet.id
}
}
}
output ___location string = ___location
output name string = natgateway.name
output resourceGroupName string = resourceGroup().name
output resourceId string = natgateway.id
Nove recursos do Azure são definidos no arquivo Bicep:
Desdobrar o arquivo Bicep
Salve o arquivo Bicep como main.bicep em seu computador local.
Implante o arquivo Bicep usando o Azure CLI ou o Azure PowerShell.
Azure CLI (Interface de Linha de Comando da 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>"
Observação
Substitua <admin-name> pelo nome de usuário do administrador da máquina virtual. Você também será solicitado a inserir adminpassword.
Quando a implantação terminar, você verá uma mensagem indicando que a implantação foi bem-sucedida.
Analisar os recursos implementados
Utilize o portal do Azure, Azure CLI ou Azure PowerShell para listar os recursos implantados no grupo de recursos.
Azure CLI (Interface de Linha de Comando da Azure)
az resource list --resource-group exampleRG
PowerShell
Get-AzResource -ResourceGroupName exampleRG
Nesta seção, você testa o gateway NAT. Primeiro, você descobre o IP público do gateway NAT. Em seguida, você se conecta à máquina virtual de teste e verifica a conexão de saída por meio do IP público do gateway NAT.