Master AWS VPC
Topic paling banyak keluar dalam SAA-C03. Faham konsep ni dan banyak soalan lain akan jadi senang.
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
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.
2¹⁶ = 65,536 IPs
2⁸ = 256 IPs
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
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?
/26 → 26 bits network, 6 bits host. Subnet mask octet terakhir: 256 − 2⁶ = 256 − 64 = 192 → mask = 255.255.255.192
Octet terakhir IP = 191 (10111111). AND dengan mask 192 (11000000) = 10000000 = 128
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
| Prefix | Total IPs | Usable IPs | Common Use |
|---|---|---|---|
| /16 | 65,536 | 65,531 | VPC range |
| /20 | 4,096 | 4,091 | Large subnet |
| /24 | 256 | 251 | Standard subnet ⭐ |
| /26 | 64 | 59 | Small subnet ⭐ |
| /27 | 32 | 27 | Exam favourite ⭐ |
| /28 | 16 | 11 | AWS 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
32 − prefix
32 − 26 = 6 bits
2 ^ host bits
2⁶ = 64 IPs
total − 5
64 − 5 = 59 usable
Contoh pengiraan
5 IPs yang AWS reserve setiap subnet (official docs ↗)
| IP Address | Reserved For |
|---|---|
| 10.0.0.0 | Network address |
| 10.0.0.1 | VPC router— AWS reserved |
| 10.0.0.2 | DNS server— Base of VPC CIDR + 2 |
| 10.0.0.3 | Future use— AWS reserved |
| 10.0.0.255 | Broadcast address— Broadcast 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 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.
| Feature | Security Group (SG) | Network ACL (NACL) |
|---|---|---|
| Applied at | EC2 / ENI (instance level) | Subnet boundary |
| Stateful? | ✅ YES — reply auto allowed | ❌ NO — check EVERY packet both ways |
| Rule types | Allow only (no deny) | Allow AND Deny |
| Can block IPs? | ❌ Cannot deny specific IPs | ✅ Yes, explicit DENY rules |
| Default (new) | Deny all inbound, allow all out | Default NACL = allow all |
| Rule evaluation | All rules evaluated together | Lowest number first (first match wins) |
| Scope | Only instances SG is attached to | All 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”.
User dari internet buat HTTP request ke EC2 web server dalam public subnet:
User hantar request dari browser
AWS entry point — check VPC route table ada route ke subnet
Subnet checkpoint (stateless). Rules diproses ikut nombor. Ada DENY rule? Stop. Allow? Teruskan.
Traffic masuk ke public subnet
Instance bodyguard (stateful). Allow port 80/443? Kalau tak ada rule, BLOCK.
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!
EC2 dalam private subnet nak download patches atau call external API:
Initiate outbound request — ada Private IP sahaja, internet tak kenal IP ni
0.0.0.0/0 → nat-gateway-id — traffic keluar dihalakan ke NAT Gateway dalam public subnet
Translate Private IP → Elastic IP. Internet nampak Elastic IP sahaja, bukan IP EC2 sebenar.
0.0.0.0/0 → igw-id — traffic dari NAT GW keluar ke internet melalui Internet Gateway
Request sampai ke internet. Reply balik melalui path yang sama (EC2 ← NAT ← IGW ← Internet).
Public Subnet Route Table
| Destination | Target |
|---|---|
| 172.31.0.0/16 | local |
| 0.0.0.0/0 | igw-id |
Private Subnet Route Table
| Destination | Target |
|---|---|
| 172.31.0.0/16 | local |
| 0.0.0.0/0 | nat-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 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 + dataGuna 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 = BerbayarGuna 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 transferGuna 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 connectionGuna bila: On-premises ke VPC — consistent latency, high bandwidth, compliance
Tapi: Setup lambat (weeks/months), mahal. Guna untuk serious workloads.