Utilização de Tradução de Endereços de Rede Fonte (SNAT) para ligações de saídaUsing Source Network Address Translation (SNAT) for outbound connections

Certos cenários requerem que máquinas virtuais ou casos de computação tenham conectividade de saída para a internet.Certain scenarios require virtual machines or compute instances to have outbound connectivity to the internet. Os IPs frontend de um Azure public Balancer podem ser usados para fornecer conectividade de saída à internet para instâncias de backend.The frontend IPs of an Azure public Load Balancer can be used to provide outbound connectivity to the internet for backend instances. Esta configuração utiliza a tradução de endereços de rede de origem (SNAT) uma vez que o IP da fonte ou da máquina virtual é traduzido para um endereço IP público.This configuration uses source network address translation (SNAT) as the source or virtual machine's IP is translated to a Public IP address. O SNAT mapeia o endereço IP do backend para o endereço IP público do seu equilibrador de carga.SNAT maps the IP address of the backend to the public IP address of your load balancer. Isto evita que fontes externas tenham um endereço direto para as instâncias de backend.This prevents outside sources from having a direct address to the backend instances.

Métodos de conectividade de saída do AzureAzure's outbound connectivity methods

A conectividade de saída para a internet pode ser ativada das seguintes formas:Outbound connectivity to the internet can be enabled in the following ways:

# MétodoMethod Tipo de atribuição portuáriaType of port allocation Produção?Production-grade? ClassificaçãoRating
11 Aproveitando o endereço IP frontend(es) de um Balanceador de Carga para saída através de regras de saídaLeveraging the frontend IP address(es) of a Load Balancer for outbound via Outbound rules Estática, explícitaStatic, explicit Sim, mas não na escala.Yes, but not at scale OKOK
22 Associando uma porta de entrada NAT para a sub-redeAssociating a NAT gateway to the subnet Estática, explícitaStatic, explicit YesYes MelhorBest
33 Atribuir um IP público à Máquina VirtualAssigning a Public IP to the Virtual Machine Estática, explícitaStatic, explicit YesYes OKOK
44 Aproveitando o endereço IP frontend(es) de um Balanceador de Carga para saída (e entrada)Leveraging the frontend IP address(es) of a Load Balancer for outbound (and inbound) Padrão, implícitoDefault, implicit NoNo PiorWorst

Aproveitando o endereço IP frontend de um Balanceador de Carga para saída através de regras de saídaLeveraging the frontend IP address of a Load Balancer for outbound via Outbound rules

As regras de saída permitem-lhe definir explicitamente o SNAT (tradução de endereços de rede de origem) para um balanceador de carga pública standard.Outbound rules enable you to explicitly define SNAT (source network address translation) for a Standard public load balancer. Esta configuração permite-lhe utilizar o IP(s) público do seu balanceador de carga para fornecer conectividade de saída à Internet para as suas instâncias de backend.This configuration allows you to use the public IP(s) of your load balancer to provide outbound internet connectivity for your backend instances.

Esta configuração permite:This configuration enables:

  • Disfarçado de IPIP masquerading
  • Simplificando as suas listas de admissões.Simplifying your allowlists.
  • Reduz o número de recursos IP públicos para implantaçãoReduces the number of public IP resources for deployment

Com as regras de saída, você tem total controlo declarativo sobre a conectividade de saída da Internet.With outbound rules, you have full declarative control over outbound internet connectivity. As regras de saída permitem-lhe escalar e afinar esta capacidade às suas necessidades específicas.Outbound rules allow you to scale and tune this ability to your specific needs.

Para obter mais informações sobre as regras de saída, consulte as regras de saída.For more information about outbound rules, see Outbound rules.

Associando um VNet NAT à sub-redeAssociating a VNet NAT to the subnet

A Rede Virtual NAT simplifica a conectividade de saída da Internet apenas para redes virtuais.Virtual Network NAT simplifies outbound-only Internet connectivity for virtual networks. Quando configurados numa sub-rede, toda a conectividade de saída utiliza os seus endereços IP públicos estáticos especificados.When configured on a subnet, all outbound connectivity uses your specified static public IP addresses. A conectividade de saída é possível sem o balanceador de carga ou endereços IP públicos diretamente ligados a máquinas virtuais.Outbound connectivity is possible without load balancer or public IP addresses directly attached to virtual machines. O NAT é totalmente gerido e altamente resistente.NAT is fully managed and highly resilient.

A utilização de um VNet NAT é o melhor método para a conectividade de saída, uma vez que é altamente escalável, fiável e não tem os concertos no que diz respeito à exaustão da porta SNAT.Using a VNet NAT is the best method for outbound connectivity as it is highly scalable, reliable and doesn't have the concerts with respect to SNAT port exhaustion.

Para obter mais informações sobre a Rede Virtual Azure NAT, consulte o que é Azure Virtual Network NAT.For more information about Azure Virtual Network NAT, see What is Azure Virtual Network NAT.

Atribuir um IP público à Máquina VirtualAssigning a Public IP to the Virtual Machine

AssociaçõesAssociations MétodoMethod Protocolos IPIP protocols
Equilibrador de carga pública ou autónomoPublic load balancer or stand-alone SNAT (Tradução de endereços de rede de origem)SNAT (Source Network Address Translation)
não é usado.is not used.
TCP (Protocolo de Controlo de Transmissão)TCP (Transmission Control Protocol)
UDP (Protocolo de Datagrama do Utilizador)UDP (User Datagram Protocol)
ICMP (Protocolo de Mensagem de Controlo de Internet)ICMP (Internet Control Message Protocol)
ESP (Encapsulamento da Carga útil de segurança)ESP (Encapsulating Security Payload)

Todo o tráfego regressará ao cliente solicitado a partir do endereço IP público da máquina virtual (Exemplo Nível IP).All traffic will return to the requesting client from the virtual machine's public IP address (Instance Level IP).

O Azure utiliza o IP público atribuído à configuração IP do NIC da instância para todos os fluxos de saída.Azure uses the public IP assigned to the IP configuration of the instance's NIC for all outbound flows. O caso tem todas as portas efémeras disponíveis.The instance has all ephemeral ports available. Não importa se o VM é equilibrado ou não.It doesn't matter whether the VM is load balanced or not. Este cenário tem precedência sobre os outros.This scenario takes precedence over the others.

Um IP público atribuído a um VM é uma relação 1:1 (em vez de 1: muitos) e implementado como um APÁtrida 1:1 NAT.A public IP assigned to a VM is a 1:1 relationship (rather than 1: many) and implemented as a stateless 1:1 NAT.

Aproveitando o endereço IP frontend de um Balanceador de Carga para saída (e entrada)Leveraging the frontend IP address of a Load Balancer for outbound (and inbound)

Nota

Este método NÃO é recomendado para cargas de trabalho de produção, uma vez que adiciona risco de exaustão das portas.This method is NOT recommended for production workloads as it adds risk of exhausting ports. Por favor, abstenha-se de utilizar este método para cargas de trabalho de produção para evitar possíveis falhas de ligação.Please refrain from using this method for production workloads to avoid potential connection failures.

Se os recursos de backend de um Balanceador de Carga não tiverem regras de saída, endereços IP públicos de nível de instância ou uma CONFIGURAÇÃO VNet NAT, estabelecem conectividade de saída através do IP frontal do equilibrador de carga.If the backend resources of a Load Balancer do not have outbound rules, instance level public IP addresses or a VNet NAT configured, they establish outbound connectivity via the frontend IP of the load balancer. Isto é conhecido como SNAT padrão.This is known as default SNAT.

O que são portas SNAT?What are SNAT ports?

As portas são usadas para gerar identificadores únicos usados para manter fluxos distintos.Ports are used to generate unique identifiers used to maintain distinct flows. A internet usa um cinco tuple para fornecer esta distinção.The internet uses a five-tuple to provide this distinction.

Se uma porta for utilizada para ligações de entrada, tem um ouvinte para pedidos de ligação de entrada nessa porta.If a port is used for inbound connections, it has a listener for inbound connection requests on that port. Aquela porta não pode ser usada para ligações de saída.That port can't be used for outbound connections. Para estabelecer uma ligação de saída, é utilizado um porto efémero para fornecer ao destino um porto para comunicar e manter um fluxo de tráfego distinto.To establish an outbound connection, an ephemeral port is used to provide the destination with a port on which to communicate and maintain a distinct traffic flow. Quando estas portas efémeras são usadas para snat, são chamadas portas SNATWhen these ephemeral ports are used for SNAT, they're called SNAT ports

Por definição, cada endereço IP tem 65.535 portas.By definition, every IP address has 65,535 ports. Cada porta pode ser utilizada para ligações de entrada ou saída para TCP (Protocolo de Controlo de Transmissão) e UDP (User Datagram Protocol).Each port can either be used for inbound or outbound connections for TCP (Transmission Control Protocol) and UDP (User Datagram Protocol). Quando um endereço IP público é adicionado como um FRONTend IP a um balanceador de carga, a Azure dá 64.000 portas elegíveis para SNAT.When a public IP address is added as a frontend IP to a load balancer, Azure gives 64,000 ports that are eligible for SNAT.

Cada porta utilizada para uma regra de equilíbrio de carga ou de entrada da NAT consumirá uma gama de oito portas destes 64.000 portos, reduzindo o número de portos elegíveis para o SNAT.Each port used for a load balancing or inbound NAT rule will consume a range of eight ports from these 64,000 ports, reducing the number of ports eligible for SNAT. Se uma regra NAT de equilíbrio de carga ou de entrada estiver na mesma gama de oito que outra, não consumirá portas adicionais.If a load-balancing or inbound NAT rule is in the same range of eight as another it will consume no additional ports.

Como funciona o SNAT predefinido?How does default SNAT work?

Quando um VM cria um fluxo de saída, o Azure traduz o endereço IP de origem para o endereço IP público do frontend do balançador de carga pública.When a VM creates an outbound flow, Azure translates the source IP address to the public IP address of the public load balancer frontend. Esta tradução é feita via SNAT.This translation is done via SNAT.

Se utilizar o SNAT predefinido através de uma regra de equilíbrio de carga, as portas SNAT são pré-atribuídas conforme descrito no quadro de atribuição de portas SNAT predefinido.If using default SNAT through a load-balancing rule, SNAT ports are pre-allocated as described in the Default SNAT ports allocation table.

Ao utilizar um balanceador de carga interno padrão, não existe a utilização de endereços IP efémeros para O SNAT.When using a Standard Internal load balancer, there isn't use of ephemeral IP addresses for SNAT. Esta funcionalidade suporta a segurança por defeito.This feature supports security by default. Esta funcionalidade garante que todos os endereços IP utilizados pelos recursos são configuráveis e podem ser reservados.This feature ensures all IP addresses used by resources are configurable and can be reserved. Para conseguir a conectividade de saída com a internet ao utilizar um balanceador de carga interno Standard, configuure:To achieve outbound connectivity to the internet when using a Standard internal load balancer, configure:

  • um endereço IP público de nível de instânciaan instance level public IP address
  • VNet NATVNet NAT
  • instâncias de backend para um balanceador de carga pública standard com uma regra de saída configurada.backend instances to a Standard public load balancer with an outbound rule configured.

O que é o IP para SNAT predefinido?What is the IP for default SNAT?

Quando o VM cria um fluxo de saída, o Azure traduz o endereço IP de origem para um endereço IP de fonte pública dinamicamente dado.When the VM creates an outbound flow, Azure translates the source IP address to a dynamically given public source IP address. Este endereço IP público não é configurável e não pode ser reservado.This public IP address isn't configurable and can't be reserved. Este endereço não conta com o limite de recursos IP públicos da subscrição.This address doesn't count against the subscription's public IP resource limit.

O endereço IP público será divulgado e um novo IP público solicitado se recolocar o:The public IP address will be released and a new public IP requested if you redeploy the:

  • Máquina VirtualVirtual Machine
  • Conjunto de disponibilidadeAvailability set
  • Conjuntos de dimensionamento de máquinas virtuaisVirtual machine scale set

Nota

Este método NÃO é recomendado para cargas de trabalho de produção, uma vez que adiciona risco de exaustão das portas.This method is NOT recommended for production workloads as it adds risk of exhausting ports. Por favor, abstenha-se de utilizar este método para cargas de trabalho de produção para evitar possíveis falhas de ligação.Please refrain from using this method for production workloads to avoid potential connection failures.

TipoType Comportamento de saídaOutbound behavior
Balanceador de carga pública padrãoStandard Public Load balancer Utilização de IPs frontend do balançador de carga para SNATUse of load balancer frontend IPs for SNAT
Balanceador de carga interna padrãoStandard Internal Load balancer Sem conectividade de internet, seguro por padrãoNo internet connectivity, secure by default
Balanceador básico de carga públicaBasic Public Load balancer Utilização de IPs frontend do balançador de carga para SNATUse of load balancer frontend IPs for SNAT
Balanceador de carga interna básicoBasic Internal Load balancer SNAT com endereço IP dinâmico desconhecidoSNAT with unknown dynamic IP address

Portas exaustivasExhausting ports

Todas as ligações ao mesmo destino IP e porto de destino usarão uma porta SNAT.Every connection to the same destination IP and destination port will use a SNAT port. Esta ligação mantém um fluxo de tráfego distinto da instância de backend ou cliente para um servidor.This connection maintains a distinct traffic flow from the backend instance or client to a server. Este processo dá ao servidor uma porta distinta para abordar o tráfego.This process gives the server a distinct port on which to address traffic. Sem este processo, a máquina cliente desconhece de que fluxo um pacote faz parte.Without this process, the client machine is unaware of which flow a packet is part of.

Imagine ter vários navegadores https://www.microsoft.com indo, que é:Imagine having multiple browsers going to https://www.microsoft.com, which is:

  • Destino IP = 23.53.254.142Destination IP = 23.53.254.142
  • Porto de Destino = 443Destination Port = 443
  • Protocolo = TCPProtocol = TCP

Sem diferentes portas de destino para o tráfego de retorno (a porta SNAT utilizada para estabelecer a ligação), o cliente não terá forma de separar um resultado de consulta de outro.Without different destination ports for the return traffic (the SNAT port used to establish the connection), the client will have no way to separate one query result from another.

As ligações de saída podem rebentar.Outbound connections can burst. Uma instância de backend pode ser atribuída portos insuficientes.A backend instance can be allocated insufficient ports. Sem a reutilização da ligação ativada, o risco de exaustão portuária SNAT é aumentado.Without connection reuse enabled, the risk of SNAT port exhaustion is increased.

Novas ligações de saída para um IP de destino falharão quando ocorrer a exaustão do porto.New outbound connections to a destination IP will fail when port exhaustion occurs. As ligações terão sucesso quando uma porta estiver disponível.Connections will succeed when a port becomes available. Este esgotamento ocorre quando as 64.000 portas de um endereço IP são espalhadas finamente em muitas instâncias de backend.This exhaustion occurs when the 64,000 ports from an IP address are spread thin across many backend instances. Para obter orientações sobre a mitigação da exaustão do porto SNAT, consulte o guia de resolução de problemas.For guidance on mitigation of SNAT port exhaustion, see the troubleshooting guide.

Para as ligações TCP, o equilibrador de carga utilizará uma única porta SNAT para cada destino IP e porta.For TCP connections, the load balancer will use a single SNAT port for every destination IP and port. Este multiuso permite múltiplas ligações ao mesmo destino IP com a mesma porta SNAT.This multiuse enables multiple connections to the same destination IP with the same SNAT port. Este multiuso é limitado se a ligação não for para diferentes portas de destino.This multiuse is limited if the connection isn't to different destination ports.

Para ligações UDP, o balanceador de carga utiliza um algoritmo NAT cone restrito por porta, que consome uma porta SNAT por destino IP qualquer que seja a porta de destino.For UDP connections, the load balancer uses a port-restricted cone NAT algorithm, which consumes one SNAT port per destination IP whatever the destination port.

Uma porta é reutilizada para um número ilimitado de ligações.A port is reused for an unlimited number of connections. A porta só é reutilizada se o destino IP ou porta for diferente.The port is only reused if the destination IP or port is different.

Alocação portuária predefinidoDefault port allocation

Cada IP público atribuído como um IP frontal do seu balanceador de carga recebe 64.000 portas SNAT para os seus membros de pool backend.Each public IP assigned as a frontend IP of your load balancer is given 64,000 SNAT ports for its backend pool members. Os portos não podem ser partilhados com membros da piscina de backend.Ports can't be shared with backend pool members. Uma gama de portas SNAT só pode ser utilizada por uma única instância de backend para garantir que os pacotes de devolução são encaminhados corretamente.A range of SNAT ports can only be used by a single backend instance to ensure return packets are routed correctly.

Se utilizar a atribuição automática de SNAT de saída através de uma regra de equilíbrio de carga, a tabela de atribuição definirá a sua atribuição portuária.Should you use the automatic allocation of outbound SNAT through a load-balancing rule, the allocation table will define your port allocation.

A tabela a seguir mostra as pré-aallocations da porta SNAT para níveis de tamanhos de piscina de backend:The following table shows the SNAT port preallocations for tiers of backend pool sizes:

Tamanho da piscina (instâncias VM)Pool size (VM instances) Portas SNAT predefinidos por configuração IPDefault SNAT ports per IP configuration
1-501-50 1,0241,024
51-10051-100 512512
101-200101-200 256256
201-400201-400 128128
401-800401-800 6464
801-1,000801-1,000 3232

RestriçõesConstraints

  • Quando uma ligação é inativa sem que sejam enviados novos pacotes, as portas serão libertadas após 4 a 120 minutos.When a connection is idle with no new packets being sent, the ports will be released after 4 – 120 minutes.
  • Este limiar pode ser configurado através de regras de saída.This threshold can be configured via outbound rules.
  • Cada endereço IP fornece 64.000 portas que podem ser usadas para SNAT.Each IP address provides 64,000 ports that can be used for SNAT.
  • Cada porta pode ser utilizada tanto para ligações TCP como UDP para um endereço IP de destinoEach port can be used for both TCP and UDP connections to a destination IP address
  • É necessária uma porta UDP SNAT se a porta de destino é única ou não.A UDP SNAT port is needed whether the destination port is unique or not. Para cada ligação UDP a um IP de destino, é utilizada uma porta UDP SNAT.For every UDP connection to a destination IP, one UDP SNAT port is used.
  • Uma porta TCP SNAT pode ser usada para múltiplas ligações ao mesmo destino IP, desde que as portas de destino sejam diferentes.A TCP SNAT port can be used for multiple connections to the same destination IP provided the destination ports are different.
  • A exaustão do SNAT ocorre quando uma instância de backend se esgota de determinadas portas SNAT.SNAT exhaustion occurs when a backend instance runs out of given SNAT Ports. Um equilibrador de carga ainda pode ter portas SNAT não uusadas.A load balancer can still have unused SNAT ports. Se as portas SNAT utilizadas por uma instância de backend excederem as portas SNAT dadas, não será possível estabelecer novas ligações de saída.If a backend instance’s used SNAT ports exceed its given SNAT ports, it will be unable to establish new outbound connections.

Passos seguintesNext steps