Neste tutorial, você aprenderá a integrar um gateway da NAT ao Firewall do Azure em uma rede hub e spoke para conectividade e escalabilidade de saída aprimoradas.
O Firewall do Azure fornece 2.496 portas SNAT por endereço IP público configuradas de acordo com a instância do Conjunto de Dimensionamento de Máquinas Virtuais de back-end (mínimo de duas instâncias). Você pode associar até 250 endereços IP públicos ao Firewall do Azure. Dependendo dos requisitos de arquitetura e dos padrões de tráfego, você pode exigir mais portas SNAT do que o Firewall do Azure pode fornecer. Você também pode exigir o uso de menos IPs públicos, ao mesmo tempo em que exige mais portas SNAT. Um método melhor para conectividade de saída é usar o gateway da NAT. O gateway da NAT fornece 64.512 portas SNAT por endereço IP público e pode ser usado com até 16 endereços IP públicos.
O Gateway NAT pode ser integrado ao Firewall do Azure configurando diretamente o Gateway NAT na sub-rede do Firewall do Azure. Essa associação fornece um método mais escalonável de conectividade de saída. Para implantações de produção, é recomendada uma rede hub e spoke, em que o firewall é, por si só, a rede virtual. Os servidores de carga de trabalho são redes virtuais emparelhadas na mesma região que a rede virtual hub em que o firewall reside. Nessa configuração de arquitetura, o gateway da NAT pode fornecer conectividade de saída da rede virtual hub para todas as redes virtuais spoke emparelhadas.
Observação
No momento, o Gateway nat do Azure não tem suporte em arquiteturas de vWAN (rede de hub virtual) protegidas. Implante usando uma arquitetura de rede virtual do hub, conforme descrito neste tutorial. Para obter mais informações sobre as opções da arquitetura do Firewall do Azure, confira Quais são as opções de arquitetura do Gerenciador de Firewall do Azure?.
Neste tutorial, você aprenderá a:
- Criar uma rede virtual de hub e implantar um Firewall do Azure e o Azure Bastion durante a implantação
- Criar um gateway da NAT e associá-lo à sub-rede de firewall na rede virtual hub
- Criar uma rede virtual spoke
- Criar um emparelhamento de rede virtual
- Criar uma tabela de rotas para a rede virtual spoke
- Criar uma política de firewall para a rede virtual hub
- Criar uma máquina virtual para testar a conectividade de saída por meio do gateway da NAT
Pré-requisitos
Azure Cloud Shell
O Azure hospeda o Azure Cloud Shell, um ambiente de shell interativo que você pode usar por meio do navegador. Você pode usar o Bash ou o PowerShell com o Cloud Shell para trabalhar com os serviços do Azure. Você pode usar os comandos pré-instalados do Cloud Shell para executar o código neste artigo, sem precisar instalar nada em seu ambiente local.
Para iniciar o Azure Cloud Shell:
Opção |
Exemplo/Link |
Selecione Experimente no canto superior direito de um código ou bloco de comando. Selecionar Experimentar não copia automaticamente o código nem o comando para o Cloud Shell. |
|
Acesse https://shell.azure.com ou selecione o botão Iniciar o Cloud Shell para abri-lo no navegador. |
|
Selecione o botão Cloud Shell na barra de menus no canto superior direito do portal do Azure. |
|
Para usar o Azure Cloud Shell:
Inicie o Cloud Shell.
Selecione o botão Copiar em um bloco de código (ou bloco de comando) para copiar o código ou o comando.
Cole o código ou o comando na sessão do Cloud Shell selecionando Ctrl+Shift+V no Windows e Linux ou selecionando Cmd+Shift+V no macOS.
Pressione Enter para executar o código ou o comando.
Se você optar por instalar e usar o PowerShell localmente, este artigo exigirá o módulo do Azure PowerShell versão 1.0.0 ou posterior. Execute Get-Module -ListAvailable Az
para localizar a versão instalada. Se você precisa atualizar, consulte Instalar o módulo do Azure PowerShell. Se você estiver executando o PowerShell localmente, também precisará executar o Connect-AzAccount
para criar uma conexão com o Azure.
Se você ainda não tiver uma conta do Azure, crie uma conta gratuita antes de começar.
Utilize o ambiente Bash no Azure Cloud Shell. Para obter mais informações, confira Introdução ao Azure Cloud Shell.
Se preferir executar os comandos de referência da CLI localmente, instale a CLI do Azure. Se você estiver executando no Windows ou no macOS, considere executar a CLI do Azure em um contêiner do Docker. Para obter mais informações, confira Como executar a CLI do Azure em um contêiner do Docker.
Se você estiver usando uma instalação local, entre na CLI do Azure usando o comando az login . Para concluir o processo de autenticação, siga as etapas exibidas em seu terminal. Para obter outras opções de entrada, consulte Autenticar no Azure usando a CLI do Azure.
Quando solicitado, instale a extensão da CLI do Azure no primeiro uso. Para obter mais informações sobre extensões, confira Usar e gerenciar extensões com a CLI do Azure.
Execute o comando az version para localizar a versão e as bibliotecas dependentes que estão instaladas. Para atualizar para a versão mais recente, execute az upgrade.
- Este artigo exige a versão 2.0.28 ou posterior da CLI do Azure. Se estiver usando o Azure Cloud Shell, a versão mais recente já está instalada.
Criar a rede virtual hub
A rede virtual hub contém a sub-rede de firewall associada ao gateway da NAT e ao Firewall do Azure. Use o exemplo a seguir para criar a rede virtual hub.
Entre no portal do Azure.
Na caixa de pesquisa na parte superior do portal, insira Rede virtual. Selecione Redes virtuais nos resultados da pesquisa.
Selecione + Criar.
Na guia Noções básicas de Criar rede virtual, insira ou selecione as seguintes informações:
Configuração |
Valor |
Detalhes do projeto |
|
Subscrição |
Selecione sua assinatura. |
Grupo de recursos |
Selecione Criar novo.
Insira test-rg.
Selecione OK. |
Detalhes da instância |
|
Nome |
Insira vnet-hub. |
Região |
Selecione (EUA) Centro-Sul dos EUA. |
Selecione Avançar para prosseguir para a guia Segurança.
Selecione Habilitar Azure Bastion na seção Azure Bastion da guia Segurança.
O Azure Bastion usa seu navegador para se conectar a VMs em sua rede virtual por meio do secure shell (SSH) ou protocolo da área de trabalho remota (RDP) usando 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
Os preços por hora começam a partir do momento em que o Bastion é implantado, independentemente do uso de dados de saída. Para saber mais, confira Preços e SKUs. Se estiver implantando o Bastion como parte de um tutorial ou teste, recomendamos que você exclua esse recurso após terminar de usá-lo.
Insira ou selecione as informações a seguir em Azure Bastion.
Configuração |
Valor |
Nome do host do Azure Bastion |
Insira bastion. |
Endereço IP público do Azure Bastion |
Selecione Criar um endereço IP público.
Insira public-ip-bastion em Nome.
Selecione OK. |
Selecione Habilitar Firewall do Azure na seção Firewall do Azure da guia Segurança.
O Firewall do Azure é um serviço de segurança de rede gerenciado e baseado em nuvem que protege seus recursos da Rede Virtual do Azure. É um firewall como serviço totalmente com estado com alta disponibilidade interna e escalabilidade de nuvem irrestrita. Para obter mais informações sobre o Firewall do Azure, confira Firewall do Azure.
Insira ou selecione as informações a seguir em Firewall do Azure:
Configuração |
Valor |
Nome do Firewall do Azure |
Insira firewall. |
Camada |
Selecione Padrão. |
Política |
Selecione Criar novo.
Insira firewall-policy em Nome.
Selecione OK. |
Endereço IP público do Firewall do Azure |
Selecione Criar um endereço IP público.
Insira public-ip-firewall em Nome.
Selecione OK. |
Selecione Avançar para prosseguir para a guia Endereços de IP.
Selecione Examinar + criar.
Selecione Criar.
A implantação do host do bastion e do firewall leva alguns minutos. Quando a rede virtual for criada como parte da implantação, você poderá prosseguir para as próximas etapas.
Use New-AzResourceGroup para criar um grupo de recursos.
# Create resource group
$rgParams = @{
Name = 'test-rg'
Location = 'South Central US'
}
New-AzResourceGroup @rgParams
Use New-AzVirtualNetwork para criar a rede virtual do 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
Use Add-AzVirtualNetworkSubnetConfig para criar uma sub-rede para o Firewall do Azure e o 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
Use Set-AzVirtualNetwork para atualizar a rede virtual.
# Create the virtual network
$hubVnet | Set-AzVirtualNetwork
Use New-AzPublicIpAddress para criar um IP público para o 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
Utilize New-AzBastion para criar o 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
Use New-AzPublicIpAddress para criar um IP público para o Firewall do 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
Use New-AzFirewallPolicy para criar uma política de firewall.
# Create firewall policy
$firewallPolicyParams = @{
ResourceGroupName = 'test-rg'
Location = 'South Central US'
Name = 'firewall-policy'
}
$firewallPolicy = New-AzFirewallPolicy @firewallPolicyParams
Use o New-AzFirewall para criar o Firewall do 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
Use az group create para criar um grupo de recursos.
# Variables
RESOURCE_GROUP="test-rg"
LOCATION="southcentralus"
az group create \
--name $RESOURCE_GROUP \
--location $LOCATION
Use az network vnet create para criar a rede virtual do 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
Use az network vnet subnet create para criar uma sub-rede para o 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
Use az network vnet subnet create para criar uma sub-rede para o Firewall do 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
Use az network public-ip create para criar um IP público para o 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
Use az network bastion create para criar o 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
Use az network public-ip create para criar um IP público para o Firewall do 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
Use az network firewall policy create para criar uma política de firewall.
# Variables
RESOURCE_GROUP="test-rg"
FIREWALL_POLICY_NAME="firewall-policy"
az network firewall policy create \
--resource-group $RESOURCE_GROUP \
--name $FIREWALL_POLICY_NAME
Use az network firewall create para criar o Azure Firewall.
# 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
Criar o gateway da NAT
Todo o tráfego de saída da Internet atravessa o gateway da NAT para a Internet. Use o exemplo a seguir para criar um gateway da NAT para a rede hub e spoke e associá-lo ao AzureFirewallSubnet.
Na caixa de pesquisa na parte superior do portal, insira Gateway da NAT. Selecione Gateways da NAT nos resultados da pesquisa.
Selecione + Criar.
Na guia Informações básicas em Criar gateway da NAT (conversão de endereços de rede), insira ou selecione as seguintes informações:
Configuração |
Valor |
Detalhes do projeto |
|
Subscrição |
Selecione sua assinatura. |
Grupo de recursos |
Selecione test-rg. |
Detalhes da instância |
|
Nome do gateway da NAT |
Insira o nat-gateway. |
Região |
Selecione Centro-Sul dos EUA. |
Zona de disponibilidade |
Selecione uma Zona ou Sem zona. |
Tempo limite ocioso do TCP (minutos) |
Mantenha o padrão de 4. |
Para obter informações sobre zonas de disponibilidade, confira Gateway da NAT e zonas de disponibilidade.
Selecione Avançar: IP de saída.
Em IP de Saída, em Endereços IP públicos, selecione Criar um endereço IP público.
Insira public-ip-nat em Nome.
Selecione OK.
Selecione Avançar: Sub-rede.
Em Rede Virtual selecione vnet-hub.
Selecione AzureFirewallSubnet em Nome da sub-rede.
Selecione Examinar + criar.
Selecione Criar.
Use New-AzPublicIpAddress para criar um IP público para o 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
Use New-AzNatGateway para criar o gateway da NAT.
$natGatewayParams = @{
ResourceGroupName = 'test-rg'
Name = 'nat-gateway'
PublicIpAddress = $publicIpNat
Sku = 'Standard'
IdleTimeoutInMinutes = 4
Location = 'South Central US'
}
$natGateway = New-AzNatGateway @natGatewayParams
Use Set-AzVirtualNetworkSubnetConfig para fazer a associação do gateway NAT com o 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
Use Set-AzVirtualNetwork para atualizar a rede virtual.
# Update the virtual network
$hubVnet | Set-AzVirtualNetwork
Use az network public-ip create para criar um endereço IP público para o gateway da 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
Use az network nat gateway create para criar o gateway da 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
Use az network vnet subnet update para associar o gateway da NAT com 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
Criar a rede virtual spoke
A rede virtual spoke contém a máquina virtual de teste usada para testar o roteamento do tráfego da Internet para o gateway da NAT. Use o exemplo a seguir para criar a rede spoke.
Na caixa de pesquisa na parte superior do portal, insira Rede virtual. Selecione Redes virtuais nos resultados da pesquisa.
Selecione + Criar.
Na guia Noções básicas de Criar rede virtual, insira ou selecione as seguintes informações:
Configuração |
Valor |
Detalhes do projeto |
|
Subscrição |
Selecione sua assinatura. |
Grupo de recursos |
Selecione test-rg. |
Detalhes da instância |
|
Nome |
Insira vnet-spoke. |
Região |
Selecione Centro-Sul dos EUA. |
Selecione Avançar para prosseguir para a guia Segurança.
Selecione Avançar para prosseguir para a guia Endereços de IP.
Na guia Endereços IP em Espaço de endereços IPv4, selecione Excluir espaço de endereços para excluir o espaço de endereços que é preenchido automaticamente.
Selecione + Adicionar espaço de endereços IPv4.
No Espaço do endereços IPv4 insira 10.1.0.0. Deixe o padrão de /16 (65.536 endereços) na seleção de máscara.
Selecione +Adicionar uma sub-rede.
Insira ou selecione as informações a seguir em Adicionar sub-rede:
Configuração |
Valor |
Finalidade da sub-rede |
Deixe o padrãoPadrão. |
Nome |
Insira subnet-private. |
IPv4 |
|
Intervalo de endereços IPv4 |
Mantenha o padrão de 10.1.0.0/16. |
Endereço inicial |
Deixe o padrão de 10.1.0.0. |
Tamanho |
Deixe o padrão /24(256 endereços). |
Selecione Adicionar.
Selecione Examinar + criar.
Selecione Criar.
Use New-AzVirtualNetwork para criar a rede virtual 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
Use Add-AzVirtualNetworkSubnetConfig para criar uma sub-rede para a rede virtual spoke.
# Create subnet in spoke virtual network
$subnetParams = @{
Name = 'subnet-private'
AddressPrefix = '10.1.0.0/24'
VirtualNetwork = $spokeVnet
}
Add-AzVirtualNetworkSubnetConfig @subnetParams
Use Set-AzVirtualNetwork para atualizar a rede virtual spoke.
# Create the virtual network
$spokeVnet | Set-AzVirtualNetwork
Use az network vnet create para criar a rede virtual 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
Criar emparelhamento entre o hub e o spoke
Um emparelhamento de rede virtual é usado para conectar o hub ao spoke e o spoke ao hub. Use o exemplo a seguir para criar um emparelhamento de rede bidirecional entre o hub e o spoke.
Na caixa de pesquisa na parte superior do portal, insira Rede virtual. Selecione Redes virtuais nos resultados da pesquisa.
Selecione vnet-hub.
Selecione Emparelhamentos em Configurações.
Selecione + Adicionar.
Insira ou selecione as seguintes informações em Adicionar emparelhamento:
Configuração |
Valor |
Resumo da rede virtual remota |
|
Nome do link de emparelhamento |
Insira vnet-spoke-to-vnet-hub. |
Modelo de implantação de rede virtual |
Mantenha o padrão Gerenciador de recursos. |
Subscrição |
Selecione sua assinatura. |
Rede virtual |
Selecione vnet-spoke (test-rg). |
Configurações do emparelhamento da rede virtual remota |
|
Permitir que o "vnet-spoke" acesse o "vnet-hub" |
Deixe o padrão Selecionado. |
Permitir que o "vnet-spoke" receba o tráfego encaminhado do "vnet-hub" |
Selecione a caixa de seleção. |
Permitir que o gateway ou o servidor de rota em "vnet-spoke" encaminhe o tráfego para "vnet-hub" |
Mantenha o padrão de Desmarcado. |
Permitir que "vnet-spoke" use o gateway remoto ou o servidor de rota de "vnet-hub" |
Mantenha o padrão de Desmarcado. |
Resumo da rede virtual local |
|
Nome do link de emparelhamento |
Insira vnet-hub-to-vnet-spoke. |
Configurações de emparelhamento da rede virtual local |
|
Permitir que o 'vnet-hub' acesse 'vnet-spoke' |
Deixe o padrão Selecionado. |
Permitir que o "vnet-hub" receba o tráfego encaminhado do "vnet-spoke" |
Selecione a caixa de seleção. |
Permitir que o gateway ou o servidor de rota em "vnet-hub" encaminhe o tráfego para "vnet-spoke" |
Mantenha o padrão de Desmarcado. |
Permitir que "vnet-hub" use o gateway remoto ou o servidor de rota de "vnet-spoke" |
Mantenha o padrão de Desmarcado. |
Selecione Adicionar.
Selecione Atualizar e verifique se o Status do emparelhamento é Conectado.
Use Add-AzVirtualNetworkPeering para criar um emparelhamento do hub para o spoke.
# Create peering from hub to spoke
$peeringParams = @{
Name = 'vnet-hub-to-vnet-spoke'
VirtualNetwork = $hubVnet
RemoteVirtualNetworkId = $spokeVnet.Id
AllowForwardedTraffic = $true
}
Add-AzVirtualNetworkPeering @peeringParams
Use Add-AzVirtualNetworkPeering para criar um emparelhamento do spoke para o hub.
# Create peering from spoke to hub
$peeringParams = @{
Name = 'vnet-spoke-to-vnet-hub'
VirtualNetwork = $spokeVnet
RemoteVirtualNetworkId = $hubVnet.Id
AllowForwardedTraffic = $true
}
Add-AzVirtualNetworkPeering @peeringParams
Use az network vnet peering create para criar a conexão de emparelhamento do hub para o 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
Use az network vnet peering create para criar o emparelhamento do spoke para o 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
Criar tabela de rotas de rede spoke
Uma tabela de rotas força todo o tráfego que sai da rede virtual spoke para a rede virtual de hub. A tabela de rotas é configurada com o endereço IP privado do Firewall do Azure como a solução de virtualização.
Obter o endereço IP privado do firewall
O endereço IP privado do firewall é exigido pela tabela de rotas criada posteriormente neste artigo. Use o exemplo a seguir para obter o endereço IP privado do firewall.
Na caixa de pesquisa na parte superior do portal, insira Firewall. Selecione Firewalls nos resultados da pesquisa.
Selecione firewall.
Na Visão geral do firewall, observe o endereço IP no campo IP privado do Firewall. Neste exemplo, o endereço IP é 10.0.1.68.
Use Get-AzFirewall para obter o endereço IP privado do 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
Criar tabela de rotas
Crie uma tabela de rotas para forçar todo o tráfego de saída entre spokes e da internet por meio do firewall na rede virtual hub.
Na caixa de pesquisa na parte superior do portal, insira Tabela de rotas. Selecione Tabela de rotas nos resultados da pesquisa.
Selecione + Criar.
Em Criar Tabela de rotas, insira ou selecione as seguintes informações:
Configuração |
Valor |
Detalhes do projeto |
|
Subscrição |
Selecione sua assinatura. |
Grupo de recursos |
Selecione test-rg. |
Detalhes da instância |
|
Região |
Selecione Centro-Sul dos EUA. |
Nome |
Insira route-table-spoke. |
Propagar rotas de gateway |
Selecione Não. |
Selecione Examinar + criar.
Selecione Criar.
Na caixa de pesquisa na parte superior do portal, insira Tabela de rotas. Selecione Tabela de rotas nos resultados da pesquisa.
Selecione route-table-spoke.
Em Configurações, selecione Rotas.
Selecione + Adicionar em Rotas.
Insira ou selecione as seguintes informações em Adicionar rota:
Configuração |
Valor |
Nome da rota |
Insira route-to-hub. |
Tipo de destino |
Selecione Endereços IP. |
Intervalos de CIDR /endereço IP de destino |
Insira 0.0.0.0/0. |
Tipo do próximo salto |
Selecione Solução de virtualização. |
Endereço do próximo salto |
Insira 10.0.1.68. |
Selecione Adicionar.
Selecione Sub-redes em Configurações.
Selecione + Associar.
Insira ou selecione as seguintes informações em Associar sub-rede:
Configuração |
Valor |
Rede virtual |
Selecione vnet-spoke (test-rg). |
Sub-rede |
Selecione subnet-private. |
Selecione OK.
Use New-AzRouteTable para criar a tabela de rotas.
# Create route table
$routeTableParams = @{
ResourceGroupName = 'test-rg'
Location = 'South Central US'
Name = 'route-table-spoke'
}
$routeTable = New-AzRouteTable @routeTableParams
Use Add-AzRouteConfig para criar uma rota na tabela de rotas.
# 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
Use Set-AzRouteTable para atualizar a tabela de rotas.
# Update the route table
$routeTable | Set-AzRouteTable
Use Set-AzVirtualNetworkSubnetConfig para associar a tabela de rotas à sub-rede spoke.
# Associate route table with subnet
$subnetConfigParams = @{
VirtualNetwork = $spokeVnet
Name = 'subnet-private'
AddressPrefix = '10.1.0.0/24'
RouteTable = $routeTable
}
Set-AzVirtualNetworkSubnetConfig @subnetConfigParams
Use Set-AzVirtualNetwork para atualizar a rede virtual spoke.
# Update the virtual network
$spokeVnet | Set-AzVirtualNetwork
Use az network route-table create para criar uma tabela de rotas.
# 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
Use az network route-table route create para criar uma rota.
# 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
Use az network vnet subnet update para associar a tabela de rotas à sub-rede.
# 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
O tráfego do spoke por meio do hub precisa ser permitido por meio da política de firewall e de uma regra de rede. Use o exemplo a seguir para criar a política de firewall e a regra de rede.
Na caixa de pesquisa na parte superior do portal, insira Firewall. Selecione Políticas de Firewall nos resultados da pesquisa.
Selecione firewall-policy.
Expanda Configurações e selecione Regras de rede.
Selecione + Adicionar uma coleção de regras.
Em Adicionar coleção de regras, insira ou selecione as seguintes informações:
Configuração |
Valor |
Nome |
Insira spoke-to-internet. |
Tipo de coleção de regras |
Selecionar Rede. |
Prioridade |
Insira 100. |
Ação da coleção de regras |
selecione Permitir. |
Grupo de coleções de regras |
Selecione DefaultNetworkRuleCollectionGroup. |
Regras |
|
Nome |
Insira allow-web. |
Tipo de origem |
Endereço IP. |
Fonte |
Insira 10.1.0.0/24. |
Protocolo |
selecione TCP. |
Portas de destino |
Insira 80,443. |
Tipo de Destino |
Selecione Endereço IP. |
Destino |
Insira * |
Selecione Adicionar.
Use Get-AzFirewallPolicy para obter a política de firewall existente.
# Get the existing firewall policy
$firewallPolicyParams = @{
Name = 'firewall-policy'
ResourceGroupName = 'test-rg'
}
$firewallPolicy = Get-AzFirewallPolicy @firewallPolicyParams
Use New-AzFirewallPolicyNetworkRule para criar uma regra de rede.
# 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
Use New-AzFirewallPolicyFilterRuleCollection para criar uma coleção de regras para a regra de rede.
# Create a rule collection for the network rule
$ruleCollectionParams = @{
Name = 'spoke-to-internet'
Priority = 100
Rule = $networkRule
ActionType = 'Allow'
}
$ruleCollection = New-AzFirewallPolicyFilterRuleCollection @ruleCollectionParams
Use New-AzFirewallPolicyRuleCollectionGroup para criar um grupo de coleção de regras.
$newRuleCollectionGroupParams = @{
Name = 'DefaultNetworkRuleCollectionGroup'
Priority = 200
FirewallPolicyObject = $firewallPolicy
RuleCollection = $ruleCollection
}
New-AzFirewallPolicyRuleCollectionGroup @newRuleCollectionGroupParams
Use az network firewall policy rule-collection-group create para criar um grupo de coleção de regras.
# 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
Use az network firewall policy rule-collection-group collection add-filter-collection para criar uma coleção de regras de rede.
# 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
Criar máquina virtual de teste
Uma máquina virtual Ubuntu é usada para testar o tráfego de saída da Internet por meio do gateway da NAT. Use o seguinte exemplo para criar uma máquina virtual Ubuntu.
No portal, pesquise 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ção |
Valor |
Detalhes do projeto |
|
Subscrição |
Selecione sua assinatura. |
Grupo de recursos |
Selecione test-rg. |
Detalhes da instância |
|
Nome da máquina virtual |
Insira vm-spoke. |
Região |
Selecione (EUA) Centro-Sul dos EUA. |
Opções de disponibilidade |
Selecione Nenhuma redundância de infraestrutura necessária. |
Tipo de segurança |
Deixe o padrão de Standard. |
Imagem |
Selecione Ubuntu Server 24.04 LTS - x64 Gen2. |
Arquitetura de VMs |
Mantenha o padrão x64. |
Tamanho |
Selecione um tamanho. |
Conta de administrador |
|
Tipo de autenticação |
Selecione Senha. |
Nome de Usuário |
insira azureuser. |
Senha |
Digite uma senha. |
Confirmar senha |
Digitar novamente a senha. |
Regras de porta de entrada |
|
Porta de entrada públicas |
Selecione Nenhum. |
Selecione a guia Rede na parte superior da página ou selecione Avançar: Discos e Avançar: Rede.
Insira ou selecione as seguintes informações na guia Rede:
Configuração |
Valor |
Interface de rede |
|
Rede virtual |
Selecione vnet-spoke. |
Sub-rede |
Selecione subnet-private (10.1.0.0/24). |
IP público |
Selecione Nenhum. |
Grupo de segurança de rede da NIC |
Selecione Avançado. |
Configurar um grupo de segurança de rede |
Selecione Criar novo.
Insira nsg-1 no nome.
Deixe os demais valores como padrão e selecione OK. |
Deixe o restante das configurações nos padrões e selecione Revisar + criar.
Examine as configurações e selecione Criar.
Aguarde até que a máquina virtual conclua a implantação antes de continuar com as próximas etapas.
Observação
Máquinas virtuais em uma rede virtual com um bastion host não precisam de endereços IP públicos. O 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 no bastion. Para obter mais informações, confira dissociar um endereço IP público de uma VM do Azure.
Use New-AzNetworkSecurityGroup para criar o grupo de segurança de rede.
$nsgParams = @{
ResourceGroupName = "test-rg"
Name = "nsg-1"
Location = "southcentralus"
}
New-AzNetworkSecurityGroup @nsgParams
Use New-AzNetworkInterface para criar a interface de rede.
$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
Use Get-Credential para definir um nome de usuário e uma senha para a VM e armazená-los na variável $cred
.
$cred = Get-Credential
Observação
É necessário um nome de usuário para a VM. A senha é opcional e não é usada se definida. A configuração da chave SSH é recomendada para VMs Linux.
Use New-AzVMConfig para definir uma VM.
$vmConfigParams = @{
VMName = "vm-spoke"
VMSize = "Standard_DS4_v2"
}
$vmConfig = New-AzVMConfig @vmConfigParams
Use Set-AzVMOperatingSystem e Set-AzVMSourceImage para criar o restante da configuração da VM. O exemplo a seguir cria uma máquina virtual do Servidor Ubuntu:
$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
Use Add-AzVMNetworkInterface para anexar a NIC que você criou anteriormente à VM.
# 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
Use New-AzVM para criar a VM. O comando gera chaves SSH para a máquina virtual para entrada. Anote a localização da chave privada. A chave privada será necessária em etapas posteriores para conectar-se à máquina virtual com o Azure Bastion.
$vmParams = @{
VM = $vmConfig
ResourceGroupName = "test-rg"
Location = "southcentralus"
SshKeyName = "ssh-key"
}
New-AzVM @vmParams -GenerateSshKey
Use az network nsg create para criar um grupo de segurança de rede.
# Variables
RESOURCE_GROUP="test-rg"
NSG_NAME="nsg-1"
LOCATION="southcentralus"
az network nsg create \
--resource-group $RESOURCE_GROUP \
--name $NSG_NAME \
--location $LOCATION
Use az network nic create para criar uma interface de rede.
# 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
Use az vm create para criar uma máquina virtual.
# 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
Testar um gateway da NAT
Conecte-se às máquinas virtuais Ubuntu criadas nas etapas anteriores para verificar se o tráfego de saída da Internet está saindo do gateway da NAT.
Obter endereço IP público do gateway da NAT
Obtenha o endereço IP público do gateway da NAT para verificação das etapas mais adiante no artigo.
Na caixa de pesquisa na parte superior do portal, insira IP público. Selecione Endereços IP públicos nos resultados da pesquisa.
Selecione public-ip-nat.
Anote o valor no endereço IP. O exemplo usado neste artigo é 203.0.113.0.25.
Use Get-AzPublicIpAddress para obter o endereço IP público do gateway da NAT.
# Get the public IP address of the NAT gateway
$publicIpNatParams = @{
ResourceGroupName = 'test-rg'
Name = 'public-ip-nat'
}
$publicIpNat = Get-AzPublicIpAddress @publicIpNatParams
$publicIpNat.IpAddress
Use az network public-ip show para obter o endereço IP público do gateway da 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
Testar o gateway da NAT do spoke
Na caixa de pesquisa na parte superior do portal insira Máquina virtual. Selecione Máquinas virtuais nos resultados da pesquisa.
Selecione vm-spoke.
Em Visão geral, selecione Conectar e Conectar-se com Bastion.
Selecione SSH como o tipo de conexão. Carregue seu arquivo de chave privada SSH. Selecione Conectar.
No prompt de bash, digite o seguinte comando:
curl ifconfig.me
Verifique se o endereço IP retornado pelo comando corresponde ao endereço IP público do gateway da NAT.
azureuser@vm-1:~$ curl ifconfig.me
203.0.113.0.25
Fechar a conexão do Bastion com vm-spoke.
Quando terminar de usar os recursos que criou, você poderá excluir o grupo de recursos e todos os seus recursos.
No portal do Azure, procure por Grupos de recursos e selecione essa opção.
Na página Grupos de recursos, selecione o grupo de recursos test-rg.
Na página test-rg, selecione Excluir grupo de recursos .
Insira test-rg em Inserir o nome do grupo de recursos para confirmar a exclusão e, em seguida, selecione Excluir.
Use Remove-AzResourceGroup para remover o grupo de recursos.
# Remove resource group
$rgParams = @{
Name = 'test-rg'
}
Remove-AzResourceGroup @rgParams
Use az group delete para remover o grupo de recursos.
# Variables
RESOURCE_GROUP="test-rg"
az group delete \
--name $RESOURCE_GROUP \
--yes \
--no-wait
Próximas etapas
Avance para o próximo artigo para saber como integrar um gateway da NAT a um Azure Load Balancer: