</>Học Dev
Bài học

Tuần 4 - Ngày 1: VPC Fundamentals

Tuần 4 – Ngày 1

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ụ

VPC:10.0.0.0/1665,536IPstotal10.0.0.0-10.0.255.255Subnets:10.0.1.0/24(256IPs)-PublicAZ-a10.0.2.0/24(256IPs)-PublicAZ-b10.0.10.0/24(256IPs)-PrivateAZ-a10.0.20.0/24(256IPs)-PrivateAZ-b

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

TypeRoute to internetUse case
PublicDirect via IGWWeb servers, ALB, NAT GW
PrivateVia NAT GW (egress only)DB, app servers
IsolatedKhông có internetAir-gapped, compliance

Public Subnet conditions

  1. Route 0.0.0.0/0 → Internet Gateway trong route table
  2. Instance có Public IP hoặc Elastic IP
  3. (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

InternetIGWVPCSubnetEC2(PublicIP)

Setup

  1. Create IGW
  2. Attach to VPC
  3. Add route 0.0.0.0/0 → igw-xxx trong route table
  4. Subnet associate với route table này
  5. 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

VPCAZ-aAZ-bPublicSubnetPublicSubnetNATGWNATGWPrivatePrivateSubnetSubnetRoute:0/0Route:0/0NATGW(localAZ)NATGW(localAZ)

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

FeatureNAT GatewayNAT Instance
AvailabilityHA trong AZTự manage
BandwidthUp to 100 GbpsPhụ thuộc instance
MaintenanceAWS-managedSelf-managed
Security GroupKhông (chỉ NACL)
Bastion roleKhôngCó thể
Cost$0.045/hr + $/GBEC2 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

DestinationTargetStatusPropagated10.0.0.0/16localActiveNo0.0.0.0/0igw-xxxxxActiveNo192.168.0.0/16vgw-xxxxxActiveYes(BGP)

Route Priority

  • Longest Prefix Match (most specific wins)
  • 10.0.1.0/24 ưu tiên hơn 10.0.0.0/16
  • Local route luôn ưu tiên cao nhất

Targets

TargetMô tả
localTraffic trong VPC CIDR
igw-xxxInternet Gateway
nat-xxxNAT Gateway
vgw-xxxVirtual Private Gateway (VPN)
tgw-xxxTransit Gateway
pcx-xxxVPC Peering
vpce-xxxVPC Endpoint
eigw-xxxEgress-Only IGW (IPv6)
eni-xxxENI (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

  1. Enable IPv6 trên VPC (assign /56 từ Amazon)
  2. Add IPv6 CIDR /64 cho subnet
  3. Add route ::/0 → IGW (public) hoặc ::/0 → EIGW (private)
  4. 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

VPC:10.0.0.0/16AZ-1aAZ-1bPublic10.0.1/24Public10.0.2/24ALBALBNATGWNATGWPrivate10.0.11/24Private10.0.12/24WebtierASGWebtierASGPrivate10.0.21/24Private10.0.22/24ApptierASGApptierASGDB10.0.31/24DB10.0.32/24RDSMulti-AZRDSstandbyIGWPublicsubnetsNATGWPrivatesubnets(egressonly)

Câu hỏi ôn tập

  1. 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).

  2. 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.

  3. 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.

  4. 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.

  5. 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/16 vớ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