VPC Study Guide

Master AWS VPC

Topic paling banyak keluar dalam SAA-C03. Faham konsep ni dan banyak soalan lain akan jadi senang.

🏘️

Mental Model — VPC Macam Apa?

↑ Top

Bayangkan VPC sebagai kawasan perumahan gated kau sendiri dalam AWS cloud — kau yang design layout, tentukan IP ranges, decide siapa boleh masuk.

VPC vs Tailscale:Tailscale buat private overlay network antara devices yang dah wujud (macam Site-to-Site VPN). VPC adalah “tanah” asas dimana AWS resources kau dilahirkan dan hidup — lebih fundamental, bukan sekadar tunnel.

🏠

VPC

Kawasan perumahan keseluruhan — kau tentukan boundary (CIDR range)

🛤️

Subnets

Jalan-jalan dalam kawasan — public (ada jalan keluar IGW) vs private (lorong dalam je)

🚪

Internet Gateway

Pintu pagar utama — kenderaan masuk DAN keluar, free, satu per VPC

🔁

NAT Gateway

Pintu belakang — orang dalam boleh keluar (outbound), orang luar tak boleh masuk

📋

Route Tables

Papan tanda jalan — arahkan traffic ke mana pergi dalam kawasan

💂

Security Groups

Bodyguard setiap rumah (EC2) — stateful, ingat siapa dia bagi masuk

🚧

NACLs

Checkpoint kat pintu masuk jalan (subnet) — stateless, check semua kenderaan dua arah

🔢

CIDR — IP Address Reference

↑ Top

Dari mana datang nombor 10.0.0.0 atau 172.31.0.0?

Masa create VPC, kau pilih sendiri IP range dari RFC 1918 private ranges — ranges ni tidak boleh di-route kat internet public, sebab tu sesuai untuk internal network. Kau tak boleh guna IP public macam 89.x.x.x untuk VPC.

10.0.0.0/8

Terbesar — enterprise, banyak subnets

e.g. 10.0.0.0/16

172.16.0.0/12

Medium — AWS default VPC guna ini

AWS default: 172.31.0.0/16

192.168.0.0/16

Paling biasa — rumah/pejabat kecil

e.g. 192.168.0.0/24

Apa maksud /16 tu? Nombor selepas slash = berapa bits dikunci sebagai network prefix — bukan bilangan IPs. IPv4 ada 32 bits, baki bits lepas prefix = host bits → tentukan berapa IPs dalam range.

/1616 bits kunci, 16 bits bebas

2¹⁶ = 65,536 IPs

/2424 bits kunci, 8 bits bebas

2⁸ = 256 IPs

/2525 bits kunci, 7 bits bebas

2⁷ = 128 IPs

Sebab tu dalam route table kau nampak 172.31.0.0/16 — itu AWS default VPC range yang kau pilih masa setup.

Structure IP Address — Network vs Host

Setiap IPv4 address ada 32 bits, dibahagi kepada 4 kumpulan 8-bit (octet). Subnet mask tentukan mana bahagian Network (prefix) dan mana bahagian Host.

Contoh: 192.168.100.10 dengan /24 (255.255.255.0)

192

11000000

8 bits

168

10101000

8 bits

100

01100100

8 bits

10

00001010

8 bits

255

11111111

255

11111111

255

11111111

0

00000000

Network portion— 24 bits (3 octets) dikunci oleh /24Host portion— 8 bits bebas, boleh assign ke devices

Peraturan mudah

192.168.100.10 — bahagian depan (192.168.100) = Network Address, bahagian belakang (10) = Host Address. Semua devices dalam subnet yang sama berkongsi bahagian Network yang sama.

Contoh soalan exam: Cari Network Address

PC diberi IP 192.168.50.191/26. Apa Network Address-nya?

1

/26 → 26 bits network, 6 bits host. Subnet mask octet terakhir: 256 − 2⁶ = 256 − 64 = 192 → mask = 255.255.255.192

2

Octet terakhir IP = 191 (10111111). AND dengan mask 192 (11000000) = 10000000 = 128

3

Network Address = 192.168.50.128

Shortcut: /26 = blok saiz 64 (2⁶). Cari gandaan 64 yang ≤ 191 → 0, 64, 128, 192... → 128

Formula

Usable IPs = 2^(32 − prefix) − 5

AWS reserve 5 IPs setiap subnet: .0 network · .1 VPC router · .2 DNS · .3 future · .255 broadcast

PrefixTotal IPsUsable IPsCommon Use
/1665,53665,531VPC range
/204,0964,091Large subnet
/24256251Standard subnet ⭐
/266459Small subnet ⭐
/273227Exam favourite ⭐
/281611AWS minimum

Shortcut exam: Hafal /24=251, /26=59, /27=27. Kalau lupa, guna formula: tolak prefix dari 32 → hasilkan 2^x → tolak 5.

📐 Cara Kira — Step by Step

1Cari host bits

32 − prefix

32 − 26 = 6 bits

2Kira total IPs

2 ^ host bits

2⁶ = 64 IPs

3Tolak 5 reserved

total − 5

64 − 5 = 59 usable

Contoh pengiraan

/24
32−24 = 82⁸ = 256256−5 = 251
10.0.1.0 – 10.0.1.255Standard subnet, exam kerap guna
/26
32−26 = 62⁶ = 6464−5 = 59
10.0.1.0 – 10.0.1.63Small subnet, boleh buat 4 subnet dalam /24
/27
32−27 = 52⁵ = 3232−5 = 27
10.0.1.0 – 10.0.1.31Exam favourite — hafal 27 usable IPs
/28
32−28 = 42⁴ = 1616−5 = 11
10.0.1.0 – 10.0.1.15AWS minimum subnet size

5 IPs yang AWS reserve setiap subnet (official docs ↗)

IP AddressReserved For
10.0.0.0Network address
10.0.0.1VPC routerAWS reserved
10.0.0.2DNS serverBase of VPC CIDR + 2
10.0.0.3Future useAWS reserved
10.0.0.255Broadcast addressBroadcast not supported in VPC

Contoh di atas untuk subnet 10.0.0.0/24. IP values berubah mengikut CIDR kau, tapi sentiasa 5 IPs dikira dari mana-mana subnet. Sumber: AWS Subnet Sizing docs

🔀

Public vs Private Subnet

↑ Top
🟢

Public Subnet

  • Route table ada 0.0.0.0/0 → IGW
  • EC2 mesti ada Public atau Elastic IP
  • Internet BOLEH initiate connection masuk
  • Guna untuk: web servers, ALB, NAT GW
🔒

Private Subnet

  • Tiada route ke IGW dalam route table
  • EC2 tiada public IP
  • Internet TIDAK boleh initiate connection masuk
  • Outbound via NAT GW (berbayar, optional)
  • Guna untuk: databases, app servers, Lambda

Ingat: Subnet jadi “public” kerana ada route ke IGW — bukan kerana namanya “public”. Kau boleh namakan apa je, yang penting route table kena ada 0.0.0.0/0 → IGW.

🔐

Security Groups vs NACLs — Yang Paling Selalu Confused

↑ Top
FeatureSecurity Group (SG)Network ACL (NACL)
Applied atEC2 / ENI (instance level)Subnet boundary
Stateful?✅ YES — reply auto allowed❌ NO — check EVERY packet both ways
Rule typesAllow only (no deny)Allow AND Deny
Can block IPs?❌ Cannot deny specific IPs✅ Yes, explicit DENY rules
Default (new)Deny all inbound, allow all outDefault NACL = allow all
Rule evaluationAll rules evaluated togetherLowest number first (first match wins)
ScopeOnly instances SG is attached toAll instances in that subnet

🧠 Cara Mudah Ingat

SG = Smart/Stateful. Instance level. Allow only. Guna untuk “allow app A talk to app B”.

NACL = Naive/Needs-both-ways. Subnet level. Can deny. Guna untuk “block this IP range”.

📡

Traffic Flow — Journey Request melalui VPC

↑ Top

User dari internet buat HTTP request ke EC2 web server dalam public subnet:

1
Internet

User hantar request dari browser

2
Internet Gateway (IGW)

AWS entry point — check VPC route table ada route ke subnet

3
NACL — Inbound Check

Subnet checkpoint (stateless). Rules diproses ikut nombor. Ada DENY rule? Stop. Allow? Teruskan.

4
Subnet

Traffic masuk ke public subnet

5
Security Group — Inbound Check

Instance bodyguard (stateful). Allow port 80/443? Kalau tak ada rule, BLOCK.

6
EC2 Instance

Request sampai ke application! 🎉

↩ Reply / Response Path

EC2 → SG outbound (stateful: auto allow reply — no rule needed) → NACL outbound (stateless: kena ada explicit rule untuk ephemeral ports 1024–65535!) → IGW → Internet

NACL stateless = kena explicit outbound rule. SG stateful = auto allow reply. Ini selalu keluar dalam exam!

🔁

NAT Gateway — Private Subnet Outbound Flow

↑ Top

EC2 dalam private subnet nak download patches atau call external API:

1
EC2 Instance (Private Subnet)

Initiate outbound request — ada Private IP sahaja, internet tak kenal IP ni

2
Private Route Table

0.0.0.0/0 → nat-gateway-id — traffic keluar dihalakan ke NAT Gateway dalam public subnet

3
NAT Gateway (Public Subnet)

Translate Private IP → Elastic IP. Internet nampak Elastic IP sahaja, bukan IP EC2 sebenar.

4
Public Route Table

0.0.0.0/0 → igw-id — traffic dari NAT GW keluar ke internet melalui Internet Gateway

5
Internet Gateway → Internet

Request sampai ke internet. Reply balik melalui path yang sama (EC2 ← NAT ← IGW ← Internet).

Public Subnet Route Table

DestinationTarget
172.31.0.0/16local
0.0.0.0/0igw-id

Private Subnet Route Table

DestinationTarget
172.31.0.0/16local
0.0.0.0/0nat-gateway-id

⛔ Tiada Inbound

Internet TIDAK BOLEH initiate connection ke private subnet — tiada route dari IGW ke private subnet. NAT GW = outbound only.

🏰 Bastion / Jump Host

Nak SSH ke private instance? Letak EC2 (bastion host) dalam public subnet. Connect ke bastion dulu, then SSH ke private instance dari dalam.

🔗

VPC Connectivity — Pilih Yang Mana?

↑ Top
🤝

VPC Peering

Free (standard data transfer rates)

Guna bila: 2 VPCs je — simple, murah, cross-account/cross-region boleh

Tapi: Non-transitive (A↔B, B↔C ≠ A↔C). IP ranges tak boleh overlap.

🌐

Transit Gateway (TGW)

Berbayar — per attachment + data

Guna bila: 3+ VPCs atau on-premises. Transitive routing. Cross-region.

Tapi: Kos per attachment + per GB. Overkill untuk 2 VPCs.

🔗

VPC Endpoints

Gateway = Free. Interface = Berbayar

Guna bila: EC2 nak access S3/DynamoDB (Gateway, free) atau AWS services lain (Interface)

Tapi: Bukan untuk connect VPC-ke-VPC. Untuk EC2-to-AWSservice sahaja.

🔒

Site-to-Site VPN

Per VPN connection + data transfer

Guna bila: On-premises ke VPC — quick setup, guna internet yang dah ada

Tapi: Latency tak konsisten (traverse internet public). Bandwidth terhad.

📡

Direct Connect

Mahal — dedicated physical connection

Guna bila: On-premises ke VPC — consistent latency, high bandwidth, compliance

Tapi: Setup lambat (weeks/months), mahal. Guna untuk serious workloads.

🧠

Memory Tricks — Cara Mudah Ingat

↑ Top
CIDR — IP Dari Mana?: Kau pilih sendiri dari RFC 1918 private ranges: 10.x, 172.16–31.x, 192.168.x. Bukan public IP. AWS default VPC guna 172.31.0.0/16.
Slash bukan bilangan IP: /16 bukan 16 IPs — ia 16 bits dikunci. 32−16=16 bits bebas → 2^16 = 65,536 IPs. /24 = 256 IPs, /27 = 32 IPs.
Network vs Host: 192.168.100.10/24 → 192.168.100 = Network (3 octets, 24 bits), .10 = Host. Semua devices dalam subnet sama berkongsi network portion yang sama.
Cari Network Address: IP/26: blok saiz 64. Cari gandaan 64 ≤ last octet. 191 → 128 ✓. Atau AND binary: 10111111 AND 11000000 = 10000000 = 128.
CIDR Formula: 32 − prefix = bits. 2^bits = total. Tolak 5 = usable. Hafal: /24=251, /26=59, /27=27
IGW vs NAT: IGW = dua arah (in + out), free. NAT = outbound je, berbayar. NAT DUDUK DALAM PUBLIC SUBNET!
SG = Stateful: "SG ingat siapa dia bagi masuk — reply auto OK". NACL = "check tiap packet dua arah, kena ada explicit rules"
SG tak boleh deny: SG = allow only. Nak block specific IP address? → Guna NACL Deny rule
NACL outbound trap: NACL stateless → kena ada outbound rule untuk ephemeral ports 1024–65535 untuk replies boleh keluar
VPC Peering = non-transitive: A↔B dan B↔C, tapi A tak reach C. Macam "kawan kawan bukan kawan aku". Guna TGW kalau 3+ VPCs
Gateway Endpoint = Free: "GD Free" — Gateway untuk S3 + DynamoDB = percuma. Interface Endpoint (semua lain) = berbayar
Default NACL vs Custom NACL: Default NACL = allow all (generous). Custom NACL = deny all by default (strict — kena add rules sendiri)
Route table troubleshoot: No internet? Check: (1) ada 0.0.0.0/0 route ke IGW? (2) subnet associate route table betul? (3) EC2 ada public IP?
Peering vs TGW: 2 VPCs = Peering (simpler, cheaper). 3+ VPCs semua nak communicate = Transit Gateway (transitive)
VPC macam Tailscale?: Lebih tepat: VPC = "tanah" AWS resources kau wujud. Tailscale/Site-to-Site VPN = tunnel yang connect places yang dah wujud.
🎯

Exam Quick Wins — Scenario → Jawapan

↑ Top
Scenario
Jawapan
Private subnet EC2 perlu download patches dari internet
NAT Gateway (letak dalam public subnet)
Block specific IP address dari masuk ke subnet
NACL — tambah Deny rule (SG tak boleh deny)
Subnet tak dapat access internet walaupun ada IGW
Check route table: ada 0.0.0.0/0 → IGW? Subnet associate?
EC2 private subnet access S3 tanpa NAT (jimat kos)
S3 Gateway VPC Endpoint (percuma)
Connect 10 VPCs dan 3 on-premises data centers
Transit Gateway (TGW)
Connect 2 VPCs dari different accounts
VPC Peering (pastikan IP ranges tak overlap!)
High bandwidth, consistent low latency, on-prem ke AWS
Direct Connect
VPC A boleh reach B, B boleh reach C, tapi A tak boleh reach C
Non-transitive peering — buat A↔C peering atau guna TGW
Berapa usable IPs dalam /27?
2^(32−27) − 5 = 32 − 5 = 27 usable IPs
Access SSM, ECR dari private subnet secara private
Interface VPC Endpoint (PrivateLink) — berbayar