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.
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 |
1. Use o endereço IP frontend de um balanceador de carga para saída via 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.
Pode atribuir manualmente portas SNAT por "portas por instância" ou "número máximo de instâncias de back-end". Se tiver máquinas virtuais no back-end, recomenda-se que atribua portas por "portas por instância" para obter utilização máxima 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.
Quando vários IPs de front-end são configurados usando regras de saída, as conexões de saída podem vir de qualquer um dos IPs de front-end configurados para a 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.
2. Associe um gateway NAT à sub-rede
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
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
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 recebem o número de portas definidas 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 recebe 512 portas. Se um segundo IP de front-end for adicionado, cada VM receberá 512 portas extras. Isso significa que cada VM recebe um total de 1.024 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 é aplicada 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.
Reutilização de portas
Para conexões TCP, o balanceador de carga usa uma única porta SNAT para cada IP e porta de destino. Para conexões com o mesmo IP de destino, uma única porta SNAT pode ser reutilizada, desde que a porta de destino seja diferente. A reutilização não é possível quando já existe uma conexão com o mesmo 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.
As portas individuais podem ser reutilizadas para um número ilimitado de conexões onde a reutilização é permitida (quando o IP ou a porta de destino é diferente).
No exemplo da tabela a seguir, uma instância de back-end com IP privado 10.0.0.1 está fazendo conexões TCP com os IPs de destino 23.53.254.142 e 26.108.254.155, enquanto o balanceador de carga é configurado com o endereço IP de 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.
Fluxo | 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
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 IPv4 secundárias de uma interface de rede não são suportadas com regras de saída. Para conectividade de saída em configurações IPv4 secundárias, anexe IPs públicos no nível da instância ou aproveite o Gateway NAT.
Próximos passos
- Solucionar problemas de falhas de conexão de saída devido ao esgotamento do SNAT
- Analise as métricas do SNAT e familiarize-se com a maneira correta de filtrá-las, dividi-las e visualizá-las.
- Saiba como migrar seu método de conectividade de saída existente para o gateway NAT