Usar a conversão de endereços de rede de origem (SNAT) para conexões de saída

Determinados cenários exigem que máquinas virtuais ou instâncias de computação tenham conectividade de saída para a Internet. Os IPs de frontend de um balanceador de carga público podem ser usados para fornecer conectividade de saída à Internet para instâncias de back-end. Essa configuração usa a conversão de endereços de rede de origem (SNAT) para traduzir o IP privado da máquina virtual para o endereço IP público do balanceador de carga. A SNAT mapeia o endereço IP do back-end para o endereço IP público do balanceador de carga. A SNAT impede que origens externas tenham um endereço direto para as instâncias de back-end.

Métodos de conectividade de saída do Azure

Os métodos a seguir são os métodos mais usados do Azure para habilitar a conectividade de saída:

# Método Tipo de atribuição portuária Grau de produção? Rating
1 Use o(s) endereço(s) IP de front-end de um balanceador de carga para saída por meio de regras de saída Estático, explícito Sim, mas não em escala OK
2 Associar um gateway NAT à sub-rede Dinâmico, explícito Sim Melhor
3 Atribuir um IP público à máquina virtual Estático, explícito Sim OK
4 Acesso de saída padrão Implícito Não Pior

Diagrama de opções de saída do Azure.

1. Use o endereço IP frontend de um balanceador de carga para saída via regras de saída

Diagrama balanceador de carga público com regras de saída.

As regras de saída permitem que você defina explicitamente SNAT (conversão de endereços de rede de origem) para um balanceador de carga público SKU padrão. Essa configuração permite que você use o IP público ou IPs do seu balanceador de carga para conectividade de saída das instâncias de back-end.

Esta configuração permite:

  • Mascaramento de IP

  • Simplificando suas listas de permissões

  • Reduz o número de recursos IP públicos para implantação

Com as regras de saída, você tem controle declarativo total sobre a conectividade de saída com a Internet. As regras de saída permitem dimensionar e ajustar essa capacidade às suas necessidades específicas por meio da alocação manual de portas. A alocação manual da porta SNAT com base no tamanho do pool de back-end e no número de frontendIPConfigurations pode ajudar a evitar o esgotamento do SNAT.

Você pode alocar manualmente portas SNAT por "portas por instância" ou "número máximo de instâncias de back-end". Se você tiver máquinas virtuais no back-end, é recomendável alocar portas por "portas por instância" para obter o uso máximo de portas SNAT.

Calcule as portas por instância da seguinte maneira:

Número de IPs de front-end * 64K / Número de instâncias de back-end

Se você tiver Conjuntos de Dimensionamento de Máquina Virtual no back-end, é recomendável alocar portas por "número máximo de instâncias de back-end". Se mais VMs forem adicionadas ao back-end do que as portas SNAT restantes permitidas, a expansão dos Conjuntos de Dimensionamento de Máquina Virtual poderá ser bloqueada ou as novas VMs não receberão portas SNAT suficientes.

Para obter mais informações sobre regras de saída, consulte Regras de saída.

2. Associe um gateway NAT à sub-rede

Diagrama de um gateway NAT e balanceador de carga público.

O Gateway NAT do Azure simplifica a conectividade de Internet somente de saída para redes virtuais. Quando configurada em uma sub-rede, toda a conectividade de saída usa seus endereços IP públicos estáticos especificados. A conectividade de saída é possível sem balanceador de carga ou endereços IP públicos diretamente conectados a máquinas virtuais. O NAT Gateway é totalmente gerenciado e altamente resiliente.

Usar um gateway NAT é o melhor método para conectividade de saída. Um gateway NAT é altamente extensível, confiável e não tem as mesmas preocupações de exaustão da porta SNAT.

O gateway NAT tem precedência sobre outros métodos de conectividade de saída, incluindo um balanceador de carga, endereços IP públicos no nível da instância e o Firewall do Azure.

Para obter mais informações sobre o Azure NAT Gateway, consulte O que é o Azure NAT Gateway.

3. Atribua um IP público à máquina virtual

Diagrama de máquinas virtuais com endereços IP públicos em nível de instância.

Associações Método Protocolos IP
IP público na NIC da VM SNAT (Source Network Address Translation)
não é usado.
TCP (Transmission Control Protocol)
UDP (User Datagram Protocol)
ICMP (Internet Control Message Protocol)
ESP (Encapsulating Security Payload)

O tráfego retorna ao cliente solicitante a partir do endereço IP público da máquina virtual (IP de nível de instância).

O Azure usa o IP público atribuído à configuração IP da NIC da instância para todos os fluxos de saída. A instância tem todas as portas efêmeras disponíveis. Não importa se a VM tem balanceamento de carga ou não. Este cenário tem precedência sobre os outros, exceto para o NAT Gateway.

Um IP público atribuído a uma VM é uma relação 1:1 (em vez de 1: muitos) e implementado como um NAT 1:1 sem estado.

4. Acesso de saída padrão

Diagrama de acesso de saída padrão.

No Azure, as máquinas virtuais criadas em uma rede virtual sem conectividade de saída explícita definida recebem um endereço IP público de saída padrão. Este endereço IP permite a conectividade de saída dos recursos para a Internet. Esse acesso é conhecido como acesso de saída padrão. Este método de acesso não é recomendado , pois é inseguro e os endereços IP estão sujeitos a alterações.

Importante

Em 30 de setembro de 2025, o acesso de saída padrão para novas implantações será desativado. Para obter mais informações, veja o anúncio oficial. Recomenda-se usar uma das formas explícitas de conectividade, como mostrado nas opções 1-3 acima.

O que são portas SNAT?

As portas são usadas para gerar identificadores exclusivos usados para manter fluxos distintos. A internet usa uma cinco-tupla para fornecer essa distinção.

Se uma porta for usada para conexões de entrada, ela terá um ouvinte para solicitações de conexão de entrada nessa porta. Essa porta não pode ser usada para conexões de saída. Para estabelecer uma conexão de saída, uma porta efêmera é usada para fornecer ao destino uma porta na qual se comunicar e manter um fluxo de tráfego distinto. Quando essas portas efêmeras são usadas para SNAT, elas são chamadas de portas SNAT.

Por definição, cada endereço IP tem 65.535 portas. Cada porta pode ser usada para conexões de entrada ou saída para TCP (Transmission Control Protocol) e UDP (User Datagram Protocol). Quando um endereço IP público é adicionado como um IP frontend a um balanceador de carga, 64.000 portas são qualificadas para SNAT.

Cada porta usada em uma regra NAT de entrada ou balanceamento de carga consome um intervalo de oito portas das 64.000 portas SNAT disponíveis. Esse uso reduz o número de portas qualificadas para SNAT, se o mesmo IP frontend for usado para conectividade de saída. Se as portas consumidas pelas regras NAT de entrada ou balanceamento de carga estiverem no mesmo bloco de oito portas consumidas por outra regra, as regras não exigirão portas extras.

Nota

Se você precisar se conectar a qualquer serviço PaaS do Azure com suporte, como o Armazenamento do Azure, o Azure SQL ou o Azure Cosmos DB, poderá usar o Azure Private Link para evitar totalmente o SNAT. O Azure Private Link envia tráfego da sua rede virtual para os serviços do Azure através da rede de backbone do Azure em vez de através da Internet.

Private Link é a opção recomendada sobre pontos de extremidade de serviço para acesso privado aos serviços hospedados do Azure. Para obter mais informações sobre a diferença entre Private Link e pontos de extremidade de serviço, consulte Compare Private Endpoints e Service Endpoints.

Como funciona o SNAT padrão?

Quando uma VM cria um fluxo de saída, o Azure traduz o endereço IP de origem para um endereço IP efêmero. Esta tradução é feita via SNAT.

Se estiver usando SNAT sem regras de saída por meio de um balanceador de carga público, as portas SNAT serão pré-alocadas conforme descrito na seguinte tabela de alocação de portas SNAT padrão:

Tabela de alocação de porta padrão

Quando as regras de balanceamento de carga são selecionadas para usar a alocação de porta padrão ou as regras de saída são configuradas com "Usar o número padrão de portas de saída", as portas SNAT são alocadas por padrão com base no tamanho do pool de back-end. Os backends receberão o número de portas definido pela tabela, por IP frontend, até um máximo de 1024 portas.

Por exemplo, com 100 VMs em um pool de back-end e apenas um IP de front-end, cada VM receberá 512 portas. Se um segundo IP de front-end for adicionado, cada VM receberá 512 portas adicionais. Isso significa que cada VM recebe um total de 1024 portas. Como resultado, adicionar um terceiro IP frontend NÃO aumentará o número de portas SNAT alocadas além de 1024 portas.

Como regra geral, o número de portas SNAT fornecidas quando a alocação de porta padrão é aproveitada pode ser calculado como: MIN(# de portas SNAT padrão fornecidas com base no tamanho do pool * número de IPs frontend associados ao pool, 1024)

A tabela a seguir mostra as pré-alocações de porta SNAT para um único IP frontend, dependendo do tamanho do pool de back-end:

Tamanho do pool (instâncias de VM) Portas SNAT padrão
1-50 1,024
51-100 512
101-200 256
201-400 128
401-800 64
801-1,000 32

Esgotamento das portas

Cada conexão com o mesmo IP de destino e porta de destino usa uma porta SNAT. Essa conexão mantém um fluxo de tráfego distinto da instância de back-end ou cliente para um servidor. Esse processo dá ao servidor uma porta distinta para endereçar o tráfego. Sem esse processo, a máquina cliente não sabe de qual fluxo um pacote faz parte.

Imagine ter vários navegadores indo para https://www.microsoft.com, que é:

  • IP de destino = 23.53.254.142

  • Porta de destino = 443

  • Protocolo = TCP

Sem portas SNAT para o tráfego de retorno, o cliente não tem como separar um resultado de consulta de outro.

As conexões de saída podem estourar. Uma instância de back-end pode receber portas insuficientes. Use a funcionalidade de reutilização de conexão em seu aplicativo. Sem a reutilização da conexão, o risco de exaustão da porta SNAT aumenta.

Para obter mais informações sobre o pool de conexões com o Serviço de Aplicativo do Azure, consulte Solução de problemas de erros de conexão de saída intermitente no Serviço de Aplicativo do Azure

Novas conexões de saída para um IP de destino falham quando ocorre o esgotamento da porta. As conexões são bem-sucedidas quando uma porta fica disponível. Esse esgotamento ocorre quando as 64.000 portas de um endereço IP são distribuídas por muitas instâncias de back-end. Para obter orientação sobre a mitigação do esgotamento da porta SNAT, consulte o guia de solução de problemas.

Para conexões TCP, o balanceador de carga usa uma única porta SNAT para cada IP e porta de destino. Este multiuso permite várias conexões para o mesmo IP de destino com a mesma porta SNAT. Esta multiutilização é limitada se a ligação não for a portas de destino diferentes.

Para conexões UDP, o balanceador de carga usa um algoritmo NAT de cone restrito a portas, que consome uma porta SNAT por IP de destino, seja qual for a porta de destino.

Uma porta é reutilizada para um número ilimitado de conexões. A porta só é reutilizada se o IP ou a porta de destino for diferente.

Restrições

  • Quando uma conexão está ociosa sem novos pacotes sendo enviados, as portas serão liberadas após 4 a 120 minutos.

  • Esse limite pode ser configurado por meio de regras de saída.

  • Cada endereço IP fornece 64.000 portas que podem ser usadas para SNAT.

  • Cada porta pode ser usada para conexões TCP e UDP para um endereço IP de destino

  • Uma porta snat udp é necessária independentemente de a porta de destino ser exclusiva ou não. Para cada conexão UDP com um IP de destino, uma porta SNAT UDP é usada.

  • Uma porta TCP SNAT pode ser usada para várias conexões com o mesmo IP de destino, desde que as portas de destino sejam diferentes.

  • O esgotamento do SNAT ocorre quando uma instância de back-end fica sem determinadas portas SNAT. Um balanceador de carga ainda pode ter portas SNAT não utilizadas. Se as portas SNAT usadas de uma instância de back-end excederem suas portas SNAT fornecidas, ela não poderá estabelecer novas conexões de saída.

  • Os pacotes fragmentados são descartados, a menos que a saída seja feita por meio de um IP público de nível de instância na NIC da VM.

  • As configurações de IP secundárias de uma interface de rede não fornecem comunicação de saída (a menos que um IP público esteja associado a ela) por meio de um balanceador de carga.

Próximos passos