Để kết nối 2 VPC bằng AWS Transit Gateway, trước tiên, tạo một Transit Gateway và tạo attachment để kết nối cả hai VPC với TGW. Tiếp theo, cấu hình route table của mỗi VPC bằng cách thêm route đến CIDR của VPC còn lại, với target là Transit Gateway. Cuối cùng, cập nhật Security Group để cho phép lưu lượng ICMP và sử dụng private IP của các EC2 instance để kiểm tra kết nối bằng lệnh
ping.
AWS Transit Gateway hoạt động như thế nào?
AWS Transit Gateway (TGW) hoạt động như một router trung tâm, cho phép kết nối nhiều VPC thông qua mô hình hub-and-spoke. Thay vì kết nối trực tiếp từng cặp VPC, bạn chỉ cần kết nối mỗi VPC với TGW thông qua một attachment.
Với hai VPC, bạn có thể sử dụng VPC Peering để thiết lập kết nối. Tuy nhiên, khi số lượng VPC tăng lên 5–10 hoặc nhiều hơn, việc quản lý các kết nối peering riêng lẻ sẽ trở nên phức tạp. Transit Gateway giúp đơn giản hóa kiến trúc bằng cách tập trung kết nối và quản lý định tuyến tại một điểm duy nhất.
Các khái niệm cần nắm
- Attachment: Kết nối một VPC với Transit Gateway, cho phép lưu lượng mạng đi qua TGW.
- TGW Route Table: Bảng định tuyến bên trong Transit Gateway, xác định lưu lượng sẽ được chuyển tiếp đến attachment nào dựa trên địa chỉ đích.
- Association: Xác định attachment nào sử dụng TGW Route Table để tra cứu tuyến đường khi gửi lưu lượng qua TGW.
- Propagation: Cho phép các tuyến đường, thường là CIDR của VPC, được tự động quảng bá vào TGW Route Table để Transit Gateway có thể định tuyến đến mạng tương ứng.
- VPC Route Table: Bảng định tuyến bên trong VPC. Bạn vẫn cần thêm route với destination là CIDR của VPC đích và target là Transit Gateway để lưu lượng được chuyển đến TGW. Transit Gateway không tự động thêm các route này vào VPC Route Table.
Luồng hoạt động tổng quát
Khi EC2 trong VPC1 gửi lưu lượng đến EC2 trong VPC2, lưu lượng sẽ đi theo trình tự:
- EC2 trong VPC1 gửi gói tin đến private IP của EC2 trong VPC2.
- VPC Route Table của VPC1 xác định route đến CIDR của VPC2 và chuyển gói tin đến TGW.
- TGW tra cứu TGW Route Table được liên kết với attachment của VPC1 để xác định attachment đích.
- TGW chuyển tiếp gói tin qua attachment của VPC2.
- VPC Route Table của VPC2 định tuyến gói tin đến EC2 đích.
Kiến trúc
Sơ đồ logic:
VPC-A (10.10.0.0/16) VPC-B (10.20.0.0/16)
Public subnet 10.10.1.0/24 Private subnet 10.20.1.0/24
EC2-A (có public IP) ---- TGW -----------> EC2-B (chỉ private IP)
Bước 1: Tạo VPC A và VPC B
Vào VPC Console → Your VPCs → Create VPC → VPC and more.
VPC A (có public subnet để SSH từ máy bạn):
| Mục | Giá trị |
|---|---|
| Name tag auto-generation | Tích Auto-generate, nhập lab-tgw-a |
| IPv4 CIDR block | 10.10.0.0/16 |
| IPv6 CIDR block | No IPv6 CIDR block |
| Tenancy | Default |
| Number of Availability Zones | 1 |
| Number of public subnets | 1 |
| Number of private subnets | 0 |
| Customize subnets CIDR blocks | Public subnet: 10.10.1.0/24 |
| NAT gateways | None |
| VPC endpoints | None |
| DNS options | Tích cả Enable DNS hostnames và Enable DNS resolution |
Nhấn Create VPC và đợi workflow báo hoàn tất.

VPC B (hoàn toàn private):
| Mục | Giá trị |
|---|---|
| Name tag auto-generation | Tích Auto-generate, nhập lab-tgw-b |
| IPv4 CIDR block | 10.20.0.0/16 |
| Number of Availability Zones | 1 (chọn cùng AZ với VPC A) |
| Number of public subnets | 0 |
| Number of private subnets | 1 |
| Customize subnets CIDR blocks | Private subnet: 10.20.1.0/24 |
| NAT gateways | None |
| VPC endpoints | None |
| DNS options | Tích cả hai |
Nhấn Create VPC.

Bước 2: Tạo Security Group
Security Group cho VPC A (lab-tgw-sg-a, VPC lab-tgw-a-vpc), inbound:
| Type | Source |
|---|---|
| All traffic | 10.20.0.0/16 |
Security Group cho VPC B (lab-tgw-sg-b, VPC lab-tgw-b-vpc), inbound:
| Type | Source |
|---|---|
| All traffic | 10.10.0.0/16 |
Bước 3: Tạo Transit Gateway
Vào VPC Console → Transit gateways → Create transit gateway:
- Name tag:
lab-tgw - Description:
Transit Gateway for lab 2 VPC - Amazon side ASN: giữ mặc định
- DNS support: Enable
- Bỏ chọn Default route table association
- Bỏ chọn Default route table propagation
- Các tùy chọn còn lại giữ mặc định
Nhấn Create transit gateway và đợi trạng thái chuyển sang Available (khoảng 1–3 phút).

Bước 4: Tạo Transit Gateway Attachment
Attachment là “dây nối” thật sự giữa VPC và TGW. Mỗi VPC cần một attachment.
Vào Transit gateway attachments → Create transit gateway attachment, tạo 2 lần:
Attachment A
- Name tag:
lab-tgw-att-a - Transit gateway ID:
lab-tgw - Attachment type: VPC
- VPC ID:
lab-tgw-vpc-a - Subnet IDs:
lab-tgw-subnet-a-public
Attachment B
- Name tag:
lab-tgw-att-b - Transit gateway ID:
lab-tgw - Attachment type: VPC
- VPC ID:
lab-tgw-vpc-b - Subnet IDs:
lab-tgw-subnet-b-private

Bước 5: Cấu hình Transit Gateway Route Table (Association và Propagation)
Nhớ đơn giản: Association = attachment tra route ở bảng nào, Propagation = attachment đẩy CIDR của mình vào bảng nào.
Tạo route table: vào Transit gateway route tables → Create transit gateway route table:
- Name tag:
lab-tgw-rt-main - Transit gateway ID:
lab-tgw

Tạo Association: chọn lab-tgw-rt-main → tab Associations → Create association, lần lượt thêm lab-tgw-att-a và lab-tgw-att-b.


Tạo Propagation: tab Propagations → Create propagation, lần lượt thêm lab-tgw-att-a và lab-tgw-att-b.
Kiểm tra kết quả: mở tab Routes, bạn phải thấy 2 route dạng propagated:
| CIDR | Attachment | Type |
|---|---|---|
10.10.0.0/16 |
lab-tgw-att-a |
propagated |
10.20.0.0/16 |
lab-tgw-att-b |
propagated |
Bước 6: Cấu hình route trong VPC trỏ về Transit Gateway
Vào Route tables → Edit routes:
lab-tgw-rt-a (thêm vào route sẵn có):
| Destination | Target |
|---|---|
10.20.0.0/16 |
Transit Gateway → lab-tgw |
lab-tgw-rt-b:
| Destination | Target |
|---|---|
10.10.0.0/16 |
Transit Gateway → lab-tgw |

Dọn dẹp tài nguyên sau lab như thế nào?
Phải xóa theo đúng thứ tự, vì TGW không xóa được khi vẫn còn attachment. Mình ghi theo thứ tự an toàn nhất:
- Xóa Transit Gateway Attachments:
lab-tgw-att-a,lab-tgw-att-b(Actions → Delete). Đợi trạng thái chuyển sangDeleted, thường 1–2 phút. - Xóa Transit Gateway Route Table:
lab-tgw-rt-main. - Xóa Transit Gateway:
lab-tgw(Actions → Delete transit gateway). - Terminate 2 EC2:
lab-tgw-ec2-a,lab-tgw-ec2-b. - Xóa Security Group:
lab-tgw-sg-a,lab-tgw-sg-b. - Xóa Internet Gateway: detach
lab-tgw-igw-akhỏi VPC A rồi delete. - Xóa Subnet và Route Table (nếu cần), sau đó xóa 2 VPC.