Network Address Translation (NAT)

Min Htet SanMin Htet San
3 min read

Network Engineer တွေကတော့ NAT ( Network Address Translation ) ဆိုတာနဲ့ရင်းနှီးပြီးသားပါ။ NAT ဆိုပြီး ပြောလိုက်ရင် အများစုကတောက Private Network တွေကို Public Network ကိုပြောင်းပေးတယ်လို့ မှတ်ထားကြပါတယ်။

NAT ရဲ့ အဓိပ္ပါယ် အမှန်က Different Network တွေကို Translate လုပ်ပေးတာပဲ ဖြစ်ပါတယ်။

Public ←→ Public , Private ←→ Private ကိုလဲ NAT က translate လုပ်ပေးနိုင်ပါတယ်။


NAT ကို ဘာလို့ လိုအပ်တာလဲ?

NAT ကို အပေါ်မှာ ပြောခဲ့သလိုပါပဲ။ Private Network တွေက Internet ပေါ် ကိုသွားချင်တဲ့ အခါမှာ လိုအပ်တာဖြစ်ပါတယ်။ Traditional Network သမားတွေကတော့ သိပြီးသားဖြစ်မှာပါ။

Network ကို အမျိုးစား 2ခု ခွဲကြည့်ပါမယ်။

  • Public

  • Private

Public IP Address Range

  • 1.0.0.0 - 9.255.255.255

  • 11.0.0.0 - 126.255.255.255

  • 128.0.0.0 - 223.255.255.255

Total IP - 4.3 billion

Internet ပေါ်မှာ တစ်ယောက်နဲ့ တစ်ယောက် ဆက်သွယ်ကြမယ်ဆိုရင် public IP တွေကိုပဲ သုံးလို့ရပါတယ်။ BGP လို့ခေါ်တဲ့ Network Protocol တစ်မျိုးကို သုံးပြီး network engineer တွေက public IP တွေနဲ့ internet ပေါ်က traffic တွေကို ထိန်းချုပ်ကြပါတယ်။ ဒီလိုသာဆိုရင် ကျွန်တော်တို့တွေ သုံးမယ့် internet access လိုတဲ့ device ( Phone, Tablet, Laptop, Smart TV) စတာတွေ အတွက် public IP တစ်ခုဆီ ကို လိုက်ပေးရမယ့် ပုံစံ ဖြစ်သွားမှာပါ။ Public IP Address တွေက အဲ့လို သုံးဖို့ အတွက် မလောက်ပါဘူး။

အဲ့တာကြောင့် NAT ကို သုံးပြီး ကျွန်တော်တို့တွေက Private IP addressတွေကို Public IP address ကို ပြောင်းလဲပြီး အင်တာနက် ကို သုံးစွဲကြတာပါ။

ကျွန်တော် အကြမ်းဆွဲပြထားတဲ့ ပုံလေးကို ကြည့်ပေးပါ။ Local Network (192.168.100.x) ထဲက device တွေက Internet ပေါ်ကို ထွက်တဲ့ အခါမှာ Router မှာ ရှိနေတဲ့ Public IP address 4.7.9.3 ဆိုတဲ့ IP address လေးပါဆိုပြီး ဟန်ဆောင်ပြီး အင်တာနက်ပေါ်ကို ထွက်သွားမှာလို့ မြင်ယောင်ကြည့်ပါ။ Internet ပေါ်ကို ရောက်တဲ့ အခါကျတော့လဲ other Public IP address တွေက 4.7.9.3 လို့ပဲ သိကြပြီးတော့ အချင်းချင်း communicate လုပ်လို့ရသွားပါတယ်။


Types of NAT

  • Static NAT

  • Dynamic NAT

  • PAT (Port Address Translation) (overload NAT)


Static NAT

Static NAT ဆိုတာက one ip address ← → one ip address လဲတာမျိုးကို ဆိုလိုချင်တာပါ။

Cloud Engineer တွေ မြင်သာအောင် ပြောပြရမယ်ဆိုရင် EC2 instance မှာ Elastic IP ကို ကပ်ပြီးသုံးလိုက်တဲ့ သဘောမျိုးပါပဲ။

Static NAT က ကျွန်တော့်အမြင်မှာတော့ NAT ဖြစ်သွားတယ်ဆိုပေမယ့် Device တစ်ခုမှာ Public IP တစ်ခု လိုအပ်တယ်ဆိုတဲ့ requirement ကို သိပ်ပြီးမလွန်ဆန်နိုင်သေးပါဘူး။ Static NAT ကို လိုအပ်တဲ့ အခြေနေတွေမှာပဲ သုံးသင့်ပါတယ်။


Dynamic NAT

Dynamic NAT ကို သုံးမယ်ဆိုရင်တော့ ကျွန်တော်တို့တွေကမှာ multiple public ip ရှိဖို့လိုပါမယ်။ ကျွန်တော်တို့က multiple public ip ( may be 2 or 3 or 4 public ip ) တွေကို Pool တစ်ခုအနေနဲ့ ဆောက်လိုက်တယ်။ ပြီးတော့ private ip address တွေနဲ့ mapping လုပ်ပေးလိုက်ပါတယ်။

ဆိုကြပါဆို့ ကျွန်တော့်မှာ Public IP 2 ခုနဲ့ Pool တစ်ခုရှိတယ်ဆိုကြပါဆို့ Dynamic NAT ကို သုံးမယ်ပေါ့ဗျာ။ ဖြစ်ချင်တော့ ကျွန်တော့်မှာက Server က 3 လုံးဖြစ်နေတယ်။

First Server —> First Public IP address from Pool

Second Server —> Second Public IP address from Pool

Third Server —> Waiting for available Form Pool

ဟုတ်ပါတယ် third server က internet ထွက်နိုင်မှာ မဟုတ်သေးပါဘူး။

ဒါ ကျွန်တော် overview အနေနဲ့ ပြောပြတာပါ။


PAT - Port Address Translation

PAT က NAT ကို သုံးရကျိုး အနပ်ဆုံး နဲ့ အသုံးအများဆုံးပါ။ Local Network ထဲမှာ ရှိတဲ့ Private IP တွေ အားလုံးက Router မှာ ရှိနေတဲ့ Public IP Address ကို သုံးပြီး translate လုပ်သွားပါတယ်။ မတူတာက Router ဆီမှာ packet အားလုံးအတွက် Port ‌assign ချထားပြီး မှတ်ထားပေးတာပါပဲ။

Port Number တွေကို Specific host တစ်ခုခြင်းဆီ အတွက် Assign ချထားပြီး Router က မှတ်ထားပေးပါတယ်။

ကျွန်တော် Cisco Networking ကို လေ့လာသုံးကဆိုရင် Enterprise Network တွေမှာ PAT ကို အသုံးပြုပြီး Internet Access အတွက် သုံးလေ့ရှိပါတယ်။ Public IP address တစ်ခုထည်းနဲ့ လုံလောက်ပါတယ်။ Cisco Router တွေမှာ PAT ကို သုံးတဲ့ အခါမှာ overload ဆိုတဲ့ command ကို သုံးပြီး config ချရပါတယ်။ အဲ့တာအတွက် PAT ကို overload NAT လို့လဲ ခေါ်ကြပါသေးတယ်။

Cloud Engineer တွေ မြင်သာအောင် ပြောရင် ကျွန်တော်တို့ AWS ပေါ်မှာ NAT Gateway တစ်လုံးဆောက်လိုက်တယ်။ NAT Gateway အတွက် EIP တစ်ခု ပေးလိုက်တယ်။ NAT Gateway ကနေ 0.0.0.0/0 ဆိုပြီး rtb မှာ route ထားတဲ့ subnet အောက်က EC2 instance တွေ အကုန်လုံးက NAT Gateway မှာ assign ထားတဲ့ EIP နဲ့ပဲ Translate လုပ်ပြီး Internet ထွက်ကြပါတယ်။

curl ifconfig.me ဆိုတဲ့ command နဲ့ ကြည့်လို့ရပါတယ်။

PAT ရဲ့ အလုပ်လုပ်ပုံလေးကို နည်းနည်းလောက် ထပ်ရှင်းပြကြည့်ပါမယ်.

Router မှာ 2.3.4.5 ဆိုတဲ့ IP Address လေးကိုပဲ port number လေး တွေကို PAT Table အနေနဲ့ သုံးပြီးတော့ Translate လုပ်ပေးသွားတာပါ။


ဒါကတော့ IPv4 usage မှာ အမြဲတမ်း သုံးနေရတဲ့ NAT အကြောင်း Overview လေးပဲ ဖြစ်ပါတယ်။

ဖြစ်နိုင်ရင် eve-ng network simulation ကို သုံးပြီး demo အနေနဲ့ လုပ်ပြနိုင်အောင် ကျွန်တော် ထပ်ကြိုးစားကြည့်ပါမယ်။

ဖတ်ရှုပေးလို့ ကျေးဇူးတင်ပါတယ်။

the-art-by-makisam

0
Subscribe to my newsletter

Read articles from Min Htet San directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Min Htet San
Min Htet San

I'm Security and Cloud Support Engineer at KBZ Bank. I'm tying to be a Cloud Native Engineer......