Pular para o conteúdo principal

Challenge 10: NAT Gateway e conectividade de saída

Tempo e custo estimados

60-90 minutos | ~$1-2/hora (NAT Gateway + Standard IP) | Peso no exame: 10-15%

Cenário

A Contoso executa mais de 200 VMs atrás de um Load Balancer interno para processamento de backend. Essas VMs precisam de acesso de saída à internet para atualizações de pacotes e chamadas de API, mas estão enfrentando falhas de conexão intermitentes causadas pelo esgotamento de portas SNAT. A equipe precisa implementar o NAT Gateway para fornecer conectividade de saída confiável e escalável sem expor as VMs ao tráfego de entrada da internet.

Topologia atual:

Challenge 10 - Topologia de Rede

Topologia desejada:

Internet
|
NAT Gateway (public-ip-nat: 52.x.x.x)
|
Backend Subnet (10.0.1.0/24)
├── VM-1 ... VM-200+
└── All outbound traffic uses NAT GW IP

Objetivos de aprendizagem

Após concluir este desafio, você será capaz de:

  • Identificar casos de uso apropriados para o Azure NAT Gateway
  • Criar um NAT Gateway com endereços IP públicos
  • Associar um NAT Gateway a uma sub-rede de rede virtual
  • Escalar a capacidade de saída usando múltiplos IPs públicos ou prefixos de IP
  • Configurar as definições de tempo limite de inatividade TCP
  • Verificar se a conectividade de saída utiliza o IP do NAT Gateway
  • Comparar métodos de conectividade de saída no Azure

Pré-requisitos

  • Uma assinatura do Azure com acesso de Contributor
  • Azure CLI instalado e autenticado (az login)
  • Compreensão básica de conectividade de saída e SNAT (do AZ-104)

Conceitos-chave para o AZ-700

ConceitoDetalhe
Portas SNAT por IP64.512 portas por endereço IP público em um NAT Gateway
Máximo de IPs públicosAté 16 IPs públicos por NAT Gateway (1.032.192 portas totais)
PrecedênciaO NAT Gateway tem prioridade sobre regras de saída do LB e PIPs de nível de instância
Requisito de SKUO NAT Gateway requer IPs públicos de SKU Standard (não Basic)
Recurso zonalO NAT Gateway é implantado em zonas de disponibilidade específicas
Tempo limite de inatividade TCPConfigurável de 4 a 120 minutos (padrão: 4 minutos)
Tempo limite de inatividade UDPFixo em 4 minutos (não configurável)
DireçãoSomente saída; o NAT Gateway não permite conexões iniciadas de entrada

Tarefa 1: Criar grupo de recursos e rede virtual

Configure a infraestrutura de rede que simula o ambiente de backend da Contoso.

Etapa 1: Criar o grupo de recursos

az group create \
--name rg-natgw-lab \
--location eastus2

Etapa 2: Criar a rede virtual com uma sub-rede de backend

az network vnet create \
--resource-group rg-natgw-lab \
--name vnet-backend \
--location eastus2 \
--address-prefixes 10.0.0.0/16 \
--subnet-name snet-backend \
--subnet-prefixes 10.0.1.0/24

Tarefa 2: Criar um NAT Gateway com um endereço IP público

Implante o recurso NAT Gateway com um IP público de SKU Standard.

Etapa 1: Criar um IP público de SKU Standard para o NAT Gateway

O NAT Gateway requer IPs públicos de SKU Standard. SKU Basic não é suportado.

az network public-ip create \
--resource-group rg-natgw-lab \
--name public-ip-nat \
--sku Standard \
--allocation-method Static \
--location eastus2 \
--zone 1 2 3

Etapa 2: Criar o recurso NAT Gateway

az network nat gateway create \
--resource-group rg-natgw-lab \
--name natgw-backend \
--location eastus2 \
--public-ip-addresses public-ip-nat \
--idle-timeout 10

Parâmetros principais:

  • --public-ip-addresses: lista separada por espaços de nomes ou IDs de IPs públicos
  • --idle-timeout: tempo limite de inatividade TCP em minutos (4-120, padrão 4)
  • --zone: zona(s) de disponibilidade para o NAT Gateway (omitido aqui por simplicidade)

Etapa 3: Verificar se o NAT Gateway foi criado

az network nat gateway show \
--resource-group rg-natgw-lab \
--name natgw-backend \
--output table

Tarefa 3: Associar o NAT Gateway à sub-rede

Uma vez que um NAT Gateway é associado a uma sub-rede, todo o tráfego de saída para a internet daquela sub-rede utiliza o IP público do NAT Gateway.

Etapa 1: Associar o NAT Gateway à sub-rede de backend

az network vnet subnet update \
--resource-group rg-natgw-lab \
--vnet-name vnet-backend \
--name snet-backend \
--nat-gateway natgw-backend

Etapa 2: Verificar a associação da sub-rede

az network vnet subnet show \
--resource-group rg-natgw-lab \
--vnet-name vnet-backend \
--name snet-backend \
--query "natGateway.id" \
--output tsv

Isso deve retornar o ID do recurso natgw-backend.


Tarefa 4: Escalar a capacidade de saída com IPs públicos adicionais

Um único IP público fornece 64.512 portas SNAT. Para mais de 200 VMs fazendo muitas conexões simultâneas, você pode precisar de mais. É possível adicionar até 16 IPs públicos por NAT Gateway.

Opção A: Adicionar IPs públicos individuais

Etapa 1: Criar um segundo IP público

az network public-ip create \
--resource-group rg-natgw-lab \
--name public-ip-nat2 \
--sku Standard \
--allocation-method Static \
--location eastus2 \
--zone 1 2 3

Etapa 2: Atualizar o NAT Gateway para incluir ambos os IPs

az network nat gateway update \
--resource-group rg-natgw-lab \
--name natgw-backend \
--public-ip-addresses public-ip-nat public-ip-nat2

Nota: O parâmetro --public-ip-addresses substitui a lista inteira. Você deve incluir todos os IPs que deseja associar, não apenas o novo.

Opção B: Usar um prefixo de IP público

Um prefixo de IP público aloca um intervalo contíguo de IPs. Um prefixo /28 fornece 16 endereços.

Etapa 1: Criar um prefixo de IP público

az network public-ip prefix create \
--resource-group rg-natgw-lab \
--name public-ip-prefix-nat \
--location eastus2 \
--length 28

Etapa 2: Criar um NAT Gateway usando o prefixo (abordagem alternativa)

az network nat gateway create \
--resource-group rg-natgw-lab \
--name natgw-prefix-demo \
--location eastus2 \
--public-ip-prefixes public-ip-prefix-nat \
--idle-timeout 10

Você também pode combinar IPs públicos individuais e prefixos no mesmo NAT Gateway usando tanto --public-ip-addresses quanto --public-ip-prefixes.


Tarefa 5: Configurar e testar o tempo limite de inatividade

O tempo limite de inatividade TCP determina por quanto tempo um NAT Gateway mantém uma porta SNAT para uma conexão inativa.

Etapa 1: Atualizar o tempo limite de inatividade

az network nat gateway update \
--resource-group rg-natgw-lab \
--name natgw-backend \
--idle-timeout 120

Considerações importantes

ProtocoloTempo limite de inatividadeConfigurável?
TCP4-120 minutosSim (via --idle-timeout)
UDP4 minutosNão (fixo)

Tempos limite de inatividade longos aumentam o risco de esgotamento de portas SNAT porque as portas são mantidas por mais tempo. A Microsoft recomenda manter o tempo limite tão baixo quanto sua aplicação permitir.

Etapa 2: Redefinir para um valor razoável

az network nat gateway update \
--resource-group rg-natgw-lab \
--name natgw-backend \
--idle-timeout 10

Tarefa 6: Verificar o IP de saída e a conectividade

Implante uma VM de teste para confirmar que o tráfego de saída utiliza o IP público do NAT Gateway.

Etapa 1: Criar uma VM de teste na sub-rede de backend

az vm create \
--resource-group rg-natgw-lab \
--name vm-test-nat \
--image Ubuntu2204 \
--vnet-name vnet-backend \
--subnet snet-backend \
--size Standard_B1s \
--admin-username azureuser \
--generate-ssh-keys \
--public-ip-address "" \
--no-wait

O flag --public-ip-address "" garante que a VM não tenha IP público de nível de instância. Todo o tráfego de saída utilizará o NAT Gateway.

Etapa 2: Verificar o endereço IP público do NAT Gateway

az network public-ip show \
--resource-group rg-natgw-lab \
--name public-ip-nat \
--query "ipAddress" \
--output tsv

Etapa 3: Verificar a partir da VM usando console serial ou Run Command

az vm run-command invoke \
--resource-group rg-natgw-lab \
--name vm-test-nat \
--command-id RunShellScript \
--scripts "curl -s https://ifconfig.me"

A saída deve corresponder ao IP público do NAT Gateway, confirmando que o tráfego de saída é roteado através do NAT Gateway.


Comparação de conectividade de saída

Entender quando usar cada método de saída é fundamental para o exame AZ-700.

MétodoPortas SNATPrecedênciaCaso de uso
NAT Gateway64.512 por IP (até 16 IPs)Mais altaCargas de trabalho de produção que precisam de saída escalável e confiável
IP público de nível de instânciaTodas as portas disponíveis para uma única VMAlta (substituída pelo NAT GW)VM única que precisa de IP de saída dedicado
Regras de saída do LBConfigurável por pool de backendMédiaQuando o NAT Gateway não é uma opção
Acesso de saída padrãoLimitado, não confiávelApenas fallbackNão recomendado para produção

Ordem de precedência: NAT Gateway > IP público de nível de instância > regras de saída do LB > acesso de saída padrão.

Descontinuação do acesso de saída padrão

O Azure está descontinuando o acesso de saída padrão para novas implantações. Todas as novas VMs sem conectividade de saída explícita (NAT Gateway, regras de saída do LB ou PIP de nível de instância) não terão acesso de saída à internet. Sempre configure a conectividade de saída explicitamente.


Cenários de quebra e correção

Cenário 1: Implantação do NAT Gateway falha com IP público de SKU Basic

Sintoma: O comando az network nat gateway create falha com um erro de incompatibilidade de SKU.

Reproduzir o erro:

# This will fail
az network public-ip create \
--resource-group rg-natgw-lab \
--name public-ip-basic \
--sku Basic \
--allocation-method Dynamic \
--location eastus2

az network nat gateway create \
--resource-group rg-natgw-lab \
--name natgw-broken \
--location eastus2 \
--public-ip-addresses public-ip-basic

Causa raiz: O NAT Gateway suporta apenas IPs públicos de SKU Standard. IPs de SKU Basic não podem ser associados a um NAT Gateway.

Correção: Recrie o IP público com SKU Standard:

az network public-ip create \
--resource-group rg-natgw-lab \
--name public-ip-fixed \
--sku Standard \
--allocation-method Static \
--location eastus2

Cenário 2: IP de saída mudou inesperadamente após adicionar o NAT Gateway

Sintoma: Uma VM anteriormente usava seu IP público de nível de instância (ex.: 20.x.x.x) para conexões de saída. Após o NAT Gateway ser associado à sub-rede, o tráfego de saída agora usa o IP do NAT Gateway.

Causa raiz: O NAT Gateway tem precedência sobre IPs públicos de nível de instância para tráfego de saída. Isso é por design. Quando uma sub-rede possui um NAT Gateway, todo o tráfego de saída para a internet daquela sub-rede usa o IP público do NAT Gateway, independentemente de as VMs individuais terem seus próprios IPs públicos.

Resolução: Este é o comportamento esperado. Se uma VM específica precisa usar seu próprio IP público para tráfego de saída, mova-a para uma sub-rede sem NAT Gateway.


Cenário 3: Conexões UDP expirando em 4 minutos

Sintoma: Aplicações de longa duração baseadas em UDP (ex.: resolvedores DNS, servidores de jogos, VoIP) experimentam quedas de conexão exatamente em 4 minutos de tempo ocioso, mesmo com o tempo limite de inatividade do NAT Gateway configurado para 120 minutos.

Causa raiz: O tempo limite de inatividade configurável no NAT Gateway aplica-se apenas a conexões TCP. O tempo limite de inatividade UDP é fixo em 4 minutos e não pode ser alterado.

Resolução: A aplicação deve implementar pacotes de keepalive ou lógica de reconexão para fluxos UDP. Envie um pacote UDP pelo menos uma vez a cada 4 minutos para manter a conexão ativa.


Limpeza

Remova todos os recursos criados neste desafio:

az group delete \
--name rg-natgw-lab \
--yes \
--no-wait

Verificação de conhecimento

1. As VMs de backend da Contoso estão enfrentando esgotamento de portas SNAT atrás de um Load Balancer interno. Qual solução fornece a conectividade de saída mais escalável?

2. Uma VM em uma subnet tem um IP público em nível de instância (20.1.1.1). Um NAT Gateway com IP público 52.2.2.2 está associado à mesma subnet. Qual endereço IP a VM usa para tráfego de saída para a internet?

3. Qual é o tempo limite de inatividade máximo que pode ser configurado para conexões UDP em um NAT Gateway?

4. Um administrador tenta criar um NAT Gateway usando um IP público de SKU Basic. O que acontece?

5. Uma empresa precisa suportar 500.000 conexões de saída simultâneas a partir de uma única subnet. Quantos endereços IP públicos devem ser atribuídos ao NAT Gateway no mínimo?


Recursos adicionais