AWS NAT using NAT instance

NAT using NAT instance.png

ကျွန်တော်တို့ဟာ NAT GW ကိုမသုံးပဲနဲ့ EC2 Instance တစ်ခုကို NAT အနေနဲ့သုံးလို့ရပါသေးတယ်။ NAT GW ရဲ့ Cost ကို လျော့ချချင်တာပဲဖြစ်ဖြစ်၊ NAT အနောက်မှာ ရှိတဲ့ Inbound Outbound traffic တွေကို ကိုယ်တိုင် manage လုပ်ချင်တဲ့အခါမျိုးတွေ မှာအသုံးပြုလို့ရပါတယ်။ နောက်ပြီး NAT instance ကို Private host တွေရဲ့ Jump server or Bastion server အဖြစ်လည်းအသုံးပြုနိုင်ပါသေးတယ်။အားနည်းချက်အနေနဲ့ကတော့ AWS managed မဟုတ်တာကြောင့် administrator ကလိုချင်တဲ့ပုံစံကိုကိုယ်တိုင်ပြင်ယူရပါမယ်။

Setup:

အရင်ဆုံးကျွန်တော် EC2 instance နှစ်ခုကို create လုပ်ပါမယ်။

ကျွန်တော်ကတော့ နှစ်ခုလုံးကို Ubuntu 20.04LTS ကိုပဲအသုံးပြုထားပါတယ်။ (မှတ်ချက်။  ။ကျွန်တော်ကတော့ IP tables rule ကို အသုံးပြုပြီး NAT လုပ်သွားမှာပါ။ တစ်ကယ်လို့ AWS NAT AMI ကိုအသုံးပြုပြီးတော့လုပ်တယ်ဆိုရင်လည်းအတူတူပါပဲ)

NAT instance ရဲ့ source/destination check ကို disable ပေးထားရပါမယ်။

Public EC2 instance

  1. Private IP - 10.0.1.144
  2. Public IP - 54.255.19.40

Private EC2 instance

  1. Private IP - 10.0.1.159

Security Group configuration:

Public EC2 instance’s security group for example

Untitled

Private EC2 instance’s security group for example

Untitled

Routing Tables:

Routing tables လေးတွေကိုလည်းတစ်ချက်ကြည့်လိုက်ရအောင်။

Public Subnet RT:

Untitled

Private Subnet RT:

Untitled

ပုံမှန် NAT GW ကို point ရာကနေ NAT instance ကိုပြောင်း Point လုပ်ပေးလိုက်တဲ့သဘောပါပဲ။

NAT Instance configuration:

NAT instance မှာလိုအပ်တဲ့ configuration လေးတွေလုပ်ပါမယ်။

echo 1 > /proc/sys/net/ipv4/ip_forward

ကျွန်တော့်ရဲ့ NAT instance မှာ ifconfig ခေါ်ကြည့်လို့ရှိရင် အောက်ပါအတိုင်းမြင်ရမှာပါ။

root@ip-10-0-0-144:~# ifconfig 
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 9001
        inet 10.0.0.144  netmask 255.255.255.0  broadcast 10.0.0.255

IP tables NAT rule လေးတစ်ခု apply လုပ်ပါမယ်။ အဲ့တာမှ Private subnet ထဲကလာတဲ့ traffic တွေဟာ အပြင်ကိုထွက်နိုင်မှာပါ။

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Verifying:

Host instance ကနေပြီးတော့ ကျွန်တော်တို့ Ping Request ၄ ခု ပို့ကြည့်ပါမယ်။

Untitled

NAT instance ပေါ်မှာ tcpdump ကိုအသုံးပြုပြီးတော့ တစ်ကယ် NAT လုပ်သွားလားဆိုတာကိုထပ်စစ်ကြည့်ပါမယ် ။

Untitled

အခုဆိုရင်ကျွန်တော်တို့ရဲ့ Private subnet ထဲက instance လေးက NAT instance ကိုအသုံးပြုပြီးတော့ internet ကိုဆက်သွယ်နိုင်ပါပြီ။ ဂရုပြုရမယ့် အချက်တွေရှိပါတယ် ။ Security groups မှာ NAT instance ရဲ့ inbound rules တွေကိုသေချာသက်မှတ်ပေးမှသာ Host instances တွေဟာ လိုအပ်တဲ့ service တွေကို အသုံးပြုနိုင်မှာဖြစ်ပါတယ်။

:wq!