Subnets and Routing
Subnet และ Route Table เป็นตัวกำหนดว่า Resource อยู่ใน network zone ใด และ traffic ออกจาก subnet ไปที่ไหน
0.0.0.0/0
Subnet basics
Subnet คือช่วง IP ภายใน VPC และต้องอยู่ใน Availability Zone เดียวเท่านั้น การกระจาย subnet หลาย AZ ช่วยลดความเสี่ยงจาก AZ failure และเป็นพื้นฐานของ Load Balancer, Auto Scaling และ Multi-AZ database
Subnet types
| Type | Route behavior | เหมาะกับ |
|---|---|---|
| Public subnet | มี route ไป Internet Gateway | ALB, NAT Gateway, bastion pattern บางกรณี |
| Private subnet | ไม่มี direct route ไป IGW แต่อาจออกผ่าน NAT Gateway | Application server, ECS task, internal service |
| Isolated subnet | ไม่มี route ออกนอก VPC | Database หรือ workload ที่คุยเฉพาะภายใน |
| VPN-only subnet | route ไป virtual private gateway หรือ transit path | Hybrid network |
Route Table
Route Table มีรายการ route ที่ประกอบด้วย Destination และ Target
เช่น 0.0.0.0/0 -> igw-... สำหรับ public subnet หรือ 0.0.0.0/0 -> nat-...
สำหรับ private subnet ที่ต้องออก Internet
Public route table
10.0.0.0/16 -> local
0.0.0.0/0 -> internet-gateway
Private route table
10.0.0.0/16 -> local
0.0.0.0/0 -> nat-gateway
Longest prefix match
ถ้ามีหลาย route ที่ match destination เดียวกัน route ที่เจาะจงที่สุดจะถูกเลือกก่อน เช่น 10.0.0.0/16
เจาะจงกว่า 0.0.0.0/0 ดังนั้น traffic ภายใน VPC จะใช้ local route ไม่ออก Internet
Common mistakes
- คิดว่า subnet เป็น public เพราะตั้งชื่อว่า public แต่ route table ไม่มี IGW route
- ลืม associate subnet กับ route table ที่ถูกต้อง
- ให้ private subnet ใช้ NAT Gateway ใน AZ อื่นโดยไม่เข้าใจ availability และ data processing path
- ลบหรือแก้ main route table โดยไม่รู้ว่า subnet ใดใช้ default association อยู่
Review questions
- อ่าน route table แล้วบอกได้ว่า subnet เป็น public, private หรือ isolated
- รู้ว่าต้อง associate subnet กับ route table ที่ถูกต้อง
- อธิบาย default route และ longest prefix match ได้
- Subnet หนึ่งสามารถข้ามหลาย Availability Zones ได้หรือไม่?
- Public subnet ถูกกำหนดจากชื่อหรือ route?
- Route
0.0.0.0/0มีความหมายว่าอะไร?