Risolvere i problemi di configurazione

Questa guida può aiutarti a risolvere i problemi comuni di Cloud NAT.

Problemi comuni

Le VM possono connettersi a internet in modo imprevisto, senza Cloud NAT

Se le tue istanze di macchine virtuali (VM) o di container possono raggiungere senza Cloud NAT, ma non vuoi che lo facciano, verifica la presenza seguenti problemi:

  • Determina se l'interfaccia di rete della VM ha un indirizzo IP esterno. Se a un indirizzo IP esterno assegnato all'interfaccia di rete, Google Cloud esegue automaticamente one-to-one NAT per i pacchetti le cui origini corrispondono l'indirizzo IP interno principale dell'interfaccia. Per ulteriori informazioni, vedi Specifiche Cloud NAT.

    Per determinare se una VM ha un indirizzo IP esterno, consulta la sezione Modificare o assegnando un indirizzo IP esterno a un in esecuzione.

  • Assicurati che il cluster Google Kubernetes Engine (GKE) sia privato cluster. Ogni VM nodo un cluster non privato ha un indirizzo IP esterno, quindi ogni nodo può utilizzare route nella tua rete Virtual Private Cloud (VPC) il cui hop successivo è l'hop predefinito senza dover fare affidamento su Cloud NAT. Per ulteriori informazioni, incluso il modo in cui i cluster non privati interagiscono per i gateway Cloud NAT, consulta Interazione con Compute Engine.

  • Elenca route nel tuo Virtual Private Cloud alla ricerca di reti in grado di fornire connettività a internet a un hop successivo diverso dal gateway internet predefinito. Esempi:

    • Route statiche personalizzate la cui Gli hop sono VM, bilanciatori del carico di rete passthrough interni o Cloud VPN i tunnel potrebbero fornire indirettamente la connettività a internet. Ad esempio, le VM dell'hop successivo o le VM di backend per un bilanciatore del carico di rete passthrough interno dispongono di indirizzi IP esterni o un tunnel Cloud VPN potrebbe connettersi a una rete che offre accesso a internet.

    • Route dinamiche personalizzate apprese da reti on-premise dai router Cloud nel tuo VPC potrebbe connettersi a una rete che offre accesso a Internet.

  • Tieni presente che altre route personalizzate nella tua rete VPC potrebbero hanno priorità più alte rispetto alle route i cui hop successivi sono per impostazione predefinita gateway VPN ad alta disponibilità. Per informazioni su come Google Cloud valuta le route, osserva l'applicabilità e ordine.

Nessun log generato

  • Verifica che il logging NAT sia abilitato.
  • Controlla che la tua visualizzazione dei log non stia filtrando i log che hai che stanno cercando. Per istruzioni, vedi Visualizzazione dei log.

  • Assicurati che una regola firewall non blocchi il traffico. Regole firewall che il traffico in uscita a blocco viene applicato prima che venga inviate al gateway NAT. Puoi utilizzare la modalità Logging delle regole firewall per verificare se le regole personalizzate in uscita bloccano il traffico in uscita.

  • Esamina i tipi di Cloud NAT. La destinazione del traffico potrebbe non essere gestita da NAT.

Alcuni log sono esclusi

  • Verifica che il logging NAT sia abilitato e che il filtro dei log non escluda i log che vuoi conservare. Puoi cancellare un filtro di log in modo che escluse.

  • Cloud NAT non registra ogni singolo evento. Durante periodi di di traffico in uscita molto intenso, il logging NAT è limitato, proporzionale e il tipo di VM. I log degli errori o di traduzione potrebbero essere eliminati e non è possibile determinare cosa viene omesso durante la limitazione.

Pacchetti eliminati con motivo: risorse esaurite

Se noti una perdita di pacchetti dalle VM che utilizzano Cloud NAT, la causa potrebbe essere perché non sono disponibili abbastanza indirizzi IP di origine NAT e porta di origine tuple che la VM utilizzerà al momento della perdita di pacchetti (esaurimento delle porte). R a cinque tuple (indirizzo IP di origine NAT, porta di origine e destinazione a 3 tuple) essere riutilizzati entro il timeout TCP TIME_WAIT.

Se non sono disponibili abbastanza tuple NAT, dropped_sent_packets_count motivo è OUT_OF_RESOURCES. Per ulteriori informazioni sulle metriche, consulta Utilizzo di un'istanza VM metriche.

Per informazioni su come ridurne l'utilizzo, consulta Ridurre l'utilizzo delle porte.

Se utilizzi l'allocazione dinamica delle porte, consulta la sezione seguente per scoprire come ridurre quando si utilizza l'allocazione dinamica delle porte.

Pacchetti eliminati quando è configurata l'allocazione dinamica delle porte

L'allocazione dinamica delle porte rileva quando una VM sta per essere esaurita e raddoppia il numero di porte allocate alla VM. Ciò consente di assicura che le porte non vengano sprecate, ma possano causare la perdita di pacchetti mentre di porte allocate è in aumento.

Per ridurre il numero di pacchetti eliminati, considera quanto segue:

  • Se puoi incrementare le connessioni più lentamente, Cloud NAT necessario per allocare altre porte.

  • Se le VM effettuano connessioni TCP, puoi configurare le VM con una valore di tcp_syn_retries, in modo da concedere al sistema più tempo per la connessione e aumentano le possibilità che abbia successo.

    Ad esempio, per le VM Linux, puoi visualizzare l'impostazione attuale:

      sysctl net.ipv4.tcp_syn_retries
      

    Se necessario, puoi aumentare l'impostazione:

      sudo sysctl -w net.ipv4.tcp_syn_retries=NUM
      

  • Se hai carichi di lavoro impegnativi e devi allocare rapidamente più porte, potrebbe essere necessario regolare il numero minimo di porte per VM. Visualizza la tua porta utilizzo e determinare un numero minimo appropriato di porte per ogni vm.

Pacchetti eliminati con motivo: conflitto indipendente dell'endpoint

Se noti una perdita di pacchetti dalle VM che utilizzano Public NAT La mappatura indipendente degli endpoint è attivata, la perdita di pacchetti potrebbe essere causata da un indipendente dagli endpoint in conflitto. Se lo è, dropped_sent_packets_count motivo è ENDPOINT_INDEPENDENT_CONFLICT. Per ulteriori informazioni sulle metriche, consulta Utilizzare Metriche delle istanze VM.

Puoi ridurre le probabilità di conflitti indipendenti dagli endpoint utilizzando il comando le seguenti tecniche:

  • Disattiva la mappatura indipendente degli endpoint. Ciò consente alla nuova connessione da un determinato indirizzo IP di origine e una determinata porta utilizza un indirizzo IP e una porta di origine NAT diversi rispetto a prima. Disabilitazione in corso... o l'abilitazione della mappatura indipendente degli endpoint non interrompe e connessioni a Internet.

  • Aumenta il numero minimo predefinito di porte NAT per VM istanza, in modo che la prenotazione delle porte di controllo può assegnare più indirizzi IP di origine NAT e tuple di porte di origine a ogni VM del client. Diminuisce la probabilità che due o più indirizzi IP client e alle tuple di porte di origine temporanea viene assegnato lo stesso indirizzo IP di origine NAT tupla di porte di origine.

  • Controlla quante porte di origine temporanea vengono utilizzate:

    • Per le VM Linux:

      netstat -an | egrep 'ESTABLISHED|TIME_WAIT|CLOSE_WAIT' | wc -l
      
    • Per le VM Windows:

      netstat -tan | findstr "ESTABLISHED TIME_WAIT CLOSE_WAIT" | find /c /v ""
      
  • Configura le tue istanze VM per utilizzare un set più ampio di porte di origine temporanee:

    • Per le VM Linux:

      • Puoi visualizzare quale intervallo di porte è configurato con questo comando:

        cat /proc/sys/net/ipv4/ip_local_port_range
        
      • Puoi impostare ip_local_port_range sul numero massimo di porte di origine temporanee (64,512) con questo comando:

        echo 1024 65535 > /proc/sys/net/ipv4/ip_local_port_range
        
    • Per le VM Windows:

      • Puoi visualizzare quali intervalli di porte sono configurati con questi comandi:

        netsh int ipv4 show dynamicport tcp
        netsh int ipv4 show dynamicport udp
        
      • Puoi impostare il numero di porte TCP e UDP di origine temporanea al massimo (64.512) con questi comandi:

        netsh int ipv4 set dynamicport tcp start=1024 num=64512
        netsh int ipv4 set dynamicport udp start=1024 num=64512
        
      • Sui nodi di Google Kubernetes Engine, puoi automatizzare questa configurazione utilizzando un DaemonSet con privilegi.

  • Per i cluster GKE, disabilita il NAT di origine eseguito su nodo per i pacchetti inviati alle destinazioni di interesse. Puoi farlo in uno dei seguenti modi in due modi:

Pacchetti ricevuti persi

Un gateway Cloud NAT mantiene una tabella di monitoraggio delle connessioni per l'archiviazione dettagli della connessione e mappature di indirizzi IP e porte: come funzionano le porte e gli indirizzi IP delle VM in porte e indirizzi IP NAT. Un gateway Cloud NAT salta un traffico in entrata di dati se la tabella di monitoraggio delle connessioni contenere qualsiasi voce per la connessione.

L'assenza della voce di connessione nella tabella può essere dovuta a uno dei seguenti motivi: motivi:

  • Timeout di una connessione TCP stabilita perché la connessione stabilita TCP Timeout di inattività scaduto per inattività.
  • Un endpoint esterno non riesce a stabilire una nuova connessione prima del protocollo TCP Transitory Timeout inattività connessione scaduto. Ad esempio, una risorsa Google Cloud avvia una connessione con TCP SYN, ma l'endpoint esterno non risponde con un SYN ACK.
  • Un endpoint esterno, ad esempio un prober, tenta di connettersi a un indirizzo IP NAT e porta. Cloud NAT non accetta connessioni in entrata non richieste. Le voci per questo tipo di connessioni non saranno presenti nella tabella delle connessioni. Di conseguenza, tutti i pacchetti ricevuti vengono eliminati.
  • Se rimuovi gli IP NAT dal gateway mentre le connessioni NAT sono ancora attive, le mappature NAT non saranno più valide e queste connessioni verranno dalla tabella di monitoraggio delle connessioni e l'eventuale traffico di ritorno viene eliminato.

Prima di gestire le interruzioni dei pacchetti in entrata, verifica se hanno un impatto effettivo la tua applicazione. Per confermare, controlla l'eventuale presenza di errori nell'applicazione ogni volta che si verificano picchi in pacchetti in entrata eliminati.

Se le cadute dei pacchetti in entrata influiscono sulla tua applicazione, prova a utilizzare quanto segue tecniche per risolvere il problema:

  • Utilizza i meccanismi keepalive nell'applicazione, in modo che le connessioni a lunga esecuzione possono rimanere aperti per un periodo più lungo.
  • Aumenta il valore per il timeout per inattività connessione transitoria TCP, in modo che endpoint esterni che ricevono traffico (avviati dalle risorse Google Cloud) un gateway Cloud NAT ha più tempo per rispondere e stabilire la connessione.
  • Aumenta il valore per il timeout per inattività della connessione stabilita TCP, se disponi ha ridotto in modo significativo il valore predefinito.

Necessità di allocare più indirizzi IP

A volte le VM non sono in grado di connettersi a internet perché indirizzi IP NAT sufficienti. Più di uno fattori possono causare questo problema. Per saperne di più, consulta la tabella seguente.

Causa principale Sintomo Soluzione
Hai allocato manualmente gli indirizzi, ma non hai allocato abbastanza in base al tuo attuale utilizzo delle porte.
  • Nella console Google Cloud viene visualizzato l'errore È necessario per allocare almeno "X" per consentire a tutte le istanze di per accedere a internet.
  • Il valore del parametro nat_allocation_failed è true.

Esegui una di queste operazioni:

Hai superato un limite fisso per gli indirizzi IP NAT.

Per monitorare gli errori causati da un numero insufficiente di indirizzi IP, crea un avviso per nat_allocation_failed o una metrica di valutazione. Questa metrica è impostata su true se Google Cloud non è in grado di allocare indirizzi IP sufficienti per qualsiasi VM nel gateway NAT. Per informazioni sui criteri di avviso, vedi Definizione dei criteri di avviso.

Riduci l'utilizzo delle porte

Puoi ridurre al minimo il numero di porte utilizzate da ogni VM nelle situazioni in cui l'allocazione di più indirizzi IP NAT non è possibile né auspicabile.

Per ridurre l'utilizzo delle porte, completa i seguenti passaggi:

  1. Disabilita Indipendente dagli endpoint Mappatura.

  2. Attiva l'allocazione dinamica delle porte. Per utilizzare l'allocazione dinamica delle porte, imposta un numero minimo di porte per VM e un numero massimo di porte per VM. Cloud NAT alloca automaticamente alcune tuple di indirizzi IP e porte di origine NAT tra il numero minimo e il numero massimo di porte incluse. Utilizzare un numero basso per indicare il numero minimo il numero di porte riduce lo spreco di indirizzi IP di origine NAT e tuple di porte di origine sulle VM con meno connessioni attive. In caso di timeout della connessione durante l'allocazione delle porte, consulta Ridurre le perdite di pacchetti con una porta dinamica allocazione.

  3. Determina il numero minimo più basso possibile di porte per soddisfare le tue esigenze. Esistono diversi metodi per farlo e la maggior parte si basa sulla revisione di porte utilizzate (compute.googleapis.com/nat/port_usage) come input durante il processo decisionale. Per informazioni su come trovare la porta vedi Visualizzare la porta dell'audiodescrizione. Di seguito sono riportati due esempi di metodi per determinare un numero minimo di porte:

    • Considera il valore medio di compute.googleapis.com/nat/port_usage in più per un numero rappresentativo di VM.
    • Considera il valore che si ripete più frequentemente compute.googleapis.com/nat/port_usage in un periodo di tempo rappresentativo per un numero rappresentativo di VM.
  4. Determina il numero massimo più basso possibile di porte per soddisfare le tue esigenze. Ancora una volta, rivedi compute.googleapis.com/nat/port_usage come input nel tuo processo decisionale. Considera il valore massimo di compute.googleapis.com/nat/port_usage in un periodo di tempo rappresentativo di un numero rappresentativo di VM come punto di partenza per il numero massimo porte. Ricorda che l'impostazione di un numero massimo troppo alto può impedire ad altre VM di ricevere l'indirizzo IP di origine NAT e le tuple di porte di origine.

  5. L'individuazione dei valori giusti per il numero minimo e massimo di porte implica e test iterativi. Per conoscere la procedura per modificare il numero minimo e massimo di numeri di porta, vedi Modifica il numero minimo o massimo di porte quando l'allocazione dinamica delle porte è configurato.

  6. Esamina i timeout NAT, i relativi significati e relativi valori predefiniti. Se devi creare rapidamente una serie connessioni TCP alla stessa destinazione a 3 tuple; valuta la possibilità di ridurre il numero Tempo di attesa in modo che Cloud NAT possa riutilizzare più rapidamente l'IP di origine NAT tuple di indirizzi IP e porte di origine. Ciò consente a Cloud NAT usare rapidamente la stessa 5 tuple invece di dover usare una sola a 5 tuple, che potrebbero richiedere l'allocazione di ulteriori indirizzi IP e origini NAT tuple di porte per ogni VM di invio. Per la procedura per modificare i timeout NAT, vedi Modifica i timeout NAT.

Domande frequenti

Restrizione regionale per Cloud NAT

Posso utilizzare lo stesso gateway Cloud NAT in più di una regione?

No. Un gateway Cloud NAT non può essere associato a più di un regione, rete VPC o router Cloud.

Se devi fornire connettività per altre regioni o VPC creare altri gateway Cloud NAT.

Gli indirizzi IP NAT esterni utilizzati dai gateway Cloud NAT sono globali o a livello di regione?

I gateway Cloud NAT utilizzano indirizzi IP esterni a livello di regione come IP NAT indirizzi IP esterni. Anche se sono regionali, sono instradabili pubblicamente. Per informazioni sui diversi modi in cui gli indirizzi IP NAT possono essere allocati assegnati, vedi indirizzi IP NAT.

Quando è possibile e non può essere utilizzato Cloud NAT

Cloud NAT si applica alle istanze, incluse le VM dei nodi GKE, che hanno indirizzi IP esterni?

In genere no. Se l'interfaccia di rete di una VM ha un IP esterno di destinazione, Google Cloud esegue sempre NAT 1:1 per i pacchetti inviati dall'indirizzo IP interno principale dell'interfaccia di rete senza utilizzare Cloud NAT. Tuttavia, Cloud NAT può comunque fornire Servizi NAT a pacchetti inviati da intervalli di indirizzi IP alias della stessa rete a riga di comando. Per ulteriori dettagli, consulta Cloud NAT specifiche e Compute Engine un'interazione.

Il NAT pubblico consente a una VM di origine la cui interfaccia di rete è priva di un indirizzo IP esterno di inviare traffico a una VM di destinazione o a un bilanciatore del carico con un indirizzo IP esterno, anche quando l'origine e la destinazione si trovano nella stessa rete VPC?

Sì. Il percorso di rete prevede l'invio del traffico rete VPC attraverso un gateway internet predefinito e poi riceve nella stessa rete.

Quando la VM di origine invia un pacchetto alla destinazione, il servizio NAT pubblico esegue il NAT (SNAT) di origine prima di consegnare il pacchetto alla seconda istanza. Il NAT pubblico esegue la destinazione NAT (DNAT) per le risposte dal secondo alla prima istanza. Per un esempio dettagliato, consulta Configurazione e flusso di lavoro di base di Public NAT.

Posso utilizzare Private NAT per la comunicazione tra le VM nella stessa rete VPC?

No, Private NAT non esegue NAT sul traffico tra VM nello stesso rete VPC.

Connessioni in entrata indesiderate non supportate

Cloud NAT consente le connessioni in entrata (ad esempio, SSH) verso istanze senza indirizzi IP esterni?

No, Cloud NAT non supporta le connessioni in entrata non richieste. Per ulteriori informazioni, vedi Specifiche Cloud NAT. Tuttavia, il perimetro della rete di Google Cloud potrebbe rispondere ai ping se l'indirizzo IP di destinazione è l'indirizzo IP esterno del gateway Cloud NAT ha mappature di porte attive su almeno un'istanza VM. Per visualizzare gli indirizzi IP assegnato a un gateway Cloud NAT, utilizza comando gcloud compute routers get-nat-ip-info. Gli indirizzi IP esterni contrassegnati come IN_USE potrebbero rispondere ai ping.

Se devi connetterti a una VM che non ha un indirizzo IP esterno, consulta Scegli un'opzione di connessione per le VM solo interne. Ad esempio, nell'ambito dell'esempio di Cloud NAT Compute Engine configurazione, ti connetti a una VM senza un indirizzo IP esterno utilizzando Identity-Aware Proxy.

Cloud NAT e porte

Perché una VM ha un numero fisso di porte (64 per impostazione predefinita)?

Quando un gateway Cloud NAT fornisce NAT per una VM, prenota tuple di indirizzi e porte di origine in base alla porta di una procedura di prenotazione.

Per ulteriori informazioni, consulta la sezione Prenotazione delle porte esempi.

Posso modificare il numero minimo di porte riservate per una VM?

Sì. Puoi aumentare o diminuire il numero minimo di porte per VM quando crei un nuovo gateway Cloud NAT o lo modifichi in un secondo momento. Ogni gateway Cloud NAT prenota indirizzo e origine tuple di porte in base alla prenotazione delle porte di sicurezza.

Per ulteriori informazioni su come diminuire il numero minimo di vedi la prossima domanda.

Posso ridurre il numero minimo di porte per VM dopo aver creato il gateway Cloud NAT?

Sì; Tuttavia, la riduzione del numero minimo di porte generare una prenotazione delle porte prenotando una di porte per VM. In questi casi, le connessioni TCP esistenti potrebbe essere reimpostato e, in caso affermativo, dovrà essere ristabilito.

Quando si cambia la mappatura NAT da intervalli principali e secondari a solo intervallo primario, le porte aggiuntive allocate a ciascuna istanza vengono rilasciate immediatamente?

No. Eventuali porte aggiuntive utilizzate dagli intervalli secondari vengono conservate dalle istanze finché l'impostazione del numero minimo di porte per VM non viene ridotta. Se Cloud NAT è configurato per mappare intervalli secondari (alias) per subnet, Cloud NAT assegna un minimo di 1024 porte per istanza, in base alla prenotazione delle porte di sicurezza.

Passando a Solo intervalli primari, Cloud NAT consente di conservarli porte allocate aggiuntive per le istanze a cui sono già state assegnate assegnati. Dopo aver modificato gli intervalli per i quali Cloud NAT è applicato Solo primaria, il numero effettivo di porte assegnate a queste istanze non è finché non viene ridotta anche l'impostazione del numero minimo di porte per VM.

Ridurre il numero di porte allocate a queste istanze dopo il passaggio primari, l'impostazione relativa al numero minimo di porte per VM deve essere ridotta. Dopo questo valore, è ridotto, Cloud NAT regola automaticamente il numero di porte per ogni istanza inattiva, il che riduce il consumo di porte.

Cloud NAT e altri servizi Google

Cloud NAT consente l'accesso alle API e ai servizi Google?

Quando abiliti Cloud NAT per l'IP principale di una subnet questo intervallo, Google Cloud abilita automaticamente Accesso privato Google. Per maggiori informazioni le informazioni, vedi Interazione di accesso privato Google.

Passaggi successivi