Einführung#
AWS Transit Gateway ist ein verwalteter Dienst, der 2018 eingeführt wurde und Konnektivität und Routing zwischen verschiedenen VPCs und On-Premises-Netzwerken bietet.
- Mehrere VPCs (mit einfacher Konfiguration und der Möglichkeit, neue VPCs hinzuzufügen, ohne neue Gateways oder Peering zu konfigurieren)
- Über mehrere Regionen hinweg
- Unternehmensdatenzentren (Kundensite) mit Customer Gateways
- Direct Connect
Typische Architektur#

Site-to-Site VPN#
[[Site-to-Site VPN]] kann auch mit dem Transit Gateway anstelle des Virtual Private Gateway erreicht werden. Das VPG kann nur an eine VPC angehängt werden, während das Transit Gateway die Verbindung der Kundensite mit mehreren VPCs ermöglicht. Darüber hinaus bietet es auch die Konnektivität zwischen diesen mehreren VPCs, ohne dass ein zusätzliches [[VPC Peering]] erforderlich ist. Das AWS Transit Gateway kann als Hub fungieren, der mehrere VPCs, Site-to-Site-VPN, Direct Connect und andere Regionen über verschiedene AWS-Konten hinweg verbindet (unter Verwendung von Transit Gateway Peering)
Beispielübersicht#

Das obige Beispiel umfasst 2 Szenarien der Nutzung des Transit Gateways
- Konnektivität zwischen 2 VPCs
- Konnektivität zwischen VPCs und Site-to-Site-Konnektivität, die beide VPCs umfasst
Terraform:#
https://github.com/rangalo/aws-infra-tf/tree/main/hardik/transit-gw
resource "aws_ec2_transit_gateway" "eu-central-tgw" {
amazon_side_asn = var.aws_asn
default_route_table_association = "enable"
default_route_table_propagation = "enable"
tags = {
terraform = "true"
Name = "eu-central-tgw"
}
}
resource "aws_ec2_transit_gateway_vpc_attachment" "dev-vpc-tgw-attachment" {
subnet_ids = [for s in module.networking1.private_subnets : s.id]
transit_gateway_id = aws_ec2_transit_gateway.eu-central-tgw.id
vpc_id = module.networking1.vpc_id
}
resource "aws_ec2_transit_gateway_vpc_attachment" "prod-vpc-tgw-attachment" {
subnet_ids = [for s in module.networking2.private_subnets : s.id]
transit_gateway_id = aws_ec2_transit_gateway.eu-central-tgw.id
vpc_id = module.networking2.vpc_id
}
AWS-Seiteneinrichtung#
VPC 1 DEV - CIDR 10.0.0.0/16
VPC 2 PROD - CIDR 10.1.0.0/16
Customer GW mit öffentlicher IP der Libreswan-Instanz in einem anderen AWS-Konto, das als Kundendatenzentrum (Site) fungiert
Transit Gateway
- Transit Gateway-Anschluss zu VPC1 für jedes Subnetz in jeder AZ (Availability Zone), nennen wir sie tgw-attachment-vpc1, tgw-attachment-vpc-2
- VPN-Verbindung konfiguriert mit CGW-ID und TGW-ID mit statischem Routing. Dies wird automatisch einen TGW-Anschluss erstellen, den wir vorerst tgw-attachment-vpn nennen
Routing Es ist wichtig, das Routing mit Transit Gateways zu verstehen.
Das TGW wird mit einer Standard-Routingtabelle geliefert, die mit allen Anhängen verknüpft ist und auch propagiert wird. Da wir in unserem Beispiel statische Routen verwenden, müssen wir die statische Route für den VPN-Anschluss zur Standard-TGW-Routingtabelle hinzufügen.
| Ziel CIDR | Ziel | Automatisch hinzugefügt? |
|---|---|---|
| 10.0.0.0/16 | tgw-attachment-vpc-1 | Ja |
| 10.1.0.0/16 | tgw-attachment-vpc-2 | Ja |
| 172.31.0.0/16 | tgw-attachment-vpn | Nein |
Jede VPC benötigt auch eine Rückwärtsroute zum TGW. Die Routingtabelle jedes Subnetzes (das die Konnektivität benötigt) sollte zusätzlich die folgenden Routen enthalten.
| Ziel CIDR | Ziel |
|---|---|
| 10.0.0.0/8 | tgw_id |
| 172.31.0.0/16 | tgw_id |
Kundenseitige (Site) Einrichtung#
- Verwendung des Standard-VPC - CIDR 172.31.0.0/16
- EC2-Instanz namens openswan (da openswan nicht verfügbar ist, installieren wir libreswan), das mit user-data installiert wurde.
- Eine weitere EC2-Instanz zum Testen der Konnektivität mit Ping.
- Routing: Die Standard-Routingtabelle des Standard-VPC muss eine Route enthalten, um den gesamten für das AWS-Netzwerk bestimmten Datenverkehr, sowohl die VPCs, zur openswan-Instanz weiterzuleiten.
| Ziel CIDR | Ziel |
|---|---|
| 10.0.0.0/8 | default_network_interrface_of_openswan_ec2_instance |
Einrichtung der Site (VPN-Client mit libreswan)#
Gleich wie in [[Site to Site VPN]] beschrieben.
Feineinstellung der Konnektivität#
Das obige Beispiel bietet eine Standardkonnektivität zu allen beteiligten Netzwerken vpc1, vpc2 und vpn. Durch Bereitstellung einer separaten Routingtabelle für jeden Anschluss kann eine sehr feine Konnektivität erreicht werden, z. B. durch Isolierung bestimmter Netzwerke (z. B. vpc2).
Darüber hinaus kann der Zugriff auf das öffentliche Internet über ein bestimmtes VPC geleitet werden, um die Anzahl der NAT-Gateways zu reduzieren und damit die Kosten zu senken. Beispiel: https://aws.plainenglish.io/aws-transit-gateway-101-how-it-works-and-when-to-use-it-65c4369bcdb6

