Come diagnosticare e risolvere problemi comuni di connettività delle istanze EC2

Questa guida completa ti aiuta a individuare e risolvere problemi comuni di connettività di rete delle istanze Amazon EC2. Impara passo dopo passo come diagnosticare i problemi esaminando Security Groups, NACL, Route Tables, Internet Gateways, NAT Gateways e il peering VPC. Include esempi pratici e buone pratiche per garantire che le tue istanze EC2 siano sempre accessibili e comunichino efficacemente.

Come Diagnosticare e Risolvere i Problemi Comuni di Connettività delle Istanze EC2

I problemi di connettività EC2 di solito si riducono a un singolo hop bloccato: l'istanza, il gruppo di sicurezza, le regole della subnet, la tabella di instradamento o il percorso del gateway. Se non riesci a connetterti tramite SSH a un'istanza EC2, raggiungere una porta dell'applicazione o connetterti da un'istanza a un'altra, lavora attraverso il percorso di rete in ordine invece di modificare le regole a caso.

I controlli seguenti ti aiutano a isolare dove il traffico si ferma e ad applicare la correzione più piccola che ripristina l'accesso.

Cause Comuni dei Problemi di Connettività EC2

I problemi di connettività possono derivare da vari livelli dello stack di rete AWS. Identificare la causa principale spesso comporta il controllo di una combinazione di questi elementi:

  • Security Group: Sono firewall virtuali stateful collegati alle interfacce di rete elastiche. Controllano il traffico in entrata e in uscita a livello di istanza.
  • Network Access Control List (NACL): Le NACL operano a livello di subnet e forniscono un ulteriore livello di filtraggio stateless per il traffico in entrata e in uscita dalle subnet.
  • Route Table: Determinano dove va il traffico della subnet, ad esempio localmente all'interno del VPC, verso un gateway internet, verso un gateway NAT o verso un gateway di transito.
  • Stato dell'Istanza e Configurazione di Rete: Problemi con l'istanza EC2 stessa, come se fosse ferma o avesse impostazioni dell'interfaccia di rete errate.
  • Internet Gateway (IGW) / NAT Gateway: Per le istanze che necessitano di accesso a Internet, la configurazione dell'IGW (per subnet pubbliche) o del NAT Gateway (per subnet private) è fondamentale.
  • Peering VPC / Transit Gateway: Se ci si connette tra VPC, questi servizi di connettività inter-VPC devono essere configurati correttamente.

Diagnosi e Risoluzione Passo dopo Passo

Inizia con il sintomo, poi segui il percorso del pacchetto.

1. Verifica lo Stato dell'Istanza e la Raggiungibilità di Rete di Base

Prima di addentrarti in configurazioni di rete complesse, assicurati che l'istanza stessa sia in uno stato sano e abbia configurazioni di rete di base:

  • Controlli di stato dell'istanza: Nella console EC2, seleziona l'istanza e controlla la scheda "Status checks". Sia i controlli di sistema che quelli dell'istanza devono essere superati.
  • IP pubblici e privati: Conferma che l'istanza abbia l'indirizzo che ti aspetti. Un'istanza in una subnet pubblica necessita comunque di un indirizzo IPv4 pubblico o di un IP elastico per l'accesso diretto a Internet tramite IPv4.
  • Listener del sistema operativo: Se il percorso di rete è aperto ma la porta fallisce ancora, conferma che il servizio sia in ascolto sull'istanza. Ad esempio, SSH dovrebbe essere in ascolto sulla porta TCP 22 a meno che tu non abbia modificato la configurazione del demone.
  • Risoluzione DNS: Se la connessione tramite IP funziona ma la ricerca del nome host fallisce, controlla le impostazioni DNS del VPC, i resolver personalizzati e /etc/resolv.conf su Linux.

2. Esamina i Security Group

I security group sono firewall stateful che controllano il traffico da e verso le tue istanze EC2. Sono una fonte molto comune di problemi di connettività.

2.1. Regole in Entrata

Se non riesci a connetterti alla tua istanza, ad esempio SSH su Linux o RDP su Windows:

  • Controlla il Security Group collegato alla tua istanza EC2.
  • Verifica le regole in entrata: Consenti la porta TCP richiesta dal tuo IP di origine o da un CIDR affidabile. Per l'accesso amministrativo, preferisci il tuo IP pubblico corrente come <tuo_ip>/32 invece di 0.0.0.0/0.
  • Esempio: Per consentire l'accesso SSH dal tuo indirizzo IP:
    Tipo: SSH
    Protocollo: TCP
    Intervallo di porte: 22
    Origine: <tuo_ip>/32
    

2.2. Regole in Uscita

Se la tua istanza non riesce a raggiungere risorse esterne (ad esempio, scaricare pacchetti, connettersi ad altri servizi AWS):

  • Controlla il Security Group collegato alla tua istanza EC2.
  • Verifica le Regole in Uscita: Per impostazione predefinita, i security group consentono tutto il traffico in uscita. Se sono state create regole in uscita personalizzate, assicurati che consentano il traffico necessario verso le porte e gli IP di destinazione.
  • Esempio: Per consentire tutto il traffico in uscita:
    Tipo: Tutto il traffico
    Protocollo: Tutti
    Intervallo di porte: Tutte
    Destinazione: 0.0.0.0/0
    

3. Indaga sulle Network Access Control List (NACL)

Le NACL sono firewall stateless che operano a livello di subnet. Filtrano il traffico prima che raggiunga il security group o l'istanza.

  • Identifica la NACL associata alla subnet della tua istanza.
  • Controlla le Regole in Entrata: Le NACL vengono valutate in ordine per numero di regola. Assicurati che esista una regola in entrata che consenta il traffico sulla porta richiesta dall'IP di origine.
  • Controlla le Regole in Uscita: Allo stesso modo, verifica che le regole in uscita consentano il traffico verso la destinazione.
  • Natura stateless: Le NACL non ricordano le connessioni stabilite. Hai bisogno di regole in entrata e in uscita per entrambi i lati del flusso. Per SSH dal tuo laptop, la NACL della subnet di solito necessita di una regola in entrata TCP 22 dal tuo IP e di una regola in uscita per le porte effimere verso il tuo IP per il traffico di ritorno. Gli intervalli di porte effimere variano a seconda del sistema operativo e del client, quindi usa l'intervallo appropriato per il tuo ambiente.
  • Numerazione delle Regole: I numeri di regola più bassi vengono valutati per primi. Usa regole di rifiuto esplicito (ad esempio, regola 100 per negare traffico specifico) e regole di consenso (ad esempio, regola 200 per consentire traffico più ampio) con attenzione.

4. Rivedi le Route Table

Le route table determinano dove viene diretto il traffico di rete dalle tue subnet. Un instradamento errato può impedire al traffico di raggiungere la sua destinazione.

  • Trova la Route Table associata alla subnet della tua istanza.
  • Controlla la presenza di una Route Predefinita: Per le istanze in una subnet pubblica per accedere a Internet, deve esserci una route 0.0.0.0/0 che punti a un Internet Gateway (IGW).
    Destinazione | Target
    ----------------|--------
    10.0.0.0/16     | local
    0.0.0.0/0       | igw-xxxxxxxxxxxxxxxxx
    
  • Subnet private e NAT gateway: Per le istanze in una subnet privata per avviare connessioni Internet in uscita, la route table per quella subnet necessita di una route 0.0.0.0/0 che punti a un NAT gateway o a un'istanza NAT.
    Destinazione | Target
    ----------------|--------
    10.0.0.0/16     | local
    0.0.0.0/0       | nat-xxxxxxxxxxxxxxxxx
    
  • Peering VPC, transit gateway o VPN: Se la tua istanza deve comunicare con un altro VPC o una rete on-premise, aggiungi route per i blocchi CIDR remoti al target corretto su entrambi i lati dove è richiesto l'instradamento.

5. Risoluzione dei Problemi di Connettività dell'Internet Gateway (IGW) e del NAT Gateway

Internet Gateway

*   Assicurati che l'IGW sia creato e collegato al tuo VPC.
*   Verifica che la route table per la tua subnet pubblica abbia una route `0.0.0.0/0` che punti all'IGW.
*   Conferma che la tua istanza abbia un indirizzo IP pubblico o un indirizzo IP elastico assegnato.
*   Le regole del security group e della NACL devono consentire il traffico in entrata e in uscita richiesto. Non aprire porte sensibili all'intero Internet a meno che tu non abbia una ragione chiara e controlli compensativi.

NAT Gateway

*   Assicurati che il NAT Gateway sia creato e si trovi in una subnet pubblica.
*   Verifica che il NAT Gateway abbia un indirizzo IP elastico associato.
*   Conferma che la route table per la tua subnet privata abbia una route `0.0.0.0/0` che punti al NAT Gateway.
*   Le regole NACL sulle subnet private e pubbliche devono consentire la connessione in uscita e il traffico di ritorno. I NAT gateway non utilizzano security group.

6. Peering VPC e Transit Gateway

Se stai riscontrando problemi di connettività tra VPC:

  • Peering VPC:
    • Assicurati che la connessione di peering sia attiva e accettata da entrambi i VPC.
    • Verifica che le route table in entrambi i VPC abbiano route aggiunte per consentire il traffico verso i blocchi CIDR del VPC in peering.
    • Assicurati che i Security Group e le NACL in entrambi i VPC consentano il traffico tra gli intervalli IP necessari.
  • Transit Gateway:
    • Conferma che il Transit Gateway sia creato e che i VPC pertinenti siano collegati ad esso.
    • Controlla le route table del Transit Gateway per assicurarti che instradino correttamente il traffico tra i collegamenti VPC.
    • Verifica che le route table all'interno di ciascun VPC abbiano anche route che puntano al Transit Gateway per il traffico destinato ad altri VPC.
    • I Security Group e le NACL all'interno di ciascun VPC devono consentire il traffico tra VPC.

7. Utilizzo degli Strumenti di Raggiungibilità di Rete AWS

AWS fornisce strumenti per aiutare a diagnosticare i problemi di rete:

  • VPC Reachability Analyzer: Questo strumento analizza la raggiungibilità tra risorse di origine e destinazione supportate. Può identificare guasti di percorso causati da security group, NACL, route table, gateway e configurazioni di rete correlate.
  • VPC Flow Logs: Sebbene non diagnostichino direttamente i guasti di connessione, i VPC Flow Logs catturano informazioni sul traffico IP in entrata e in uscita dalle interfacce di rete nel tuo VPC. L'analisi di questi log può rivelare modelli di traffico bloccato o inaspettato, aiutandoti a identificare configurazioni errate nei Security Group o nelle NACL.

8. Altri Potenziali Problemi

  • Interfaccia di Rete Elastica (ENI): Assicurati che l'ENI sia collegata all'istanza e configurata correttamente.
  • Associazione della Route Table della Subnet: Verifica che la subnet sia correttamente associata alla sua route table prevista.
  • Configurazione DNS: Se utilizzi un DNS personalizzato, assicurati che risolva correttamente. Per il DNS VPC predefinito, controlla se la risoluzione DNS è abilitata per il tuo VPC.
  • Server Proxy: Se la tua istanza è configurata per utilizzare un proxy, assicurati che il proxy stesso sia accessibile e configurato correttamente.

Best Practice per Prevenire Problemi di Connettività

  • Minimo Privilegio: Configura i Security Group e le NACL con le autorizzazioni minime necessarie. Evita di utilizzare 0.0.0.0/0 per porte sensibili a meno che non sia assolutamente richiesto e protetto da altri mezzi.
  • Tagging: Etichetta in modo coerente le tue risorse di rete (VPC, subnet, security group, route table) per identificare facilmente il loro scopo e le istanze associate.
  • Documentazione: Mantieni una documentazione chiara della tua topologia di rete, degli schemi di indirizzamento IP e delle regole di sicurezza.
  • Audit Regolari: Rivedi periodicamente le regole del tuo Security Group e della NACL per assicurarti che siano ancora pertinenti e sicure.
  • Sfrutta gli Strumenti AWS: Familiarizza con VPC Reachability Analyzer e VPC Flow Logs per il monitoraggio proattivo e la risoluzione dei problemi.

Conclusione

Quando la connettività EC2 si interrompe, traccia il percorso in ordine: salute dell'istanza, listener, security group, NACL, route table, gateway e regole del lato remoto. Modifica un livello alla volta, poi testa di nuovo. Questo mantiene la tua correzione mirata e rende il prossimo guasto molto più facile da diagnosticare.