Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Alcuni scenari richiedono che le macchine virtuali o le istanze dell'ambiente di calcolo abbiano connettività in uscita verso Internet. Gli indirizzi IP front-end di un bilanciamento del carico pubblico possono essere usati per fornire connettività in uscita a Internet per le istanze back-end. Questa configurazione usa SNAT (Source Network Address Translation) per traslare l'IP privato della macchina virtuale nell'indirizzo IP pubblico del servizio di bilanciamento del carico. SNAT esegue il mapping dell'indirizzo IP del back-end all'indirizzo IP pubblico del servizio di bilanciamento del carico. SNAT impedisce alle origini esterne di avere un indirizzo diretto alle istanze di back-end.
Scegli un metodo di connettività in uscita
Scegli un metodo esplicito di connettività in uscita prima di distribuire un carico di lavoro:
- Usa Gateway NAT di Azure per una connettività scalabile e solo in uscita da una subnet.
- Usa un IP pubblico a livello di istanza quando una macchina virtuale ha bisogno di un proprio indirizzo pubblico.
- Usa regole in uscita quando le istanze backend utilizzano un IP frontend di bilanciatore di carico per la connettività in uscita.
- Evita l'accesso in uscita predefinito per i carichi di lavoro in produzione. Le nuove reti virtuali utilizzano per impostazione predefinita subnet private.
Metodi di connettività in uscita di Azure
I metodi seguenti sono i più comunemente utilizzati in Azure per consentire la connettività in uscita, elencati in ordine di priorità quando vengono usati più metodi:
| # | Metodo | Tipo di allocazione delle porte | Livello di produzione? | Rating |
|---|---|---|---|---|
| 1 | Associare il gateway NAT di Azure alla subnet | Dinamico, esplicito | Sì | Record |
| 2 | Assegnare un indirizzo IP pubblico alla macchina virtuale | Statico, esplicito | Sì | OK |
| 3 | Usare l'indirizzo o gli indirizzi IP front-end di un servizio di bilanciamento del carico per le regole in uscita tramite regole in uscita | Statico, esplicito | Sì, ma non su larga scala | OK |
| 4 | Usare gli indirizzi IP front-end di un servizio di bilanciamento del carico per le connessioni in uscita senza regole in uscita | Statico, implicito | No | Peggiore |
| 5 | Accesso in uscita predefinito | Implicito | No | Peggiore |
1. Associare Gateway NAT di Azure alla subnet
Gateway NAT di Azure semplifica la connettività internet solo in uscita per le reti virtuali. Quando la configuri su una subnet, tutta la connettività in uscita utilizza gli indirizzi IP pubblici statici specificati. Puoi avere connettività in uscita senza un bilanciatore di carico o indirizzi IP pubblici collegati direttamente alle macchine virtuali. Il gateway NAT è completamente gestito e altamente resiliente.
Usare NAT Gateway è il metodo migliore per la connettività in uscita. Il NAT Gateway è altamente estensibile, affidabile e non ha le stesse preoccupazioni riguardo all'esaurimento delle porte SNAT.
Il NAT Gateway ha la precedenza rispetto ad altri metodi di connettività in uscita, inclusi un bilanciatore di peso, indirizzi IP pubblici a livello di istanza e Firewall di Azure.
Per altre informazioni sulle Gateway NAT di Azure, vedere Che è Gateway NAT di Azure. Per informazioni dettagliate sul funzionamento del comportamento SNAT con il gateway NAT, vedere SNAT con gateway NAT.
2. Assegnare un indirizzo IP pubblico alla macchina virtuale
| Associazioni | Metodo | Protocolli IP |
|---|---|---|
| IP pubblico sulla scheda di interfaccia di rete della macchina virtuale | SNAT (Source Network Address Translation) non è utilizzata. |
TCP (Transmission Control Protocol) UDP (User Datagram Protocol) ICMP (Internet Control Message Protocol) ESP (Encapsulating Security Payload) |
Il traffico torna al client richiedente dall'indirizzo IP pubblico della macchina virtuale (IP a livello di istanza).
Azure usa l'indirizzo IP pubblico assegnato alla configurazione IP della scheda di interfaccia di rete dell'istanza per tutti i flussi in uscita. L'istanza ha tutte le porte temporanee disponibili. Non è importante se la macchina virtuale abbia un carico bilanciato o meno. Questo scenario ha la precedenza sugli altri, ad eccezione del gateway NAT.
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.
3. Usare gli indirizzi IP front-end di un servizio di bilanciamento del carico per le regole in uscita tramite regole in uscita
Le regole in uscita consentono di definire in modo esplicito la SNAT (Source Network Address Translation) per un bilanciamento del carico pubblico SKU standard. Questa configurazione consente di usare l'indirizzo o gli indirizzi IP pubblici del servizio di bilanciamento del carico per fornire connettività in uscita alle istanze back-end.
Questa configurazione abilita:
Mascheramento IP
Semplificazione degli elenchi elementi consentiti
Riduzione del numero di risorse IP pubbliche per la distribuzione
Con le regole in uscita, si ha il controllo dichiarativo completo sulla connettività Internet in uscita. Le regole in uscita consentono di ridimensionare e ottimizzare questa capacità in base alle proprie esigenze specifiche attraverso l'allocazione manuale delle porte. L'allocazione manuale della porta SNAT in base alle dimensioni del pool back-end e al numero di frontendIPConfigurations consente di evitare l'esaurimento SNAT.
È possibile allocare manualmente le porte SNAT in base a "porte per istanza" o "numero massimo di istanze back-end". Se nel back-end sono presenti macchine virtuali, è consigliabile allocare le porte in base alle "porte per istanza" per ottenere il massimo utilizzo delle porte SNAT.
Calcolare le porte per ogni istanza come indicato di seguito:
Numero di indirizzi IP front-end * 64.000 / Numero di istanze back-end
Se si dispone di set di scalabilità di macchine virtuali nel back-end, è consigliabile allocare le porte in base al "numero massimo di istanze back-end". Se al back-end vengono aggiunte più macchine virtuali rispetto alle porte SNAT rimanenti consentite, è possibile bloccare la scalabilità orizzontale di set di scalabilità di macchine virtuali o le nuove macchine virtuali non riceveranno porte SNAT sufficienti.
Note
Quando vengono configurati più indirizzi IP front-end usando regole in uscita, le connessioni in uscita possono provenire da uno qualsiasi degli indirizzi IP front-end configurati per l'istanza back-end. Non è consigliabile creare dipendenze da cui è possibile selezionare l'indirizzo IP front-end per le connessioni.
Per altre informazioni sulle regole in uscita, vedere Regole in uscita.
4. Usare gli indirizzi IP front-end di un servizio di bilanciamento del carico per l'uscita senza regole in uscita
Questa opzione è simile a quella precedente, tranne quando non vengono create regole in uscita. In questo caso, i front-end del servizio di bilanciamento del carico vengono ancora usati per l'uscita, ma questa operazione viene eseguita in modo implicito senza regole che specificano quale front-end verrà usato. L'uso di regole in uscita riduce anche la scalabilità di in uscita, poiché la connettività in uscita implicita ha un numero fisso di porte SNAT per ogni indirizzo IP front-end, che potrebbe causare l'esaurimento delle porte in scenari a traffico elevato.
5. Accesso in uscita predefinito
In Azure le macchine virtuali create in una rete virtuale senza connettività in uscita esplicitamente definita vengono assegnate a un indirizzo IP pubblico in uscita predefinito. Tale indirizzo IP abilita la connettività in uscita dalle risorse a Internet. Questo accesso viene definito accesso in uscita predefinito. Questo metodo di accesso non è consigliato perché non è sicuro e gli indirizzi IP sono soggetti a modifiche.
Importante
Il 31 marzo 2026 le nuove reti virtuali usano per impostazione predefinita le subnet private. Per altre informazioni, consultare l'annuncio ufficiale. Usare una delle forme esplicite di connettività, come illustrato nelle opzioni 1-3 precedenti.
porte SNAT di Azure Load Balancer
Le porte generano identificatori univoci che mantengono flussi distinti. Internet usa una tupla a cinque per creare questa distinzione.
Se si usa una porta per le connessioni in ingresso, ha un listener per le richieste di connessione in ingresso su tale porta. Tale porta non può essere usata per le connessioni in uscita. Per stabilire una connessione in uscita, usare una porta temporanea per fornire alla destinazione una porta su cui comunicare e gestire un flusso di traffico distinto. Quando queste porte temporanee vengono usate per la SNAT, vengono definite porte SNAT.
Per definizione, ogni indirizzo IP ha 65.535 porte. Ogni porta può essere usata per le connessioni in ingresso o in uscita per TCP (Transmission Control Protocol) e UDP (User Datagram Protocol). Quando si aggiunge un indirizzo IP pubblico come ip front-end a un servizio di bilanciamento del carico, 64.000 porte sono idonee per SNAT.
Ogni porta usata in una regola NAT in ingresso o di bilanciamento del carico utilizza un intervallo di otto porte dalle 64.000 porte SNAT disponibili. Questo utilizzo riduce il numero di porte idonee per la SNAT, se lo stesso indirizzo IP front-end viene usato per la connettività in uscita. Se le porte utilizzate dalle regole NAT in ingresso o di bilanciamento del carico si trovano nello stesso blocco di otto porte utilizzate da un'altra regola, le regole non richiedono porte aggiuntive.
Note
Se è necessario connettersi a qualsiasi servizio PaaS supportato Azure come Archiviazione di Azure, Azure SQL o Azure Cosmos DB, usare collegamento privato di Azure per evitare completamente SNAT. collegamento privato di Azure invia il traffico dalla rete virtuale ai servizi Azure tramite la rete backbone Azure anziché tramite Internet.
collegamento privato è l'opzione consigliata sugli endpoint di servizio per l'accesso privato ai servizi ospitati Azure. Per altre informazioni sulla differenza tra collegamento privato ed endpoint di servizio, vedere Compare Private Endpoints and Service Endpoints.
Comportamento predefinito di Azure Load Balancer SNAT
Quando una macchina virtuale crea un flusso in uscita, Azure converte l'indirizzo IP di origine in un indirizzo IP temporaneo. Azure esegue questa traduzione tramite SNAT.
Se si usa SNAT senza regole in uscita tramite un servizio di bilanciamento del carico pubblico, il sistema prealloca le porte SNAT come descritto nella tabella di allocazione delle porte SNAT predefinite seguente:
Tabella di allocazione delle porte predefinita
Quando si abilita l'allocazione di porte predefinite, il sistema alloca le porte SNAT in base alle dimensioni del pool back-end. Ogni back-end riceve il numero di porte definite dalla tabella, per indirizzo IP front-end, fino a un massimo di 1.024 porte. Non usare l'allocazione di porte predefinita per i carichi di lavoro di produzione, perché alloca un numero minimo di porte a ogni istanza back-end e aumenta il rischio di esaurimento delle porte SNAT. Invece, considera di usare Gateway NAT di Azure o di allocare manualmente le porte sulle regole di uscita del tuo bilanciatore di carico.
È possibile abilitare l'allocazione delle porte predefinite in diversi modi:
- Configurare una regola di bilanciamento del carico con
disableOutboundSnatimpostato sufalseo selezionare l'opzione di allocazione delle porte predefinita in una regola di bilanciamento del carico nel portale di Azure. - Configurare una regola in uscita, ma impostare la proprietà
allocatedOutboundPortssu0, oppure selezionare Abilita l'allocazione predefinita delle porte nel portale di Azure.
Ad esempio, con 100 macchine virtuali in un pool back-end e un solo IP front-end, ogni macchina virtuale riceve 512 porte. Se si aggiunge un secondo indirizzo IP front-end, ogni macchina virtuale riceve 512 porte aggiuntive. Questa allocazione indica che ogni macchina virtuale viene allocata per un totale di 1.024 porte. Di conseguenza, l'aggiunta di un terzo ip front-end non aumenta il numero di porte SNAT allocate oltre 1.024 porte.
Come regola generale, è possibile calcolare il numero di porte SNAT fornite quando viene applicata l'allocazione di porte predefinite come : MIN(# of default SNAT ports provided based on pool size * number of frontend IPs associated with the pool, 1024).
Nella tabella seguente sono riportate le preallocazioni delle porte SNAT per singolo front-end in base alle dimensioni del pool back-end:
| Dimensioni del pool (istanze VM) | Porte SNAT predefinite |
|---|---|
| 1-50 | 1.024 |
| 51-100 | 512 |
| 101-200 | 256 |
| 201-400 | 128 |
| 401-800 | 64 |
| 801-1.000 | 32 |
Esaurimento delle porte
Ogni connessione alla stessa porta e IP di destinazione usa una porta SNAT. Questa connessione mantiene un flusso di traffico distinto dall'istanza back-end o client a un server. Questo processo fornisce al server una porta distinta su cui indirizzare il traffico. Senza questo processo, il computer client non è a conoscenza del flusso di cui fa parte un pacchetto.
Si supponga di avere più browser in https://www.microsoft.com, ovvero:
IP di destinazione = 23.53.254.142
Porta di destinazione: 443
Protocollo = TCP
Senza porte SNAT per il traffico restituito, il client non è in grado di separare il risultato di una query da un'altra.
Le connessioni in uscita possono generare un burst. A un'istanza back-end potrebbe essere allocato un numero di porte insufficiente. Usare la funzione riutilizzo delle connessioni all'interno dell'applicazione. Senza riutilizzo delle connessioni, aumenta il rischio di esaurimento delle porte SNAT.
Per altre informazioni sul pool di connessioni con Servizio app di Azure, vedere Risoluzione degli errori di connessione in uscita intermittenti in Servizio app di Azure.
Le nuove connessioni in uscita a un indirizzo IP di destinazione hanno esito negativo quando si verifica l'esaurimento delle porte. Le connessioni hanno esito positivo quando una porta diventa disponibile. L'esaurimento si verifica quando le 64.000 porte di un indirizzo IP vengono distribuite in numerose istanze back-end. Per indicazioni sulla mitigazione dell'esaurimento delle porte SNAT, vedere Support e risoluzione dei problemi per Azure Load Balancer.
Riutilizzo delle porte
Per TCP, ogni connessione attiva richiede una distinta tupla sorgente tradotta verso una specifica tupla di destinazione, che consiste nell'indirizzo IP di destinazione e nella porta di destinazione. Puoi riutilizzare una porta SNAT per una connessione a un indirizzo IP di destinazione diverso o a una porta di destinazione diversa. Non puoi riutilizzarlo per un'altra connessione attiva dalla stessa istanza backend allo stesso indirizzo IP di destinazione e alla porta di destinazione.
Per le connessioni UDP, il servizio di bilanciamento del carico usa un algoritmo NAT con restrizioni di porta, che utilizza una porta SNAT per IP di destinazione, indipendentemente dalla porta di destinazione.
È possibile riutilizzare le singole porte per un numero illimitato di connessioni in cui è consentito il riutilizzo (quando l'INDIRIZZO IP o la porta di destinazione è diversa).
Nell'esempio riportato nella tabella seguente, un'istanza back-end con IP privato 10.0.0.1 effettua connessioni TCP agli indirizzi IP di destinazione 23.53.254.142 e 26.108.254.155, mentre il servizio di bilanciamento del carico è configurato con indirizzo IP front-end 192.0.2.0. Poiché gli indirizzi IP di destinazione sono diversi, la stessa porta SNAT può essere riutilizzata per più connessioni.
| Flusso | Tupla di origine | Tupla di origine dopo SNAT | Tupla di destinazione |
|---|---|---|---|
| 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 |
Vincoli
I seguenti vincoli si applicano a Azure Load Balancer SNAT. I singoli vincoli identificano quando si applicano solo a TCP, UDP, regole in uscita o configurazioni IP pubbliche a livello di istanza.
Quando una connessione è inattiva senza nuovi pacchetti inviati, le porte vengono rilasciate dopo 4-120 minuti.
È possibile configurare questa soglia tramite regole in uscita.
Ogni indirizzo IP fornisce 64.000 porte che è possibile usare per SNAT.
Ogni porta può essere usata sia per le connessioni TCP che UDP a un indirizzo IP di destinazione.
È necessaria una porta SNAT UDP indipendentemente dal fatto che la porta di destinazione sia univoca o meno. Per ogni connessione UDP a un indirizzo IP di destinazione, viene usata una porta SNAT UDP.
Una porta TCP SNAT può essere usata per più connessioni allo stesso indirizzo IP di destinazione, purché le porte di destinazione siano diverse.
L'esaurimento SNAT si verifica quando un'istanza back-end esaurisce le porte SNAT specificate. Un bilanciamento del carico può comunque avere porte SNAT inutilizzate. Se le porte SNAT usate da un'istanza back-end superano le porte SNAT specificate, non è possibile stabilire nuove connessioni in uscita.
Il sistema rilascia pacchetti frammentati a meno che l'uscita non avvenga tramite un indirizzo IP pubblico a livello di istanza sulla rete di rete della VM.
Le regole in uscita non supportano configurazioni IPv4 secondarie di un'interfaccia di rete. Per la connettività in uscita su configurazioni IPv4 secondarie, collega indirizzi IP pubblici a livello di istanza oppure usa invece Gateway NAT di Azure.
Passaggi successivi
- Support e risoluzione dei problemi per Azure Load Balancer
- Esaminare le metriche SNAT e acquisire familiarità con il modo corretto per filtrare, dividere e visualizzare le metriche.
- Scopri come migrare il tuo metodo di connettività outbound esistente su Gateway NAT di Azure.