Uso di SNAT (Source Network Address Translation) per le connessioni in uscitaUsing Source Network Address Translation (SNAT) for outbound connections

Gli indirizzi IP front-end di un servizio di bilanciamento del carico pubblico di Azure possono essere usati per fornire connettività in uscita a Internet per le istanze back-end.The frontend IPs of an Azure public load balancer can be used to provide outbound connectivity to the internet for backend instances. Questa configurazione utilizza la Network Address Translation di origine (SNAT).This configuration uses source network address translation (SNAT). SNAT riscrive l'indirizzo IP del back-end nell'indirizzo IP pubblico del servizio di bilanciamento del carico.SNAT rewrites the IP address of the backend to the public IP address of your load balancer.

SNAT Abilita il mascheramento IP dell'istanza back-end.SNAT enables IP masquerading of the backend instance. Questo mascheramento impedisce alle origini esterne di avere un indirizzo diretto per le istanze back-end.This masquerading prevents outside sources from having a direct address to the backend instances. Un indirizzo IP condiviso tra le istanze di back-end riduce il costo degli indirizzi IP pubblici statici.An IP address shared between backend instances reduces the cost of static public IPs. Un indirizzo IP noto supporta scenari come la semplificazione dell'uso di IP consentiti con il traffico da indirizzi IP pubblici noti.A known IP address supports scenarios such as simplifying IP allowlist with traffic from known public IPs.

Nota

Per le applicazioni che richiedono un numero elevato di connessioni in uscita o clienti aziendali che richiedono un singolo set di indirizzi IP da usare da una determinata rete virtuale, la soluzione consigliata è la rete virtuale NAT .For applications 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. L'allocazione dinamica consente una configurazione semplice e l'uso più efficiente delle porte SNAT da ogni indirizzo IP.It's dynamic allocation allows for simple configuration and the most efficient use of SNAT ports from each IP address. Consente a tutte le risorse nella rete virtuale di condividere un set di indirizzi IP senza che sia necessario condividere un servizio di bilanciamento del carico.It 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

Anche senza la configurazione di SNAT in uscita, gli account di archiviazione di Azure all'interno della stessa area saranno ancora accessibili e le risorse back-end potranno comunque accedere ai servizi Microsoft, ad esempio gli aggiornamenti di 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

Questo articolo illustra solo le distribuzioni di Azure Resource Manager.This article covers Azure Resource Manager deployments only. Vedere Connessioni in uscita (versione classica) per tutti gli scenari di distribuzione classica in Azure.Review Outbound connections (Classic) for all Classic deployment scenarios in Azure.

Condivisione dell'indirizzo IP front-end tra risorse back-endSharing frontend IP address across backend resources

Se le risorse back-end di un servizio di bilanciamento del carico non hanno indirizzi IP pubblici a livello di istanza (ILPIP), stabiliscono connettività in uscita tramite l'IP front-end del servizio di bilanciamento del carico pubblico.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. Le porte vengono usate per generare identificatori univoci usati per mantenere flussi distinti.Ports are used to generate unique identifiers used to maintain distinct flows. Internet usa una tupla con cinque elementi per fornire questa distinzione.The internet uses a five-tuple to provide this distinction.

La tupla con cinque elementi è costituita da:The five-tuple consists of:

  • IP di destinazioneDestination IP
  • Porta di destinazioneDestination port
  • IP di origineSource IP
  • Porta di origine e protocollo per fornire questa distinzione.Source port and protocol to provide this distinction.

Se una porta viene utilizzata per le connessioni in ingresso, dispone di un listener per le richieste di connessione in ingresso su tale porta.If a port is used for inbound connections, it has a listener for inbound connection requests on that port. Questa porta non può essere usata per le connessioni in uscita.That port can't be used for outbound connections. Per stabilire una connessione in uscita, viene usata una porta temporanea per fornire la destinazione con una porta sulla quale comunicare e gestire un flusso di traffico 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 queste porte temporanee vengono usate per SNAT, sono denominate porte SNATWhen these ephemeral ports are used for SNAT, they're called SNAT ports

Per definizione, ogni indirizzo IP dispone di 65.535 porte.By definition, every IP address has 65,535 ports. Ogni porta può essere utilizzata per le connessioni in ingresso o in uscita per TCP (Transmission Control Protocol) 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 un indirizzo IP pubblico viene aggiunto come IP front-end a un servizio di bilanciamento del carico, Azure fornisce 64.000 porte idonee per 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.

Nota

Ogni porta usata per una regola di bilanciamento del carico o NAT in ingresso utilizzerà un intervallo di otto porte da queste porte 64.000, riducendo il numero di porte idonee per 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 una regola di bilanciamento del carico o NAT è nello stesso intervallo di otto come altro, non utilizzerà porte aggiuntive.If a load-balancing or nat rule is in the same range of eight as another it will consume no additional ports.

Tramite le regole in uscita e le regole di bilanciamento del carico, queste porte SNAT possono essere distribuite alle istanze back-end per consentire loro di condividere gli indirizzi IP pubblici del servizio di bilanciamento del carico per le connessioni in uscita.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.

Quando viene configurato lo scenario 2 seguente, l'host per ogni istanza di back-end SNAT i pacchetti che fanno parte di una connessione in uscita.When scenario 2 below is configured, the host for each backend instance will SNAT packets that are part of an outbound connection.

Quando si esegue SNAT in una connessione in uscita da un'istanza di back-end, l'host riscrive l'indirizzo IP di origine in uno degli IP front-end.When doing SNAT on an outbound connection from a backend instance, the host rewrites the source IP to one of the frontend IPs.

Per mantenere i flussi univoci, l'host riscrive la porta di origine di ogni pacchetto in uscita in una porta SNAT nell'istanza back-end.To maintain unique flows, the host rewrites the source port of each outbound packet to a SNAT port on the backend instance.

Comportamento delle connessioni in uscita per diversi scenariOutbound connection behavior for different scenarios

  • Macchina virtuale con indirizzo IP pubblico.Virtual machine with public IP.
  • Macchina virtuale senza indirizzo IP pubblico.Virtual machine without public IP.
  • Macchina virtuale senza IP pubblico e senza Load Balancer standard.Virtual machine without public IP and without standard load balancer.

Scenario 1: macchina virtuale con IP pubblicoScenario 1: Virtual machine with public IP

AssociazioniAssociations MetodoMethod Protocolli IPIP protocols
Servizio di bilanciamento del carico pubblico o autonomoPublic load balancer or stand-alone SNAT (origine Network Address Translation)SNAT (Source Network Address Translation)
non viene usata.not used.
TCP (Transmission Control Protocol)TCP (Transmission Control Protocol)
UDP (User Datagram Protocol)UDP (User Datagram Protocol)
ICMP (Internet Control Message Protocol)ICMP (Internet Control Message Protocol)
ESP (incapsulamento del payload di sicurezza)ESP (Encapsulating Security Payload)

DescrizioneDescription

Azure usa l'indirizzo IP pubblico assegnato alla configurazione IP della scheda di interfaccia di rete dell'istanza per tutti i flussi in uscita.Azure uses the public IP assigned to the IP configuration of the instance's NIC for all outbound flows. L'istanza ha tutte le porte temporanee disponibili.The instance has all ephemeral ports available. Non importa se la macchina virtuale è con carico bilanciato o meno.It doesn't matter whether the VM is load balanced or not. Questo scenario ha la precedenza rispetto agli altri.This scenario takes precedence over the others.

Un indirizzo IP pubblico assegnato a una macchina virtuale è una relazione 1:1, anziché 1:molti, e viene implementato come NAT 1:1 senza stato.A public IP assigned to a VM is a 1:1 relationship (rather than 1: many) and implemented as a stateless 1:1 NAT.

Scenario 2: macchina virtuale senza IP pubblico e dietro Load Balancer pubblico standardScenario 2: Virtual machine without public IP and behind Standard public Load Balancer

AssociazioniAssociations MetodoMethod Protocolli IPIP protocols
Servizio di bilanciamento del carico pubblico standardStandard public load balancer Uso degli indirizzi IP front-end del servizio di bilanciamento del carico per SNAT.Use of load balancer frontend IPs for SNAT. TCPTCP
UDPUDP

DescrizioneDescription

La risorsa del servizio di bilanciamento del carico è configurata con una regola in uscita o una regola di bilanciamento del carico che Abilita SNAT.The load balancer resource is configured with an outbound rule or a load-balancing rule that enables SNAT. Questa regola viene usata per creare un collegamento tra il front-end IP pubblico e il pool back-end.This rule is used to create a link between the public IP frontend with the backend pool.

Se non si completa questa configurazione della regola, il comportamento è come descritto nello scenario 3.If you don't complete this rule configuration, the behavior is as described in scenario 3.

Una regola con un listener non è necessaria affinché il probe di integrità abbia esito positivo.A rule with a listener isn't required for the health probe to succeed.

Quando una macchina virtuale crea un flusso in uscita, Azure converte l'indirizzo IP di origine nell'indirizzo IP pubblico del front-end pubblico del servizio di bilanciamento del carico.When a VM creates an outbound flow, Azure translates the source IP address to the public IP address of the public load balancer frontend. Questa traduzione viene eseguita tramite SNAT.This translation is done via SNAT.

Le porte temporanee dell'indirizzo IP pubblico front-end del servizio di bilanciamento del carico vengono usate per distinguere i singoli flussi originati dalla macchina virtuale.Ephemeral ports of the load balancer frontend public IP address are used to distinguish individual flows originated by the VM. SNAT usa dinamicamente le porte temporanee preallocate quando vengono creati i flussi in uscita.SNAT dynamically uses preallocated ephemeral ports when outbound flows are created.

In questo contesto le porte temporanee usate per SNAT sono dette porte SNAT.In this context, the ephemeral ports used for SNAT are called SNAT ports. È consigliabile che una regola in uscita sia configurata in modo esplicito.It's highly recommended that an outbound rule is explicitly configured. Se si usa SNAT predefinito tramite una regola di bilanciamento del carico, le porte SNAT vengono pre-allocate come descritto nella tabella di allocazione delle porte SNAT predefinite.If using default SNAT through a load-balancing rule, SNAT ports are pre-allocated as described in the Default SNAT ports allocation table.

Nota

La rete virtuale di Azure NAT può fornire connettività in uscita per le macchine virtuali senza la necessità di un servizio di bilanciamento del carico.Azure Virtual Network NAT can provide outbound connectivity for virtual machines without the need for a load balancer. Per ulteriori informazioni, vedere informazioni sulla rete virtuale di Azure NAT .See What is Azure Virtual Network NAT? for more information.

Scenario 3: macchina virtuale senza IP pubblico e dietro Load Balancer interno standardScenario 3: Virtual machine without public IP and behind Standard internal Load Balancer

AssociazioniAssociations MetodoMethod Protocolli IPIP protocols
Servizio di bilanciamento del carico interno standardStandard internal load balancer Nessuna connettività Internet.No internet connectivity. nessunoNone

DescrizioneDescription

Quando si usa un servizio di bilanciamento del carico interno standard, non è previsto l'uso di indirizzi IP temporanei per SNAT.When using a Standard internal load balancer, there isn't use of ephemeral IP addresses for SNAT. Questa funzionalità supporta la sicurezza per impostazione predefinita.This feature supports security by default. Questa funzionalità garantisce che tutti gli indirizzi IP usati dalle risorse siano configurabili e possono essere riservati.This feature ensures all IP addresses used by resources are configurable and can be reserved.

Per ottenere la connettività in uscita a Internet quando si usa un servizio di bilanciamento del carico interno standard, configurare un indirizzo IP pubblico a livello di istanza per seguire il comportamento nello scenario 1.To achieve outbound connectivity to the internet when using a Standard internal load balancer, configure an instance level public IP address to follow the behavior in scenario 1.

Un'altra opzione consiste nell'aggiungere le istanze back-end a un servizio di bilanciamento del carico pubblico standard con una regola in uscita configurata.Another option is to add the backend instances to a Standard public load balancer with an outbound rule configured. Le istanze back-end vengono aggiunte a un servizio di bilanciamento del carico interno per il bilanciamento del carico interno.The backend instances are added to an internal load balancer for internal load balancing. Questa distribuzione segue il comportamento nello scenario 2.This deployment follows the behavior in scenario 2.

Nota

La rete virtuale di Azure NAT può fornire connettività in uscita per le macchine virtuali senza la necessità di un servizio di bilanciamento del carico.Azure Virtual Network NAT can provide outbound connectivity for virtual machines without the need for a load balancer. Per ulteriori informazioni, vedere informazioni sulla rete virtuale di Azure NAT .See What is Azure Virtual Network NAT? for more information.

Scenario 4: macchina virtuale senza IP pubblico e dietro Load Balancer BasicScenario 4: Virtual machine without public IP and behind Basic Load Balancer

AssociazioniAssociations MetodoMethod Protocolli IPIP protocols
nessunoNone
Servizio di bilanciamento del carico di baseBasic load balancer
SNAT con indirizzo IP dinamico a livello di istanzaSNAT with instance-level dynamic IP address TCPTCP
UDPUDP

DescrizioneDescription

Quando la macchina virtuale crea un flusso in uscita, Azure converte l'indirizzo IP di origine in un indirizzo IP di origine pubblico specificato dinamicamente.When the VM creates an outbound flow, Azure translates the source IP address to a dynamically given public source IP address. Questo indirizzo IP pubblico non è configurabile e non può essere riservato.This public IP address isn't configurable and can't be reserved. Questo indirizzo non viene conteggiato rispetto al limite di risorse IP pubblico della sottoscrizione.This address doesn't count against the subscription's public IP resource limit.

L'indirizzo IP pubblico verrà rilasciato e verrà richiesto un nuovo indirizzo IP pubblico se si ridistribuisce:The public IP address will be released and a new public IP requested if you redeploy the:

  • Macchina virtualeVirtual Machine
  • Set di disponibilitàAvailability set
  • Set di scalabilità di macchine virtualiVirtual machine scale set

Non usare questo scenario per aggiungere indirizzi IP a un oggetto allow.Don't use this scenario for adding IPs to an allowlist. Usare lo scenario 1 o 2 in cui si dichiara in modo esplicito il comportamento in uscita.Use scenario 1 or 2 where you explicitly declare outbound behavior. Le porte SNAT vengono preallocate come descritto nella tabella di allocazione delle porte SNAT predefinite.SNAT ports are preallocated as described in the Default SNAT ports allocation table.

Porte esauriteExhausting ports

Ogni connessione allo stesso indirizzo IP di destinazione e alla stessa porta di destinazione userà una porta SNAT.Every connection to the same destination IP and destination port will use a SNAT port. Questa connessione mantiene un flusso di traffico distinto dall'istanza o dal client back-end a un server.This connection maintains a distinct traffic flow from the backend instance or client to a server. Questo processo fornisce al server una porta distinta su cui indirizzare il traffico.This process gives the server a distinct port on which to address traffic. Senza questo processo, il computer client non è a conoscenza del flusso di cui fa parte un pacchetto.Without this process, the client machine is unaware of which flow a packet is part of.

Si supponga di avere a che fare con più browser https://www.microsoft.com , ovvero:Imagine having multiple browsers going to https://www.microsoft.com, which is:

  • IP di destinazione = 23.53.254.142Destination IP = 23.53.254.142
  • Porta di destinazione = 443Destination Port = 443
  • Protocollo = TCPProtocol = TCP

Senza porte di destinazione diverse per il traffico di ritorno (la porta SNAT utilizzata per stabilire la connessione), il client non sarà in grado di separare il risultato di una query da un altro.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.

È possibile che le connessioni in uscita si rompano.Outbound connections can burst. Un'istanza back-end può essere allocata A porte insufficienti.A backend instance can be allocated insufficient ports. Senza il riutilizzo della connessione abilitato, viene aumentato il rischio di esaurimento delle porte SNAT.Without connection reuse enabled, the risk of SNAT port exhaustion is increased.

Le nuove connessioni in uscita a un IP di destinazione avranno esito negativo quando si verifica l'esaurimento delle porte.New outbound connections to a destination IP will fail when port exhaustion occurs. Quando una porta diventa disponibile, le connessioni vengono riuscite.Connections will succeed when a port becomes available. Questo esaurimento si verifica quando le porte 64.000 da un indirizzo IP sono distribuite in modo sottile in molte istanze di back-end.This exhaustion occurs when the 64,000 ports from an IP address are spread thin across many backend instances. Per istruzioni sulla mitigazione dell'esaurimento delle porte SNAT, vedere la Guida alla risoluzione dei problemi.For guidance on mitigation of SNAT port exhaustion, see the troubleshooting guide.

Per le connessioni TCP, il servizio di bilanciamento del carico userà una singola porta SNAT per ogni indirizzo IP e porta di destinazione.For TCP connections, the load balancer will use a single SNAT port for every destination IP and port. Questo multiuso consente più connessioni allo stesso indirizzo IP di destinazione con la stessa porta SNAT.This multiuse enables multiple connections to the same destination IP with the same SNAT port. Questa multiuso è limitata se la connessione non è a porte di destinazione diverse.This multiuse is limited if the connection isn't to different destination ports.

Per le connessioni UDP, il servizio di bilanciamento del carico usa un algoritmo NAT cono con restrizioni di porta , che usa una porta SNAT per ogni indirizzo IP di destinazione, indipendentemente dalla porta di destinazione.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.

Una porta viene riutilizzata per un numero illimitato di connessioni.A port is reused for an unlimited number of connections. La porta viene riutilizzata solo se la porta o l'indirizzo IP di destinazione è diverso.The port is only reused if the destination IP or port is different.

Allocazione porta predefinitaDefault port allocation

A ogni indirizzo IP pubblico assegnato come IP front-end del servizio di bilanciamento del carico vengono concesse 64.000 porte SNAT per i membri del pool 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. Non è possibile condividere le porte con i membri del pool back-end.Ports can't be shared with backend pool members. Un intervallo di porte SNAT può essere usato solo da una singola istanza di back-end per garantire che i pacchetti restituiti vengano instradati correttamente.A range of SNAT ports can only be used by a single backend instance to ensure return packets are routed correctly.

Si consiglia di usare una regola in uscita esplicita per configurare l'allocazione della porta SNAT.It's recommended you use an explicit outbound rule to configure SNAT port allocation. Questa regola massimizza il numero di porte SNAT disponibili per le connessioni in uscita per ogni istanza di back-end.This rule will maximize the number of SNAT ports each backend instance has available for outbound connections.

Se si utilizza l'allocazione automatica dei SNAT in uscita tramite una regola di bilanciamento del carico, nella tabella di allocazione verrà definita l'allocazione delle porte.Should you use the automatic allocation of outbound SNAT through a load-balancing rule, the allocation table will define your port allocation.

La tabella seguente mostra le preallocazioni delle porte SNAT per i livelli di dimensioni del pool back-end:The following table shows the SNAT port preallocations for tiers of backend pool sizes:

Dimensioni del pool (istanze VM)Pool size (VM instances) Porte SNAT preallocate per configurazione IPPreallocated 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

Nota

Se si dispone di un pool back-end con una dimensione massima di 10, ogni istanza può avere 64000/10 = 6.400 porte se si definisce una regola esplicita in uscita.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. In base alla tabella precedente, ognuno avrà 1.024 solo se si sceglie l'allocazione automatica.According to the above table each will only have 1,024 if you choose automatic allocation.

Regole in uscita e NAT della rete virtualeOutbound rules and Virtual Network NAT

Azure Load Balancer le regole in uscita e la rete virtuale NAT sono opzioni disponibili per l'uscita da una rete virtuale.Azure Load Balancer outbound rules and Virtual Network NAT are options available for egress from a virtual network.

Per ulteriori informazioni sulle regole in uscita, vedere regole in uscita.For more information about outbound rules, see Outbound rules.

Per ulteriori informazioni sulla rete virtuale di Azure NAT, vedere informazioni su rete virtuale di Azure NAT.For more information about Azure Virtual Network NAT, see What is Azure Virtual Network NAT.

VincoliConstraints

  • Quando una connessione è inattiva e non viene inviato alcun nuovo pacchetto, le porte verranno rilasciate dopo 4 – 120 minuti.When a connection is idle with no new packets being sent, the ports will be released after 4 – 120 minutes.
  • Questa soglia può essere configurata tramite regole in uscita.This threshold can be configured via outbound rules.
  • Ogni indirizzo IP fornisce porte 64.000 che è possibile usare per SNAT.Each IP address provides 64,000 ports that can be used for SNAT.
  • Ogni porta può essere utilizzata per le connessioni TCP e UDP a un indirizzo IP di destinazioneEach port can be used for both TCP and UDP connections to a destination IP address
  • È necessario specificare una porta UDP SNAT se la porta di destinazione è univoca o meno.A UDP SNAT port is needed whether the destination port is unique or not. Per ogni connessione UDP a un indirizzo IP di destinazione, viene usata una porta SNAT UDP.For every UDP connection to a destination IP, one UDP SNAT port is used.
  • Una porta TCP SNAT può essere utilizzata per più connessioni allo stesso indirizzo IP di destinazione purché le porte di destinazione siano diverse.A TCP SNAT port can be used for multiple connections to the same destination IP provided the destination ports are different.
  • L'esaurimento SNAT si verifica quando un'istanza back-end esaurisce le porte SNAT specificate.SNAT exhaustion occurs when a backend instance runs out of given SNAT Ports. Un servizio di bilanciamento del carico può ancora avere porte SNAT inutilizzate.A load balancer can still have unused SNAT ports. Se le porte SNAT utilizzate da un'istanza back-end superano le porte SNAT specificate, non sarà possibile stabilire nuove connessioni in uscita.If a backend instance’s used SNAT ports exceed its given SNAT ports, it will be unable to establish new outbound connections.

Passaggi successiviNext steps