Internet Gateway & NAT Gateway
Trong VPC, nếu bạn muốn resource như EC2 kết nối ra Internet (hoặc ngược lại), bạn cần sử dụng các thành phần chuyên biệt: Internet Gateway và NAT Gateway. Hai thành phần này tuy liên quan đến kết nối mạng bên ngoài, nhưng phục vụ mục đích và mức độ bảo mật khác nhau.
Internet Gateway (IGW) là gì
- Là một thành phần horizontally scaled, redundant, giúp kết nối VPC ra Internet.
- Là cổng để:
- EC2 trong public subnet có thể truy cập Internet.
- Internet có thể truy cập vào EC2 (nếu được phép qua Security Group).
Điều kiện để EC2 kết nối Internet qua IGW:
- Subnet gắn với Route Table có route
0.0.0.0/0 → IGW. - EC2 có public IP hoặc Elastic IP.
- Security Group/NACL cho phép lưu lượng vào/ra phù hợp.
Chú ý: Một VPC chỉ có thể gắn với một Internet Gateway tại một thời điểm.
NAT Gateway là gì?
- NAT (Network Address Translation) Gateway cho phép:
- EC2 trong private subnet truy cập ra Internet (VD: Download phần mềm,
npm install…). - Nhưng không cho phép Internet truy cập ngược lại.
- EC2 trong private subnet truy cập ra Internet (VD: Download phần mềm,
Tại sao dùng NAT Gateway?
- Đảm bảo tài nguyên quan trọng như EC2 app/database trong private subnet vẫn có thể gọi ra Internet để tải gói, gọi API,… mà vẫn được cách ly khỏi Internet trực tiếp.
- Là dịch vụ managed - không cần bảo trì, tự động mở rộng.
NAT Instance là gì?
Đây là version trước của NAT Gateway, hiện tại không còn được AWS recommend sử dụng. Tuy nhiên hãy cùng tìm hiểu về nó nhé!
- Có công dụng tương tự như NAT Gateway
- Là một Instance được gán EIP và đặt trong Public Subnet
- Bạn sẽ tự quản lý Instance này
- Route Table phải được config để route traffic từ private subnet đến NAT instance
⚠️
- Cần disable Source/Destination check của NAT Instance
So sánh IGW vs NAT Gateway vs NAT Instance
| Tiêu chí | Internet Gateway (IGW) | NAT Instance | NAT Gateway |
|---|---|---|---|
| Chức năng chính | Cho phép các resource trong public subnet giao tiếp trực tiếp với internet (cả inbound & outbound). | Cho phép các resource trong private subnet truy cập internet (chỉ outbound). | Cho phép các resource trong private subnet truy cập internet (chỉ outbound). |
| Hỗ trợ inbound từ internet | ✅ Có (nếu cấu hình Security Group & Route Table) | ❌ Không | ❌ Không |
| Outbound từ private subnet | ❌ Không | ✅ Có | ✅ Có |
| Public IP | Không có IP riêng, nhưng resource public phải có Elastic IP hoặc Public IP. | Gắn Elastic IP (Public IP tĩnh). | Gắn Elastic IP (Public IP tĩnh). |
| Hiệu năng | Không giới hạn băng thông | Phụ thuộc vào EC2 instance type | Tự động scale, băng thông cao (lên tới 45 Gbps) |
| High Availability (HA) | N/A (tự động HA) | Cần cấu hình thủ công (multi-AZ, health check) | Tự động HA trong 1 AZ, cần tạo nhiều NAT Gateway cho multi-AZ |
| Quản trị | Không cần quản lý | Cần tự quản lý OS, patch, security | Không cần quản lý (managed service) |
| Chi phí | Miễn phí, chỉ trả cho data transfer | Trả phí EC2 + EIP + data transfer | Trả phí theo giờ + data transfer |