Utilize Tradução de Endereços de Rede de Origem (SNAT) para ligaçõ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.

Escolha um método de conectividade de saída

Escolha um método explícito de conectividade de saída antes de implementar uma carga de trabalho:

  • Use o Azure NAT Gateway para conectividade escalável e apenas de saída a partir de uma subrede.
  • Use um IP público ao nível de instância quando uma máquina virtual precisa do seu próprio endereço público.
  • Use regras de saída quando as instâncias de backend usem um IP frontend de balanceador de carga para conectividade de saída.
  • Evite o acesso de saída predefinido para cargas de trabalho em produção. As novas redes virtuais usam sub-redes privadas por defeito.

Métodos de conectividade outbound do Azure

Os seguintes métodos são os mais usados no Azure para permitir a conectividade de saída, listados por ordem de prioridade quando são usados múltiplos métodos:

# Método Tipo de atribuição portuária Grau de produção? Avaliação
1 Associar o Azure NAT Gateway à sub-rede Dinâmico, explícito Sim Melhor
2 Atribuir um IP público à máquina virtual Estático, explícito Sim OK
3 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
4 Utilizar o(s) endereço(s) IP de front-end de um balanceador de carga para saída sem regras de saída Estático, implícito Não Pior
5 Acesso de saída padrão Implícito Não Pior

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

1. Associar Azure NAT Gateway à subnet

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

O Azure NAT Gateway simplifica a conectividade de saída à Internet para redes virtuais. Quando o configuras numa sub-rede, toda a conectividade de saída usa os endereços IP públicos estáticos especificados. Pode ter conectividade de saída sem um balanceador de carga ou endereços IP públicos diretamente ligados às máquinas virtuais. O NAT Gateway é totalmente gerenciado e altamente resiliente.

Usar o NAT Gateway é o melhor método para conectividade de saída. O NAT Gateway é altamente extensível, fiável e não tem as mesmas preocupações com o esgotamento das portas do SNAT.

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

Para mais informações sobre Azure NAT Gateway, consulte O que é Azure NAT Gateway. Para obter detalhes sobre como o comportamento do SNAT funciona com o NAT Gateway, consulte SNAT com NAT Gateway.

2. 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 (Protocolo de Controle de Transmissão)
UDP (Protocolo de Datagrama do Utilizador)
ICMP (Protocolo de Mensagens de Controle da Internet)
ESP (Carga Útil de Segurança Encapsulada)

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 utiliza o IP público atribuído à configuração de 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.

3. Use o(s) endereço(s) IP frontend de um balanceador de carga para saída via regras de saída

Diagrama de 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. Esta configuração permite usar o IP público ou IPs do seu balanceador de carga para a conectividade de saída das instâncias de backend.

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 de SNAT.

Pode atribuir manualmente portas SNAT por "portas por instância" ou "número máximo de instâncias de backend". Se tiver máquinas virtuais no plano de fundo, recomenda-se que atribua as portas utilizando "portas por instância" para uma utilização máxima das portas SNAT.

Calcule o número de portas por instância da seguinte forma:

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

Se tiveres Conjuntos de Dimensionamento de Máquinas Virtuais no backend, recomenda-se alocar portas pelo "número máximo de instâncias do backend". Se forem adicionadas mais VMs ao backend do que as portas SNAT restantes permitidas, a escalabilidade para fora dos Conjuntos de Dimensionamento de Máquinas Virtuais pode ser bloqueada, ou as novas VMs não receberão portas SNAT suficientes.

Nota

Quando vários endereços IP de front-end são configurados usando regras de saída, as conexões de saída podem originar-se de qualquer um dos endereços IP de front-end configurados na instância de back-end. Não recomendamos a criação de dependências nas quais o IP frontend possa ser selecionado para conexões.

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

4. Utilize o(s) endereço(s) IP do frontend de um balanceador de carga para saída sem regras de saída

Esta opção é semelhante à anterior, exceto quando nenhuma regra de saída é criada. Nesse caso, o(s) frontend(s) do balanceador de carga ainda são usados para saída, mas isso é feito implicitamente sem regras que especifiquem qual frontend seria usado. Não usar regras de saída também diminui a escalabilidade de saída, pois a conectividade de saída implícita tem um número fixo de portas SNAT por endereço IP frontend, o que pode levar à exaustão da porta em cenários de alto tráfego.

5. Acesso de saída padrão

Diagrama de acesso de saída padrão.

No Azure, máquinas virtuais criadas numa rede virtual sem uma conectividade de saída explícita definida são atribuídas a um endereço IP público de saída por defeito. 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 31 de março de 2026, as novas redes virtuais passam, por predefinição, a utilizar sub-redes privadas. Para obter mais informações, veja o anúncio oficial. Use uma das formas explícitas de conectividade, conforme mostrado nas opções 1-3 acima.

Portas SNAT do Balanceador de Carga do Azure

As portas geram identificadores únicos que mantêm fluxos distintos. A Internet usa cinco-tupla para fornecer esta distinção.

Se usares uma porta para ligações de entrada, ela tem um ouvinte para pedidos de ligação de entrada nessa porta. Essa porta não pode ser usada para conexões de saída. Para estabelecer uma ligação de saída, utilize-se uma porta efémera para fornecer ao destino uma porta onde 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 tanto para ligações de entrada como de saída para TCP (Transmission Control Protocol) e UDP (User Datagram Protocol). Quando adiciona um endereço IP público como IP frontend a um balanceador de carga, 64.000 portas são elegíveis para SNAT.

Cada porta usada numa 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 elegíveis para SNAT, se o mesmo IP frontend for usado para conectividade para 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 precisar de se ligar a algum serviço Azure PaaS suportado, como Armazenamento do Azure, SQL do Azure ou Azure Cosmos DB, use o Azure Private Link para evitar o SNAT por completo. O Azure Private Link envia tráfego da sua rede virtual para os serviços do Azure através da rede backbone do Azure em vez de através da internet.

Private Link é a opção recomendada em relação aos endpoints de serviço para acesso privado a serviços alojados no Azure. Para mais informações sobre a diferença entre endpoints de Private Link e endpoints de serviço, consulte Compare Endpoints Privados e Endpoints de Serviço.

Comportamento padrão do SNAT do Balanceador de Carga do Azure

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. O Azure realiza esta tradução através do SNAT.

Se usar SNAT sem regras de saída através de um balanceador de carga público, o sistema pré-aloca portas SNAT conforme descrito na seguinte tabela de alocação de portas SNAT por defeito:

Tabela de alocação de porta padrão

Quando ativas a alocação de portas por defeito, o sistema aloca portas SNAT com base no tamanho do pool do backend. Cada backend recebe o número de portas definidas pela tabela, por IP frontend, até um máximo de 1.024 portas. Não utilize a alocação de portas predefinida para cargas de trabalho de produção, uma vez que atribui um número reduzido de portas a cada instância de back-end e aumenta o risco de esgotamento das portas SNAT. Em vez disso, considere usar o Azure NAT Gateway ou alocar manualmente portas nas regras de saída do seu balanceador de carga.

Pode ativar a alocação de portas por defeito de várias formas:

  • Configure a regra de balanceamento de carga com disableOutboundSnat definido como false, ou selecione a opção de alocação de portas predefinida na regra do balanceador de carga no portal do Azure.
  • Configure uma regra de saída, mas defina a propriedade allocatedOutboundPorts como 0, ou selecione Ativar a alocação de portas predefinida no portal do Azure.

Por exemplo, com 100 VMs num pool backend e apenas um IP frontend, cada VM recebe 512 portas. Se adicionares um segundo IP frontend, cada VM recebe mais 512 portas. Esta alocação significa que cada VM recebe um total de 1.024 portas. Como resultado, adicionar um terceiro IP frontend não aumenta o número de portas SNAT alocadas para além de 1.024 portas.

Regra geral, pode calcular o número de portas SNAT disponibilizadas quando é aplicada a alocação de portas predefinida da seguinte forma: MIN(# of default SNAT ports provided based on pool size * number of frontend IPs associated with the 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 de 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. Utilize a funcionalidade de reutilização de conexão na sua aplicação. Sem reutilização de conexão, o risco de exaustão da porta SNAT aumenta.

Para mais informações sobre o agrupamento de ligações com o Serviço de Aplicações do Azure, consulte Resolução de problemas de erros intermitentes de ligação de saída no Serviço de Aplicações 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 orientações sobre a mitigação do esgotamento das portas SNAT, veja Suporte e resolução de problemas para Balanceador de Carga do Azure.

Reutilização de portas

No TCP, cada conexão ativa requer um tuplo de origem traduzido distinto para um tuplo de destino específico, que consiste no endereço IP de destino e na porta de destino. Pode reutilizar uma porta SNAT para uma ligação a um endereço IP de destino diferente ou a uma porta de destino diferente. Não podes reutilizá-lo para outra ligação ativa proveniente da mesma instância de backend para o mesmo endereço IP e porta de destino.

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, independentemente da porta de destino.

Podes reutilizar portas individuais para um número ilimitado de ligações onde a reutilização é permitida (quando o IP ou porta de destino é diferente).

No exemplo da tabela seguinte, uma instância backend com IP privado 10.0.0.1 faz ligações TCP aos IPs de destino 23.53.254.142 e 26.108.254.155, enquanto o balanceador de carga está configurado com o endereço IP frontend 192.0.2.0. Como os IPs de destino são diferentes, a mesma porta SNAT pode ser reutilizada para várias conexões.

Flow Tupla de origem Tupla de origem após SNAT Tupla de destino
1 10.0.0.1:80 192.0.2.0:1 23.53.254.142:80
2 10.0.0.1:80 192.0.2.0:1 26.108.254.155:80

Restrições

As seguintes restrições aplicam-se ao Balanceador de Carga do Azure SNAT. Restrições individuais identificam quando se aplicam apenas a TCP, UDP, regras de saída ou configurações públicas de IP ao nível da instância.

  • Quando uma ligação está inativa sem novos pacotes a serem enviados, as portas são libertadas após 4 a 120 minutos.

  • Pode configurar este limiar através das regras de saída.

  • Cada endereço IP fornece 64.000 portas que pode usar para SNAT.

  • Cada porta pode ser usada tanto para ligações TCP como UDP a um endereço IP de destino.

  • Precisas de uma porta SNAT UDP, quer a porta de destino seja única 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 múltiplas ligações ao mesmo IP de destino, desde que as portas de destino sejam diferentes.

  • O esgotamento de SNAT ocorre quando uma instância de backend fica sem portas SNAT específicas. Um balanceador de carga ainda pode ter portas SNAT não utilizadas. Se as portas SNAT usadas por uma instância de backend excederem as portas SNAT atribuídas, não pode estabelecer novas ligações de saída.

  • O sistema lança pacotes fragmentados, a menos que a saída seja feita através de um endereço IP público ao nível de instância na NIC da VM.

  • As regras de saída não suportam configurações IPv4 secundárias de uma interface de rede. Para conectividade de saída em configurações IPv4 secundárias, anexe endereços IP públicos ao nível da instância ou use o Azure NAT Gateway em vez disso.

Próximos passos