Big Picture of AWS Networking Services
VPC ဆိုတာဘာလဲပေါ့ ?
Virtual private cloud လို့ခေါ်တဲ့ VPC ထဲမှာကျွန်တ်ောတို့ Networking နဲ့ပတ်သတ်တဲ့ AWS ရဲ့ services တွေကိုတစ်ချက် breakdown လုပ်ကြည့်လိုက်ရအောင်။
Subnets
AWS ထဲမှာ ကျွန်တော်တို့က VPC တစ်ခုကို Create လုပ်လိုက်ပြီဆိုတာနဲ့ CIDR တစ်ခုကို သတ်မှတ်ပေးရမှာပါ။ အဲ့ဒီ CIDR ထဲကမှ Subnet တွေကို ပြန်ပြီး define လုပ်ပေးလို့ရပါတယ်။ ဥပမာ - 10.0.0.0/16 ဆိုတဲ့ CIDR range ထဲကနေပြီးတော့ 10.0.1.0/24 ဆိုတဲ့ Subnet ပြန်ခွဲလိုက်တာမျိုးပါ။ CIDR တွေကို ကြိုက်တဲ့ IP range ယူသုံးနိုင်ပါတယ်။ Public IP range တွေကို လဲ လိုအပ်ချက်အရယူသုံးလို့ရပေမယ့် နောက်ပိုင်း ပြဿနာအကြီးကြီးတတ်နိုင်တဲ့ အတွက် သတိပြုပြီးသုံးသင့်ပါတယ် ။ Private IP range ထဲက IP တွေကိုလဲ နောက်ပိုင်း VPC တွေတစ်ခုနဲ့တစ်ခုချိတ်ဆက်ဖို့ရှိတယ်ဆိုရင် မထပ်အောင်သုံးသင့်ပါတယ်။ နောက်ပြီးတော့ AWS မှာ reserved IP ဆိုတာရှိပါတယ်။ 10.0.0.0/24 ဆိုတဲ့ CIDR block မှာ စုစုပေါင်း IP 254 ခုအသုံးပြုလို့ရပေမယ့် AWS ရဲ့ VPC ထဲမှာ useable IP က စုစုပေါင်း 251 ခုပဲပြပါတယ်။ ဆိုတော့ကာ ဥပမာ usable IP တွက်ခိုင်းတာမျိုးဆိုရင် reserved IP တွေကိုပါဖယ်ပြီးတွက်ဖို့ သတိချက်သင်ပါတယ်။
The user want to use 14 IPs for it’s instances. Which CIDR range should he use ?
10.0.0.0/28 or 10.0.0.0/27 ?
Ans : 10.0.0.0/27
AWS subnetting မှာ Public Subnet နဲ့ Private Subnet ဆိုတဲ့အခေါ်အဝေါ် ကို Public IP range နဲ့ Private IP range နဲ့ အမှတ်မမှားဖို့သတိချက်ရပါမယ် ။ Subnet တစ်ခုရဲ့ route table ထဲမှာ Internet Gateway နဲ့ တွဲထားတာကို Public subnet လို့ခေါ်ပြီး Internet Gateway မရှိတဲ့ Subnet ကိုတော့ Private Subnet လို့ AWS networking မှာမှတ်ယူနိုင်ပါတယ်။
- 10.0.0.0: Network address.
- 10.0.0.1: Reserved by AWS for the VPC router.
- 10.0.0.2: Reserved by AWS. The IP address of the DNS server is the base of the VPC network range plus two. For VPCs with multiple CIDR blocks, the IP address of the DNS server is located in the primary CIDR. We also reserve the base of each subnet range plus two for all CIDR blocks in the VPC. For more information, see Amazon DNS server.
- 10.0.0.3: Reserved by AWS for future use.
- 10.0.0.255: Network broadcast address. We do not support broadcast in a VPC, therefore we reserve this address.
Ref : AWS subnet sizing
Route Table
Route table ဆိုတာ လမ်းပြမြေပုံတစ်ခုပါပဲ ။ ဥပမာ - VPC ကိုမြို့တစ်ခုလို့ဆိုပါစို့ ၊ subnet တွေက တော့ အိမ်တွေအများကြီးပါတဲ့ block တွေပေါ့ ။အဲဒီ block တွေထဲမှာမှ End host IP or IP address လို့ခေါ်တဲ့ အိမ်တွေရှိတယ်ဆိုပါစို့။
ကျွန်တော်တို့ က IP တစ်ခုကို သွားချင်ရင် ဘယ်ကနေဘယ်လိုသွားရမယ်ဆိုတာ ကို ပြောပြပေးတဲ့ မြေပုံကို route table လို့ခေါ်တာပါ။ Route table တစ်ခုမှာ Destination နဲ့ Gateway ဆိုပြီးရှိပါတယ် ။ ဘယ်ကို သွားချင်တာလဲ ? နဲ့ ဘယ်ကနေသွားရမလဲဆိုတာပါပဲ ။
Example:
VPC Information:
- VPC IP Address Range: 10.0.0.0/16
Subnet Information:
Subnet Name Subnet IP Address Range Purpose Subnet A 10.0.1.0/24 Web Servers Subnet B 10.0.2.0/24 Database Servers Route Table for Subnet A:
Destination Target (Next Hop) Purpose 0.0.0.0/0 Internet Gateway ID Route internet-bound traffic through Internet Gateway 10.0.0.0/16 Local Keep local traffic within the VPC
- For Subnet A, the route table allows all internet-bound traffic (0.0.0.0/0) to be directed through the Internet Gateway, effectively providing internet access. Local traffic within the VPC (10.0.0.0/16) is kept local.
Route Table for Subnet B:
Destination Target (Next Hop) Purpose 10.0.0.0/16 Local Keep local traffic within the VPC
- For Subnet B, the route table only directs traffic within the VPC (10.0.0.0/16) to stay local and doesn’t route any traffic to the Internet Gateway. This subnet is isolated from the internet.
Internet Gateway
ကျွန်တော်တို့ ရဲ့ VPC ထဲက services တွေကပြင်ပက Internet ကို access လုပ်ဖို့ လိုအပ် လာတဲ့အခါမျိုးမှာ ကျွန်တော် တို့က Internet gateway ကိုအသုံးပြုလို့ရပါတယ်။ Internet gateway ပြင်ပ public internet နဲ့ VPC ရဲ့ ဝင်ပေါက်ထွက်ပေါက်ပေါ့။ Internet gateway နဲ့ Public subnet တွေကို Route table ကတစ်ဆင့် ချိတ်ဆက်ပေးပါတယ်။ VPC တစ်ခုမှာ IGW တစ်ခုသာ attach လုပ်လို့ရပါတယ်။
NAT Gateway
NAT Gateway ကတော့ Private subnet ထဲက တစ်ချို့ services တွေအင်တာနက်ပေါ် ကိုထွက်ဖို့လိုလာတဲ့အခါမှာအသုံးပြုပါတယ်။ AWS မှာ NAT GW ကို Public NAT နဲ့ Private NAT ဆိုပြီးနှစ်မျိုးခွဲထားပါတယ်။ကျွန်တော်တို့ local network တွေမှာ သုံးတဲ့ NAT GW နဲ့ အတူတူပါပဲ။ private subnet တွေထဲက servers တွေ internet access ရချင်တဲ့အခါ NAT gateway ကို သုံးလို့ရပါတယ်။ Public NAT ကိုအသုံးပြုဖို့အတွက် Elastic IP ကိုမဖြစ်မနေလိုအပ်တယ်။
When you assign an EIP to a public NAT gateway, the network border group of the EIP must match the network border group of the Availability Zone (AZ) that you’re launching the public NAT gateway into. If it’s not the same, the NAT gateway will fail to launch. You can see the network border group for the subnet’s AZ by viewing the details of the subnet. Similarly, you can view the network border group of an EIP by viewing the details of the EIP address. For more information about network border groups and EIPs, see Allocate an Elastic IP address.
Ref : AWS NAT Gateways
Gateway Endpoints
AWS ထဲမှာPrivate subnet တွေကနေ internet ကို ဖြတ်စရာမလိုပဲ AWS services ကို ချိတ်ဆက်နိုင်ဖို့အတွက် gateway endpoints တွေကို သုံးလို့ရပါတယ်။
- S3 Gateway
- DynamoDB Gateway
အားသာချက်ကတော့ Internet Gateway or NAT gateway တွေကိုဖြတ်စရာမလိုပဲနဲ့ သက်ဆိုင်ရာ services တွေကို communicate လုပ်လို့ရမယ် ။ အဲ့ဒီတော့ NAT gateway လိုမျိုး fee တွေကို လျှော့ချလို့ရတယ်။
VPC Peering
ကျွန်တော်တို့ ရဲ့ VPC တွေကို အိမ်တစ်ခုအနေ နဲ့သာမြင်ခဲ့မယ်ဆိုရင် တစ်ခြား အိမ် (VPC) ကို Connect လုပ်ဖို့အတွက်လမ်းဖောက်ဖို့လိုပါတယ် ။ အဲ့ဒီလမ်း တွေကို VPC peering လို့ခေါ်ပါတယ် ။ မတူညီတဲ့ VPC နှစ်ခု ကိုချိတ်ဆက်ချင်တဲ့အခါမှာ VPC peering ကိုအသုံးပြုလို့ရပါတယ်။
Formula to calculate the VPC peering : n(n-1)/2
n = number of VPCs.
Traffic between peered VPCs never traverses the public internet.
Transit Gateway
Transit Gateway ဆိုတာ AWS networking မှာတော့ တကယ့် အကောင်ပဲ။ ဥပမာ ကျွန်တော်တို့မှာ VPC နှစ်ခုပဲ ချိတ်ဆက်ဖို့လိုတယ်ဆိုရင် VPC peering ကိုအသုံးပြုလို့ရပါတယ် ။ ဒါပေမယ့် VPC အခု ၂၀ ၃၀ လောက်ချိတ်ဆက်ဖို့လိုလာပြီဆိုရင်ဘယ်လိုလုပ်မလဲ ? VPC တွေအကုန်လုံးကို Full-Mesh အနေနဲ့ချိတ်လို့ရတယ်ဆိုပေမယ့် n(n-1)/2 အရ peer တွေအများကြီးချိတ်ရမှာပါ။ အဲ့ဒီအတွက် Transit Gateway ဆိုတဲ့ ကောင်ပေါ်လာတာပါ။
ဒီအပြင် On-Prem Data center ကပါ VPC တွေနဲ့ ချိတ်ဆက်ချင်ရင် Transit gateway ကို လာချိတ်လို့ရပါသေးတယ်။ Transit Gateway ကိုသုံးလိုက်ခြင်းအားဖြင့် ကျွန်တော် တို့ရဲ့ Network topology ကိုပိုပြီး ရှင်းရှင်းလင်းလင်းဖြစ်စေတဲ့အပြင် Network Admin ကိုလဲ သက်သာစေပါတယ်။
Direct Connect and Site-To-Site(VPN)
- AWS Direct Connect ဆိုတာကျွန်တော်တို့ရဲ့ on-premise network နဲ့ AWS VPC တို့ကြားကတိုက်ရိုက်ဆက်သွယ်ပေးတဲ့ သီးသန့် မြန်နှုန်းမြင့် Connection တစ်ခုပါပဲ။ Direct Connect ကို အသုံးပြုမယ်ဆိုရင် public internet ကနေ ဖြတ်မသွားတဲ့ အတွက် ပိုမို လုံခြုံပြီးတော့ latency နည်းနည်းနဲ့ အမြန်နှုန်းကောင်းကောင်း အသုံးပြုနိုင်မှာပါ။
- ကျွန်တော်တို့ရဲ့ on-premise network နဲ့ AWS ကို လုံလုံခြုံခြုံ ချိတ်ဆက်ချင်တယ် Direct connect link ဖိုးလည်း မတတ်နိုင်ဘူး ၊ မလိုဘူး ဆိုရင်တော့ Site-to-Site connection(VPN) ကို အသုံးပြုပြီး ချိတ်ဆက်လို့ ရပါတယ်။
Customer Gateway
Customer Gateway ကို AWS site-to-site tunnel ထိုးတဲ့အခါမှာအသုံးပြုရပါတယ် ။ ဥပမာ - On-Prem မှာရှိတဲ့ On-Prem Firewall နဲ့ AWS VPC ကို IPsec tunnel အသုံးပြုပြီးတော့ Site-To-Site tunnel လုပ်ချင်တယ်ဆိုပါစို့ ။ AWS ရဲ့ Console ထဲမှာ VGW (VPN Gateway) ကို Create လုပ်ရပါတယ်။ တစ်ခြားတစ်ဖက်က On-Prem Firewall ကို ကိုယ်စားပြု ပေးမယ့် Customer Gateway ကိုလဲထပ်ပြီး create လုပ်ပေးရပါတယ်။ Customer gateway မှာ On-Prem firewall ရဲ့ External IP (Public IP or NAT device အနောက်မှာဆိုရင် NAT IP if NAT-traversal is being used) ကို ပြန် assign ထားပေးရပါတယ် ။ ဆိုလိုတာက VGW ကနေပြီးတော့ CGW မှာရှိတဲ့ Public IP ကိုသွားပြီးချိတ်ဆက်ချင်တာပါ။ အဲ့လိုVGW နဲ့ CGW အတွဲလေးရှိမှ On-prem ပေါ်မှာရှိတဲ့ Firewall ထဲမှာ ဘယ် IKE version ကိုအသုံးပြုပြီးတော့ Phase 1 tunnel လုပ်မယ် Phase 2 tunnel ကိုဘယ်လိုဆောက်မယ်ဆိုတဲ့ information တွေပါတဲ့ Configuration file ကို AWS console ထဲမှာ generate လုပ်လို့ရပါမယ်။ ပြီးရင် Local Firewall ပေါ် မှာလိုအပ်တဲ့ configuration တွေကိုထည့်ပေးရမှာပါ။
Route 53
DNS service တွေကို provide လုပ်ပေးတဲ့ AWS ရဲ့နာမည်ကြီး service တစ်ခုဖြစ်ပါတယ် ။ DNS service တွေအပြင် Domain register ပါလုပ်လို့ရပါတယ်။
Cloud Front
Content Delivery Network (CDN) ကို service ပေးတဲ့ AWS ရဲ့နောက်ထပ်နာမည်ကြီး service တစ်မျိုးပါပဲ။
အလွယ်နည်းနဲ့ပြောရမယ်ဆိုရင် ကျွန်တော် တို့ရဲ့ Main server က US-EAST region မှာရှိနေပြီးတော့ client တွေက Asia Region ကနေ Access လုပ်ချင်တယ်ဆိုရင် Latency issue ကိုကြုံတွေ့ရမှာပါ။ အဲ့ဒီလိုမဖြစ်အောင် AWS က Asia Region ရဲ့ Edge Node တစ်ခုမှာ Cache လုပ်ပေးထားပြီးတော့ response time တွေကိုမြန်ဆန်စေပါတယ် ။ နောက်ကွယ်မှာတော့ High speed bandwidth နဲ့ AWS ရဲ့ Edge တွေကိုချိတ်ဆက်ထားတာပါ။
NACL and Security Groups
NACL (Network Access Control Lists) ကို ကျွန်တော်တို့ Subnet level အတွက် Firewall လို့ပြောလို့ရပါတယ် ။ IP, Ports and protocol တွေကိုကြည့်ပြီးအဝင်အထွက်တွေကို Control လုပ်လို့ရပါတယ် ။ Stateless firewall ဖြစ်တဲ့အတွက် connection session တစ်ခုအတွက် inbound ရော outbound ရောကို သီးသန့်သတ်မှတ်ပေးရမှာပါ။
Security Groups ကတော့ NACL နဲ့မတူပဲ Instance level firewall လို့ပြောလို့ရပါတယ် ။ Stateful firewall Firewall ဖြစ်တဲ့အလျှောက် Inbound ဖြစ်ဖြစ် Outbound ဖြစ်ဖြစ် session တစ်ခုကို allow
ပေးထားရင်ရပါပြီ။
Feature | Network ACL | Security Group |
---|---|---|
Layer | Operates at subnet layer | Operates at instance level |
Rules | Allow/deny rules based on IP protocol, port, and CIDR block | Allow/deny rules based on IP protocol, port, and source/destination |
Statefulness | Stateless - Return traffic must be explicitly allowed | Stateful - Return traffic is automatically allowed |
AWS Resource Associations | Automatically applied to all instances in the associated subnet | Must be explicitly associated with instances |
Rule Processing Order | Processed before routing to/from instance | Processed after routing to/from instance |
Default Rules | By default all inbound and outbound traffic is denied | By default all inbound and outbound traffic is allowed |
Allow/Deny Logic | Applied in numbered order, last rule trumps conflicts | Applied in any order, deny rules always trump allow |
Public IP Access | Must explicitly allow inbound traffic from 0.0.0.0/0 | Implicitly allow inbound traffic from anywhere |
Ideal Usage | Filtering traffic in/out of subnets | Filtering traffic in/out of specific instances |
Elastic Load Balancing
ဝင်လာတဲ့ Incoming traffic တွေကို ဘယ်ဟာကဘယ်ကိုသွားပါဆိုပြီး သတ်မှတ်ချင်လာတဲ့အခါမျိုးမှာ ELB ကိုအသုံးပြုကြတယ်။
ELB types :
- Application Load Balancer
- Network Load Balancer
- Gateway Load Balancer
Application Load Balancer ဆိုတာကတော့ Layer 7 traffic တွေဖြစ်တဲ့ HTTP/HTTPS request တွေပေါ်မှာမူတည်ပြီးတော့ Load balance လုပ်ပေးတဲ့ Load balancer တစ်မျိုးဖြစ်ပါတယ်။
Network Load Balancer ဆိုတာကတော့ Layer 3/4 Traffic တွေဖြစ်တဲ့ TCP/IP တွေပေါ် မှာမူတည်ပြီးတော့ Load Balance လုပ်ပေးတဲ့ Load Balancer မျိုးဖြစ်ပါတယ်။ NLB ဟာ AWS ရဲ့ Origin resource တွေဖြစ်တဲ့ EC2 instances , Containers တွေစီကို လာတဲ့ Network Traffic တွေကို Load Balance လုပ်တာပါ။
Gateway Load Balancer နဲ့ NLB နှစ်ခုလုံးဟာ Network Layer မှာ အလုပ်လုပ် လုပ်ကြတာပါ။ မတူညီတဲ့အချက်ကတော့ GWLB က Traffic တွေကို Third party appliance ( Fortigate firewall from Marketplace, PaloAlto Firewall, IPS,IDS etc.) တွေကိုသုံးလာတဲ့အခါမျိုးမှာ route လုပ်ပေးဖို့အတွက်ရည်ရွယ်ပါတယ် ။ ဥပမာ - IPsec VPN , GRE tunnel traffics.
Flow Logs
AWS network troubleshooting အတွက်သုံးပါတယ်။ Traditional networking မှာ Troubleshooting အတွက် Debug တွေ လုပ်ကြသလိုပါပဲ ။ AWS flow logs ကိုအသုံးပြုပြီးတော့ Network Traffic နဲ့ဆိုင်တဲ့ Logs တွေကို capture လုပ်ထားလို့ရပါတယ် ။ Cloud watch နဲ့တွဲသုံးပြီးတော့ Monitoring လုပ်လို့ရသလို S3 buckets ထဲမှာသိမ်းထားပြီးတော့ Athena လိုမျိုး Query tool နဲ့တွဲပြီး advance ကျကျ လဲ Logs တွေကို filter လုပ်ကြည့်လို့ရပါတယ်။ VPC flow log တွေကိုကြည့်ပြီးတော့ troubleshooting, monitoring တွေလုပ်လို့ရသလို network traffic patterns တွေကို ကြည့်ပြီးတေ့ကောင်းမွန်ပြီးလုံခြုံတဲ့ network ဖြစ်ဖို့တည်ဆောက်ရာမှာတော်တော်လေးအသုံးတည့်ပါတယ်။
:wq!