Uso de SNAT para conexiones salientesUsing SNAT for outbound connections

Las direcciones IP de front-end de un equilibrador de carga público de Azure se pueden usar para proporcionar conectividad saliente a Internet para las instancias de back-end.The frontend IPs of an Azure public load balancer can be used to provide outbound connectivity to the internet for backend instances. Esta configuración usa traducción de direcciones de red de origen (SNAT) .This configuration uses source network address translation (SNAT). SNAT reescribe la dirección IP del back-end en la IP pública del equilibrador de carga.SNAT rewrites the IP address of the backend to the public IP address of your load balancer.

SNAT habilita el enmascaramiento de IP de la instancia de back-end.SNAT enables IP masquerading of the backend instance. Esta enmascaramiento impide que los orígenes externos tengan una dirección directa a las instancias de back-end.This masquerading prevents outside sources from having a direct address to the backend instances. El hecho de compartir una dirección IP entre instancias de back-end reduce el costo de las direcciones IP públicas estáticas y admite escenarios como la simplificación de listas de direcciones IP permitidas con tráfico procedente de direcciones IP públicas conocidas.Sharing an IP address between backend instances reduces the cost of static public IPs and supports scenarios such as simplifying IP allow lists with traffic from known public IPs.

Nota

En el caso de las aplicaciones que requieren un gran número de conexiones salientes, o de los clientes empresariales que requieren un único conjunto de direcciones IP para usarse desde una red virtual determinada, Virtual Network NAT es la solución recomendada.For applications with that require large numbers of outbound connections or enterprise customers who require a single set of IPs to be used from a given virtual network, Virtual Network NAT is the recommended solution. La asignación dinámica permite una configuración simple y el uso más eficaz de los puertos SNAT desde cada dirección IP.It's dynamic allocation allows for simple configuration and > the most efficient use of SNAT ports from each IP address. También permite que todos los recursos de la red virtual compartan un conjunto de direcciones IP sin necesidad de compartir un equilibrador de carga.It also allows all resources in the virtual network to share a set of IP addresses without a need for them to share > a load balancer.

Importante

Incluso sin la configuración de SNAT saliente, aún podrá acceder a las cuentas de Azure Storage dentro de la misma región, y los recursos de back-end seguirán teniendo acceso a los servicios de Microsoft, como las actualizaciones de Windows.Even without outbound SNAT configured, Azure storage accounts within the same region will still be accessible and backend resources will still have access to Microsoft services such as Windows Updates.

Nota

Este artículo trata solo sobre las implementaciones de Azure Resource Manager.This article covers Azure Resource Manager deployments only. Revise Conexiones salientes (clásico) para todos los escenarios de implementación clásicos de Azure.Review Outbound connections (Classic) for all Classic deployment scenarios in Azure.

Uso compartido de la dirección IP de front-end entre recursos de back-endSharing frontend IP address across backend resources

Si los recursos de back-end de un equilibrador de carga no tienen direcciones IP públicas a nivel de instancia (ILPIP), establecen conectividad saliente a través de la IP de front-end del equilibrador de carga público.If the backend resources of a load balancer don't have instance-level public IP (ILPIP) addresses, they establish outbound connectivity via the frontend IP of the public load balancer. Se usan puertos para generar identificadores únicos que se emplean para mantener flujos distintos.Ports are used to generate unique identifiers used to maintain distinct flows. Internet usa una tupla de cinco elementos para proporcionar esta distinción.The internet uses a five-tuple to provide this distinction.

La tupla de cinco elementos consta de:The five-tuple consists of:

  • IP de destinoDestination IP
  • Puerto de destinoDestination port
  • IP de origenSource IP
  • Puerto y protocolo de origen para proporcionar esta distinción.Source port and protocol to provide this distinction.

Si se usa un puerto para las conexiones entrantes, tendrá un agente de escucha para las solicitudes de conexión entrantes en ese puerto y no se puede usar para las conexiones salientes.If a port is used for inbound connections, it will have a listener for inbound connection requests on that port and cannot be used for outbound connections. Para establecer una conexión saliente, se debe usar un puerto efímero para proporcionar al destino un puerto con el que comunicarse y mantener un flujo de tráfico distinto.To establish an outbound connection, an ephemeral port must be used to provide the destination with a port on which to communicate and maintain a distinct traffic flow. Cuando estos puertos efímeros se usan para realizar la traducción SNAT, se denominan puertos SNAT.When these ephemeral ports are used to perform SNAT they are called SNAT ports

Por definición, todas las direcciones IP tienen 65 535 puertos.By definition, every IP address has 65,535 ports. Cada puerto puede usarse para conexiones de entrada o salida para TCP (protocolo de control de transmisión) y UDP (protocolo de datagramas de usuario).Each port can either be used for inbound or outbound connections for TCP(Transmission Control Protocol) and UDP(User Datagram Protocol). Cuando se agrega una dirección IP pública como una dirección IP de front-end a un equilibrador de carga, Azure ofrece 64 000 direcciones válidas para usarse como puertos SNAT.When a public IP address is added as a frontend IP to a load balancer, Azure gives 64,000 eligible for use as SNAT ports.

Nota

Cada puerto que se usa para una regla NAT de entrada o de equilibrio de carga consumirá un intervalo de ocho puertos de estos 64 000 puertos, lo que reduce el número de puertos que son válidos para 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. Si una regla NAT o de equilibrio de carga está en el mismo intervalo de ocho puertos que otra regla, no consumirá puertos adicionales.If a load-> balancing or nat rule is in the same range of eight as another it will consume no additional ports.

A través de las reglas de salida y de equilibrio de carga, estos puertos SNAT se pueden distribuir a instancias de back-end para permitirles compartir las IP públicas del equilibrador de carga para las conexiones salientes.Through outbound rules and load-balancing rules, these SNAT ports can be distributed to backend instances to enable them to share the public IPs of the load balancer for outbound connections.

Cuando el escenario 2 a continuación esté configurado, el host de cada instancia de back-end realizará la traducción SNAT en los paquetes que forman parte de una conexión saliente.When scenario 2 below is configured, the host for each backend instance will perform SNAT on packets that are part of an outbound connection. Al realizar la traducción SNAT en una conexión de salida desde una instancia de back-end, el host reescribe la dirección IP de origen en una de las direcciones IP de front-end.When performing SNAT on an outbound connection from a backend instance, the host rewrites the source IP to one of the frontend IPs. Para mantener flujos únicos, el host reescribe el puerto de origen de cada paquete de salida en uno de los puertos SNAT asignados a la instancia de back-end.To maintain unique flows, the host rewrites the source port of each outbound packet to one of the SNAT ports allocated for the backend instance.

Comportamiento de la conexión de salida en diferentes escenariosOutbound connection behavior for different scenarios

  • Máquina virtual con dirección IP pública.Virtual machine with public IP.
  • Máquina virtual sin dirección IP pública.Virtual machine without public IP.
  • Máquina virtual sin dirección IP pública y sin Standard Load Balancer.Virtual machine without public IP and without standard load balancer.

Escenario 1: Máquina virtual con dirección IP públicaScenario 1: Virtual machine with public IP

AsociacionesAssociations MétodoMethod Protocolos IPIP protocols
Equilibrador de carga público o independientePublic load balancer or stand-alone SNAT (traducción de direcciones de red de origen)SNAT (Source Network Address Translation)
No se usa.not used.
TCP (protocolo de control de transmisión)TCP (Transmission Control Protocol)
UDP (protocolo de datagramas de usuario)UDP (User Datagram Protocol)
ICMP (protocolo de mensajes de control de Internet)ICMP (Internet Control Message Protocol)
ESP (carga de seguridad encapsuladora)ESP (Encapsulating Security Payload)

DescripciónDescription

Azure usa la dirección IP pública asignada a la configuración IP de la NIC de la instancia para todos los flujos de salida.Azure uses the public IP assigned to the IP configuration of the instance's NIC for all outbound flows. La instancia tiene disponibles todos los puertos efímeros.The instance has all ephemeral ports available. Es irrelevante si la máquina virtual es de carga equilibrada o no.It doesn't matter whether the VM is load balanced or not. Este escenario tiene prioridad sobre las demás.This scenario takes precedence over the others.

Una dirección IP pública asignada a una máquina virtual es una relación 1:1 (en lugar de 1:muchos) y se implementa como NAT de 1:1 sin estado.A public IP assigned to a VM is a 1:1 relationship (rather than 1: many) and implemented as a stateless 1:1 NAT.

Escenario 2: Máquina virtual sin dirección IP pública y detrás de una instancia pública de Standard Load BalancerScenario 2: Virtual machine without public IP and behind Standard public Load Balancer

AsociacionesAssociations MétodoMethod Protocolos IPIP protocols
Equilibrador de carga públicoPublic load balancer Uso de direcciones IP de front-end del equilibrador de carga para SNAT.Use of load balancer frontend IPs for SNAT. TCPTCP
UDPUDP

DescripciónDescription

El recurso del equilibrador de carga se configura con una regla de salida o una regla de equilibrio de carga que habilita un valor predeterminado de SNAT.The load balancer resource is configured with an outbound rule or a load-balancing rule that enables default SNAT. Esta regla se usa para crear un vínculo entre el front-end de la dirección IP pública y el grupo de back-end.This rule is used to create a link between the public IP frontend with the backend pool.

Si no configura esta regla, el comportamiento será el que se describe en el escenario 3.If you don't complete this rule configuration, the behavior is as described in scenario 3.

No se necesita una regla con un agente de escucha para que el sondeo de estado se realice correctamente.A rule with a listener isn't required for the health probe to succeed.

Cuando una máquina virtual crea un flujo de salida, Azure traduce la dirección IP de origen a la dirección IP pública del front-end público del equilibrador de carga.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 traducción se realiza a través de SNAT.This translation is done via SNAT.

Para distinguir los flujos individuales que se originan en la máquina virtual, se usan puertos efímeros de la dirección IP pública de front-end del equilibrador de carga.Ephemeral ports of the load balancer frontend public IP address are used to distinguish individual flows originated by the VM. Cuando se crean flujos de salida, SNAT usa dinámicamente los puertos efímeros asignados previamente.SNAT dynamically uses preallocated ephemeral ports when outbound flows are created.

En este contexto, los puertos efímeros usados para SNAT se conocen como puertos SNAT.In this context, the ephemeral ports used for SNAT are called SNAT ports. Se recomienda configurar explícitamente una regla de salida.It is highly recommended that an outbound rule is explicitly configured. Si usa el valor predeterminado de SNAT en una regla de equilibrio de carga, los puertos SNAT se asignan previamente, como se describe en la tabla de asignación de puertos SNAT predeterminados.If using default SNAT through a load-balancing rule, SNAT ports are pre-allocated as described in the Default SNAT ports allocation table.

Escenario 3: Máquina virtual sin dirección IP pública y detrás de una versión Básica de Load BalancerScenario 3: Virtual machine without public IP and behind Basic Load Balancer

AsociacionesAssociations MétodoMethod Protocolos IPIP protocols
NoneNone
Versión Básica de Load BalancerBasic load balancer
SNAT con una dirección IP dinámica en el nivel de instanciaSNAT with instance-level dynamic IP address TCPTCP
UDPUDP

DescripciónDescription

Cuando la máquina virtual crea un flujo de salida, Azure traduce la dirección IP de origen a una dirección IP de origen pública asignada dinámicamente.When the VM creates an outbound flow, Azure translates the source IP address to a dynamically allocated public source IP address. Esta dirección IP pública no se puede configurar y no se puede reservar.This public IP address isn't configurable and can't be reserved. Esta dirección no cuenta para el límite de recursos de dirección IP pública de la suscripción.This address doesn't count against the subscription's public IP resource limit.

Se liberará la dirección IP pública y se solicitará una nueva dirección IP pública si vuelve a implementar alguno de los siguientes:The public IP address will be released and a new public IP requested if you redeploy the:

  • Máquina virtualVirtual Machine
  • Conjunto de disponibilidadAvailability set
  • Conjunto de escalado de máquina virtualVirtual machine scale set

No use este escenario para agregar direcciones IP a una lista de permitidos.Don't use this scenario for adding IPs to an allow list. Use el escenario 1 o 2, donde se declara explícitamente el comportamiento de salida.Use scenario 1 or 2 where you explicitly declare outbound behavior. Los puertos SNAT se asignan previamente, como se describe en la tabla de asignación de puertos SNAT predeterminados.SNAT ports are preallocated as described in the Default SNAT ports allocation table.

Agotamiento de puertosExhausting ports

Cada conexión a la misma dirección IP de destino y puerto de destino usará un puerto SNAT.Every connection to the same destination IP and destination port will use a SNAT port. Esta conexión mantiene un flujo de tráfico distinto desde la instancia de back-end o cliente a un servidor.This connection maintains a distinct traffic flow from the backend instance or client to a server. Este proceso proporciona al servidor un puerto distinto en el que dirigir el tráfico.This process gives the server a distinct port on which to address traffic. Sin este proceso, el equipo cliente no sabe a qué flujo pertenece un paquete.Without this process, the client machine is unaware of which flow a packet is part of.

Imagine que varios exploradores van a https://www.microsoft.com, que tiene los valores siguientes:Imagine having multiple browsers going to https://www.microsoft.com, which is:

  • Dirección IP de destino = 23.53.254.142Destination IP = 23.53.254.142
  • Puerto de destino = 443Destination Port = 443
  • Protocolo = TCPProtocol = TCP

Sin puertos de destino diferentes para el tráfico de retorno (el puerto SNAT usado para establecer la conexión), el cliente no tendrá forma de separar el resultado de una consulta de otro.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.

Las conexiones salientes pueden aumentar.Outbound connections can burst. Una instancia de back-end podría tener asignados puertos insuficientes.A backend instance can be allocated insufficient ports. Si la reutilización de conexiones no está habilitada, aumenta el riesgo de agotamiento de puertos SNAT.Without connection reuse enabled, the risk of SNAT port exhaustion is increased.

Se producirá un error en las nuevas conexiones salientes a una dirección IP de destino cuando se agoten los puertos.New outbound connections to a destination IP will fail when port exhaustion occurs. Las conexiones se realizarán correctamente cuando esté disponible un puerto.Connections will succeed when a port becomes available. Este agotamiento se produce cuando los 64 000 puertos de una dirección IP se distribuyen entre muchas instancias de back-end.This exhaustion occurs when the 64,000 ports from an IP address are spread thin across many backend instances. Para obtener instrucciones sobre la mitigación del agotamiento de puertos SNAT, consulte la guía de solución de problemas.For guidance on mitigation of SNAT port exhaustion, see the troubleshooting guide.

En el caso de las conexiones TCP, el equilibrador de carga usará un solo puerto SNAT para cada IP y puerto de destino.For TCP connections, the load balancer will use a single SNAT port for every destination IP and port. Este uso múltiple permite varias conexiones a la misma dirección IP de destino con el mismo puerto SNAT,This multiuse enables multiple connections to the same destination IP with the same SNAT port. pero se limita si la conexión no es a puertos de destino diferentes.This multiuse is limited if the connection isn't to different destination ports.

En el caso de las conexiones UDP, el equilibrador de carga usa un algoritmo de NAT de cono con restricción de puerto, que consume un puerto SNAT por cada IP de destino, sea cual sea el puerto 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.

Un puerto se reutiliza para un número ilimitado de conexiones.A port is reused for an unlimited number of connections. El puerto solo se reutiliza si la dirección IP o puerto de destino son diferentes.The port is only reused if the destination IP or port is different.

Asignación de puertos predeterminadosDefault port allocation

A cada dirección IP pública asignada como IP de front-end del equilibrador de carga se le proporcionan 64 000 puertos SNAT para sus miembros del grupo de back-end.Each public IP assigned as a frontend IP of your load balancer is given 64,000 SNAT ports for its backend pool members. Los puertos no se pueden compartir con miembros del grupo de back-end.Ports can't be shared with backend pool members. Un intervalo de puertos SNAT solo lo puede usar una única instancia de back-end para garantizar que los paquetes devueltos se enruten correctamente.A range of SNAT ports can only be used by a single backend instance to ensure return packets are routed correctly.

Se recomienda usar una regla de salida explícita para configurar la asignación de puertos SNAT.It's recommended you use an explicit outbound rule to configure SNAT port allocation. Esta regla maximizará el número de puertos SNAT que cada instancia de back-end tiene disponible para las conexiones salientes.This rule will maximize the number of SNAT ports each backend instance has available for outbound connections.

Si usa la asignación automática de SNAT saliente a través de una regla de equilibrio de carga, la tabla de asignación definirá la asignación de los puertos.Should you use the automatic allocation of outbound SNAT through a load-balancing rule, the allocation table will define your port allocation.

En la tabla siguiente se muestran las asignaciones previas de puertos SNAT para los niveles de tamaño del grupo de back-end:The following table shows the SNAT port preallocations for tiers of backend pool sizes:

Tamaño del grupo (instancias de máquina virtual)Pool size (VM instances) Puertos SNAT asignados previamente por configuración IPPreallocated SNAT ports per IP configuration
1-501-50 10241,024
51-10051-100 512512
101-200101-200 256256
201-400201-400 128128
401-800401-800 6464
801-1000801-1,000 3232

Nota

Si tiene un grupo de back-end con un tamaño máximo de 10, cada instancia puede tener 64 000/10 = 6400 puertos si define una regla de salida explícita.If you have a backend pool with a max size of 10, each instance can have 64,000/10 = 6,400 ports if you define an explicit outbound rule. Según la tabla anterior, cada uno solo tendrá 1024 si elige la asignación automática.According to the above table each will only have 1,024 if you choose automatic allocation.

Reglas de salida y Virtual Network NATOutbound rules and Virtual Network NAT

Las reglas de salida de Azure Load Balancer y Virtual Network NAT son dos opciones disponibles para la salida desde una red virtual.Azure Load Balancer outbound rules and Virtual Network NAT are options available for egress from a virtual network.

Para obtener más información sobre las reglas de salida, consulte Reglas de salida.For more information about outbound rules, see Outbound rules.

Para obtener más información sobre Azure Virtual Network NAT, consulte ¿Qué es Azure Virtual Network NAT?For more information about Azure Virtual Network NAT, see What is Azure Virtual Network NAT.

RestriccionesConstraints

  • Cuando una conexión está inactiva y no se envían paquetes nuevos, los puertos se liberarán después de un intervalo entre 4 y 120 minutos.When a connection is idle with no new packets being sent, the ports will be released after 4 – 120 minutes.
  • Este umbral se puede configurar a través de reglas de salida.This threshold can be configured via outbound rules.
  • Cada dirección IP proporciona 64 000 puertos que se pueden usar para SNAT.Each IP address provides 64,000 ports that can be used for SNAT.
  • Cada puerto se puede usar para conexiones TCP y UDP con una dirección IP de destino.Each port can be used for both TCP and UDP connections to a destination IP address
  • Se necesita un puerto SNAT UDP tanto si el puerto de destino es único como si no.A UDP SNAT port is needed whether the destination port is unique or not. Para cada conexión UDP con una dirección IP de destino, se usa un puerto SNAT UDP.For every UDP connection to a destination IP, one UDP SNAT port is used.
  • Se puede usar un puerto SNAT TCP para varias conexiones con la misma dirección IP de destino, siempre que los puertos de destino sean diferentes.A TCP SNAT port can be used for multiple connections to the same destination IP provided the destination ports are different.
  • El agotamiento de SNAT se produce cuando una instancia de back-end se ejecuta fuera de los puertos SNAT establecidos.SNAT exhaustion occurs when a backend instance runs out of given SNAT Ports. Un equilibrador de carga puede tener puertos SNAT sin usar.A load balancer can still have unused SNAT ports. Si los puertos SNAT usados de una instancia de back-end superan sus puertos SNAT, no podrá establecer nuevas conexiones salientes.If a backend instance’s used SNAT ports exceed its given SNAT ports, it will be unable to establish new outbound connections.

Pasos siguientesNext steps