Tuần 4 - Ngày 1: VPC Fundamentals
Mục tiêu học tập
- Hiểu VPC architecture và CIDR block
- Phân biệt Public vs Private subnet
- Nắm Internet Gateway, NAT Gateway, NAT Instance
- Hiểu IPv4 và IPv6 trong VPC
1. Tổng quan VPC
VPC (Virtual Private Cloud) = mạng ảo riêng biệt trong AWS Region, nơi bạn toàn quyền kiểm soát:
- IP address range (CIDR)
- Subnets (per AZ)
- Route tables
- Network gateways (IGW, NAT, VPN, Transit Gateway)
- Security: Security Groups, NACLs, Flow Logs
Đặc điểm
- Region-scoped: VPC nằm trong 1 Region, span across all AZs của Region
- Default VPC tự tạo cho mỗi Region khi mở account (1 subnet/AZ, IGW attached)
- Custom VPC: tự thiết kế architecture
- Quota mặc định: 5 VPCs/Region (tăng được)
2. CIDR Block
IPv4 CIDR
- Allowed range: /16 (65,536 IPs) đến /28 (16 IPs)
- Private IP ranges (RFC 1918 — recommended):
10.0.0.0/8(16M IPs)172.16.0.0/12(1M IPs)192.168.0.0/16(65k IPs)
- Không overlap với VPC khác nếu cần peering/Transit Gateway
Ví dụ
Secondary CIDR Blocks
- Có thể add secondary IPv4 CIDR (lên đến 5 blocks per VPC)
- Mở rộng khi hết IP
- Phải không overlap với primary và VPC khác
IPv6 CIDR
- AWS-assigned /56 từ Amazon's pool
- Hoặc bring your own (BYOIP)
- Mỗi subnet IPv6 dùng /64
- IPv6 luôn là public (không có private IPv6 trong AWS)
3. Subnet
Định nghĩa
Subnet = subdivision của VPC CIDR, mỗi subnet thuộc 1 AZ.
Reserved IPs (5 IPs/subnet)
Subnet: 10.0.1.0/24 (256 IPs, 251 usable)
10.0.1.0 - Network address
10.0.1.1 - VPC Router
10.0.1.2 - DNS Server (.2 của VPC CIDR)
10.0.1.3 - Reserved (future use)
10.0.1.255 - Broadcast (không dùng trong VPC)
Subnet types
| Type | Route to internet | Use case |
|---|---|---|
| Public | Direct via IGW | Web servers, ALB, NAT GW |
| Private | Via NAT GW (egress only) | DB, app servers |
| Isolated | Không có internet | Air-gapped, compliance |
Public Subnet conditions
- Route 0.0.0.0/0 → Internet Gateway trong route table
- Instance có Public IP hoặc Elastic IP
- (Auto-assign Public IPv4 enabled cho subnet — optional)
4. Internet Gateway (IGW)
Đặc điểm
- Horizontally scaled, redundant, highly available (không cần lo HA)
- 1 IGW per VPC (only 1)
- No bandwidth limit
- Free (chỉ tính data transfer thông thường)
Workflow
Setup
- Create IGW
- Attach to VPC
- Add route
0.0.0.0/0 → igw-xxxtrong route table - Subnet associate với route table này
- Instance launched có Public IP
5. NAT Gateway
Định nghĩa
NAT Gateway = managed service cho phép private subnet instances initiate connection ra internet (egress) mà KHÔNG cho phép inbound từ internet.
Đặc điểm
- Managed by AWS (no maintenance)
- High availability trong 1 AZ (placement trong 1 AZ)
- Bandwidth scale tự động lên 100 Gbps
- Cần Elastic IP
- Đặt trong public subnet, route từ private subnet trỏ về NAT GW
Cost
- $0.045/hour (us-east-1, ~$32/month)
- $0.045/GB data processed
- Đắt → consider VPC Endpoints để giảm
Multi-AZ NAT
Best practice: 1 NAT GW per AZ để tránh single point of failure và tránh cross-AZ traffic charge.
6. NAT Instance (Legacy)
Đặc điểm
- EC2 instance chạy NAT software (Linux)
- Phải tự manage (patch, scale, HA)
- Disable Source/Dest check trên ENI
- Bandwidth phụ thuộc instance type
- Có thể dùng làm bastion host (NAT GW không)
- Có Security Group (NAT GW không có)
So sánh
| Feature | NAT Gateway | NAT Instance |
|---|---|---|
| Availability | HA trong AZ | Tự manage |
| Bandwidth | Up to 100 Gbps | Phụ thuộc instance |
| Maintenance | AWS-managed | Self-managed |
| Security Group | Không (chỉ NACL) | Có |
| Bastion role | Không | Có thể |
| Cost | $0.045/hr + $/GB | EC2 cost only |
Recommendation: Dùng NAT Gateway trừ khi có lý do specific (cost cực thấp + dual-purpose bastion).
7. Egress-Only Internet Gateway (IPv6)
Định nghĩa
Tương đương NAT Gateway nhưng cho IPv6 (vì IPv6 không có concept "private").
Đặc điểm
- Stateful, chỉ cho outbound IPv6 initiation
- Inbound blocked (egress-only)
- Free
- Use case: IPv6 private subnet instances cần outbound internet
8. Route Tables
Cấu trúc
Route Priority
- Longest Prefix Match (most specific wins)
10.0.1.0/24ưu tiên hơn10.0.0.0/16- Local route luôn ưu tiên cao nhất
Targets
| Target | Mô tả |
|---|---|
local | Traffic trong VPC CIDR |
igw-xxx | Internet Gateway |
nat-xxx | NAT Gateway |
vgw-xxx | Virtual Private Gateway (VPN) |
tgw-xxx | Transit Gateway |
pcx-xxx | VPC Peering |
vpce-xxx | VPC Endpoint |
eigw-xxx | Egress-Only IGW (IPv6) |
eni-xxx | ENI (NAT Instance, firewall appliance) |
Main Route Table vs Custom
- Mỗi VPC có 1 Main Route Table (default)
- Subnet không associated với route table cụ thể → dùng Main
- Best practice: Tạo custom route table cho mỗi subnet type (public, private)
9. Elastic IP (EIP)
Định nghĩa
EIP = static public IPv4 address allocated cho account, có thể move giữa instances.
Đặc điểm
- Public IP cố định (không đổi khi stop/start instance)
- Free khi attached vào running instance
- Tính phí nếu không attached ($0.005/hour) hoặc attached vào stopped instance
- Limit: 5 EIPs/account/Region (request tăng)
Use case
- NAT Gateway, NAT Instance
- Web server cần fixed IP
- Whitelist external services
Best practice
- Đừng over-allocate EIPs (tính phí)
- Dùng DNS thay vì EIP nếu có thể
- Cho web app: dùng ALB/NLB (NLB có static IP per AZ tự động)
10. Public IPv4 (Pricing change 2024)
Cập nhật quan trọng (2024-02-01)
- AWS tính phí $0.005/hour cho mọi public IPv4 address (kể cả attached, kể cả EC2 free tier)
- 1 IPv4 = $3.6/month
- Includes: EC2 public IP, Elastic IP, ELB public IP, NAT Gateway
Implication
- Pricing tăng cho workload có nhiều public IPs
- Encourage IPv6 adoption, private subnets + NAT, CloudFront, VPC Endpoints
11. IPv6 trong VPC
Đặc điểm
- IPv6 luôn public (no private IPv6)
- Mỗi instance có thể có IPv6 + IPv4 (dual stack)
- Hoặc IPv6-only instance (cần subnet IPv6-only)
- Free (IPv6 không bị charge như IPv4)
Setup
- Enable IPv6 trên VPC (assign /56 từ Amazon)
- Add IPv6 CIDR /64 cho subnet
- Add route
::/0 → IGW(public) hoặc::/0 → EIGW(private) - Enable IPv6 trên instance ENI
Use case
- New apps designed for IPv6 (mobile, IoT)
- Save cost so với IPv4 (Feb 2024 pricing change)
- Future-proof
12. VPC Architecture Example
Pattern: 3-tier web application
Câu hỏi ôn tập
-
VPC CIDR allowed range là gì? (/X đến /Y)
Xem đáp án
/16 (65,536 IPs) đến /28 (16 IPs). VPC CIDR phải nằm trong private IP ranges: 10.0.0.0/8, 172.16.0.0/12, hoặc 192.168.0.0/16. Không thể thay đổi primary CIDR sau khi tạo VPC, nhưng có thể add secondary CIDR blocks. Mỗi subnet mất 5 IPs (network, VPC router, DNS, reserved, broadcast).
-
Mỗi VPC có thể attach mấy IGW?
Xem đáp án
1 IGW per VPC (1-to-1 relationship). IGW là highly available, redundant, horizontally scaled — không phải SPOF. Một IGW chỉ attach được vào 1 VPC cùng lúc. Nếu cần internet access cho nhiều VPCs trong nhiều accounts, dùng Transit Gateway + centralized egress VPC pattern.
-
Tại sao nên có NAT Gateway ở mỗi AZ?
Xem đáp án
NAT Gateway là AZ-scoped — chỉ serve traffic trong AZ của nó. Nếu chỉ có 1 NAT GW ở AZ-a: (1) Private instances ở AZ-b phải route qua AZ-a → tăng latency + cross-AZ data transfer cost ($0.01/GB), (2) Nếu AZ-a fail, tất cả private instances mất internet access. Mỗi AZ có 1 NAT GW riêng = HA + giảm cross-AZ cost.
-
Public subnet và Private subnet khác nhau ở điểm gì cốt lõi?
Xem đáp án
Điểm cốt lõi là route table: Public subnet có route
0.0.0.0/0 → IGW— instances có thể reach internet trực tiếp (nếu có Public IP). Private subnet không có route đến IGW — outbound internet phải qua NAT Gateway. Subnet tự nó không public/private — routing table quyết định. Instances trong public subnet vẫn cần Public IP để nhận inbound traffic từ internet. -
Pricing change 2024 cho Public IPv4 là gì?
Xem đáp án
Từ tháng 2/2024, AWS tính phí $0.005/giờ cho tất cả Public IPv4 addresses (cả Elastic IP và IP tự assign), kể cả khi instance đang running. Trước đó chỉ tính phí Elastic IP khi không attached. Lý do: IPv4 address scarcity. Để giảm cost: chuyển sang IPv6 (miễn phí), dùng Private IP + ALB, hoặc release IP không dùng.
Bài tập thực hành
- Tạo Custom VPC
10.0.0.0/16với 4 subnets (2 public, 2 private trong 2 AZ) - Attach IGW vào VPC, configure public route table
- Launch NAT Gateway trong public subnet, configure private route table
- Launch EC2 trong private subnet, test outbound internet (curl ifconfig.io)
- Enable IPv6 cho VPC, test IPv6 connectivity
- Allocate EIP, attach vào EC2, observe Public IP change
Tài liệu tham khảo chính thức
Tiếp theo: Subnets và Routing