Introduzione
Buongiorno e benvenuti in un nuovo articolo di toodech, andiamo a parlare di un’argomento molto interessante. Quando si lavora con ambienti AWS complessi, spesso è necessario connettere più Virtual Private Cloud (VPC). Questo permette la comunicazione tra servizi distribuiti su diverse reti. Due delle soluzioni principali offerte da AWS per la connettività tra VPC sono:
- VPC Peering: Una connessione diretta tra due VPC.
- AWS Transit Gateway: Un hub centralizzato per connettere più VPC in modo scalabile ed efficiente.
In questo articolo, vedremo come creare una rete VPC avanzata su AWS. Utilizzeremo sia il Peering VPC sia il Transit Gateway. Forniremo una guida passo passo all’implementazione.
1. Creazione delle VPC
Per iniziare, creiamo due VPC separati che andremo a connettere, utilizzeremo AWS CLI. Il procedimento è replicabile anche da console AWS. In caso non vi ricordaste come installare AWS CLI, vi lascio il link. Dopo aver installato la CLI, dovete configurarla. Vi lascio il link ufficiale per come farlo oppure vi lascio il precedente articolo dove ho configurato la CLI.
Comandi AWS CLI per creare le VPC:
Andiamo sul terminale e creaiamo le nostre reti.
vpc1:
aws ec2 create-vpc --cidr-block 10.0.0.0/16 --region eu-west-1 --tag-specifications 'ResourceType=vpc,Tags=[{Key=Name,Value=VPC1}]'

vpc2:
aws ec2 create-vpc --cidr-block 10.1.0.0/16 --region eu-west-1 --tag-specifications 'ResourceType=vpc,Tags=[{Key=Name,Value=VPC2}]'

Nota: Puoi personalizzare i CIDR delle VPC in base alle tue esigenze di rete e la regione.
Prima di passare all’altro punto, andiamo a vedere se sulla console di AWS ci sono.

2. Configurare il VPC Peering
Il Peering VPC permette la comunicazione diretta tra due VPC senza passare per internet o VPN.
Creare la connessione di Peering:
aws ec2 create-vpc-peering-connection --vpc-id <VPC1_ID> --peer-vpc-id <VPC2_ID> --region eu-west-1
Prendi nota dell’ID delle vpc e della connessione di peering generato (es. pcx-xxxxxxxx
).

Accettare la richiesta di Peering:
aws ec2 accept-vpc-peering-connection --vpc-peering-connection-id <PEERING_ID> --region eu-west-1

Aggiornare le tabelle di routing:
Una volta stabilita la connessione, dobbiamo aggiornare le tabelle di routing di entrambe le VPC per inoltrare il traffico. A tale scopo, cambiamo il destination cidr verso l’altra VPC.
tabella routing prima vpc:
aws ec2 create-route --route-table-id <RTB_VPC1_ID> --destination-cidr-block 10.1.0.0/16 --vpc-peering-connection-id <PEERING_ID>

tabella routing seconda vpc:
aws ec2 create-route --route-table-id <RTB_VPC2_ID> --destination-cidr-block 10.0.0.0/16 --vpc-peering-connection-id <PEERING_ID>

Ora, con questa modifica effetuata le due VPC possono comunicare direttamente.
3. Configurare AWS Transit Gateway
Il Transit Gateway permette di interconnettere più VPC e on-premise network attraverso un’unica entità centralizzata.
Creare il Transit Gateway:
aws ec2 create-transit-gateway --description "My Transit Gateway" --options AmazonSideAsn=64512 --region eu-west-1

Prendi nota dell’ID del Transit Gateway generato (es. tgw-xxxxxxxx
).
Creare le subnet
Ogni VPC deve avere almeno una subnet per poter essere collegata al Transit Gateway.
Comando per creare una subnet nella VPC1
aws ec2 create-subnet --vpc-id <VPC1_ID> --cidr-block 10.0.1.0/24 --region eu-west-1 --tag-specifications 'ResourceType=subnet,Tags=[{Key=Name,Value=Subnet-VPC1}]'

Comando per creare una subnet nella VPC2
aws ec2 create-subnet --vpc-id <VPC2_ID> --cidr-block 10.1.1.0/24 --region eu-west-1 --tag-specifications 'ResourceType=subnet,Tags=[{Key=Name,Value=Subnet-VPC2}]'

Dopo aver creato le subnet, devi recuperare gli ID delle subnet per collegarle al Transit Gateway.
Collegare i VPC al Transit Gateway:
Dopo aver creato il Gateway, dobbiamo collegarlo alle nostre vpc
aws ec2 create-transit-gateway-vpc-attachment --transit-gateway-id <TGW_ID> --vpc-id <VPC1_ID> --subnet-ids <SUBNET1_ID>

aws ec2 create-transit-gateway-vpc-attachment --transit-gateway-id <TGW_ID> --vpc-id <VPC2_ID> --subnet-ids <SUBNET2_ID>

Aggiornare le tabelle di routing per il Transit Gateway:
Adesso dobbiamo aggiornare la tabella di routing delle vpc verso il gateway.
VPC1:
aws ec2 create-route --route-table-id <RTB_VPC1_ID> --destination-cidr-block 10.1.0.0/16 --transit-gateway-id <TGW_ID>
aws ec2 create-route --route-table-id <RTB_VPC2_ID> --destination-cidr-block 10.0.0.0/16 --transit-gateway-id <TGW_ID>
Ora i VPC possono comunicare attraverso il Transit Gateway.
4. Testing della Connettività
Per testare la connessione tra le VPC, possiamo avviare due istanze EC2. Una istanza deve essere in ciascun VPC. Proviamo a comunicare tra loro con ping
.
- Avvia una EC2 in ogni VPC:
aws ec2 run-instances --image-id ami-xxxxxxxx --count 1 --instance-type t2.micro --subnet-id <SUBNET1_ID> --security-group-ids <SG1_ID>


aws ec2 run-instances --image-id ami-xxxxxxxx --count 1 --instance-type t2.micro --subnet-id <SUBNET2_ID> --security-group-ids <SG2_ID>


- Abilita il traffico ICMP nei Security Group:
aws ec2 authorize-security-group-ingress --group-id <SG1_ID> --protocol icmp --port -1 --cidr 10.0.0.0/8

aws ec2 authorize-security-group-ingress --group-id <SG2_ID> --protocol icmp --port -1 --cidr 10.0.0.0/8

- Connettersi e testare il ping:
A questo punto dobbiamo collegarci all’EC2. Abbiamo configurato con la CLI le EC2 senza una key pair e non possiamo collegarci in ssh. C’è un modo alternativo per entrare nella macchina in maniera sicura. Possiamo usare gli EC2 Instance Connect Endpoint di AWS che ci permette di entrare da internet in maniera sicura.
Vi lascio i link per usare Endpoint, documentazione ufficiale di AWS.
cosa è EC2 Instance Connect Endpoint aws
creare un EndPoint connect EC2
Una volta creato il nostro EndPoint, possiamo collegarci. Ci colleghiamo alla prima EC2. Io prendo quella che sta nella VPC 1. Se fate così, dovete segnarvi l’IP privato (Private IPv4 addresses) della seconda.
- Connettiti alla prima EC2 e prova a fare ping sull’altra.
- Esegui:
ping <PRIVATE_IP_SECOND_INSTANCE>

Se il ping funziona, la connessione tra le VPC è attiva!
Conclusion
In questo articolo abbiamo visto come creare una rete avanzata su AWS utilizzando due metodi:
- VPC Peering, per una connessione diretta tra due VPC.
- Transit Gateway, per una soluzione più scalabile e centralizzata.
Entrambe le soluzioni hanno casi d’uso specifici:
- Usa VPC Peering per connettività diretta e bassa latenza tra pochi VPC.
- Usa Transit Gateway per gestire molteplici connessioni tra VPC e altre reti.
Con questi strumenti, puoi creare una rete cloud scalabile ed efficiente su AWS. 🚀
Vi ringrazio di essere arrivati fino a qui, articolo diverso dal solito ma utile per comprendere le reti nel cloud.
Per oggi mi fermo qui, un’ abbraccio al prossimo articolo di tooldech!
Seguici sui social!