Sunday, 26 July 2015

လိပ်စာပြောင်းတဲ့ နတ်(NAT)


ကျွန်တော်တို့ သူငယ်ချင်း ၃ ယောက် ခေါက်ဆွဲသွားစားကြတုံးက(ဘောပွဲမှာမဟုတ်ပါ) စားပွဲထိုးလေးက ပန်းကန်တွေလာချတဲ့အခါ တူမချပေးပါဘူး။ တူတွေကို ဘေးက စားပွဲရဲ့ ခွက်တခုထဲမှာ ထည့်ထားပါတယ်။ ကျွန်တော်နဲ့အလှမ်းဝေးနေတော့ အလယ်က သူငယ်ချင်းက တူခွက်နဲ့နီးတဲ့ အစွန်မှာထိုင်တဲ့ သူငယ်ချင်းကို တူလှမ်းတောင်းလိုက်ပါတယ်။ သူတောင်းပုံက “ကိုဖြိုးတူလိုချင်လို့ ငါ့ကိုပေးစမ်းပါ” လို့ပြောပီး လှမ်းယူလိုက်ပါတယ်။ ဒီတော့ ခေါက်ဆွဲစားရတာ အဆင်ပြေသွားပါတယ်။ စားပီးတော့ အအေးလေးဘာလေးသောက်ချင်တာနဲ့စကားစလိုက်ပါတယ် ဒါနဲ့သူကပဲ စားပွဲထိုးလေးကို လှမ်းခေါ်ပီးတော့ “အအေးတခွက်ပေးပါဟေ့ ရေခဲလျော့ထည့်” ဆိုပီးမှာလိုက်ပါတယ်။ နှစ်ခုစလုံးမှာ သူကပဲအလယ်လူအနေနဲ့ကူညီပေးတာဖြစ်ပါတယ်။ ဒါပေမယ့် ပထမပုံစံနဲ့ဒုတိယပုံစံက မတူပါဘူး၊ ပထမက ကျွန်တော်လိုချင်တာကို သူကကြားကနေ မှာပေးတဲ့ပုံစံနဲ့ပါ။ တဖက်က သူငယ်ချင်းကလည်း ကျွန်တော့အတွက်ဆိုတာ သိပါတယ်။ ဒုတိယ တခုကတော့ ကျွန်တော့ကိုယ်စားမှာပေးတာပါ။ စားပွဲထိုးလေးကလည်း ကျွန်တော့အတွက်လို့မထင်ပါဘူး။ သူက သူ့အတွက်မှာသလိုမျိုးမှာလိုက်တာပါ။ ကျွန်တော်ဘာမှမပြောပဲနဲ့ စေတနာနဲ့ရေခဲတောင်လျော့ခိုင်း လိုက်သေးတယ်။(Filter လုပ်လိုက်တာ) ဒီဟာကို Network ဖက်မှာအသုံးပြုတဲ့ပုံစံတွေနဲ့ ကျွန်တော့်ကိုသာ ယှဉ်ကြည့်ခိုင်းရင်တော့ ပထမပုံစံက NAT ဖြစ်ပီး ဒုတိကပုံစံက Proxy လို့ဆိုရမှာဖြစ်ပါတယ်။ (တကယ်လို့ပထမအကြိမ်မှာ ကျွန်တော်ကိုယ်တိုင် လှမ်းတောင်းလိုက်မယ် သူကကြားကယူပေးယုံပဲဆိုရင်တော့ Routing ပေါ့)

NAT(Network Address Translation) ဟာ Proxy နဲ့မတူပါဘူး။ Proxy လို Cache/ Filtering စတဲ့ လုပ်ဆောင်ချက်တွေမပါပဲ Address နဲ့ Ports ကိုသာပြောင်းပေးတာပါ။ Proxy ကတော့ Client ရဲ့လိုအပ်ချက်ကိုသူ့ ဆီကနေဖြတ်သွားစေပီး Client ရဲ့Session ကိုသူ့ Proxy မှာ အဆုံးသတ် စေပါတယ်။ သူကမှတဆင့် Destination ကိုထပ်မံချိတ်ဆက်ပီး Client ကိုပြန်လည်ပေးပို့ပါတယ်။ NAT ဟာ Networking ကိုလေ့လာသူတိုင်းသိထားရမယ့် အကြောင်းအရာတခုဖြစ်ပါတယ်။ အတော်များများလည်း သိထားပီးသားဖြစ်ကြမှာပါ။ နေ့စဉ်အသုံးပြုနေကြတဲ့ Network Application တိုင်း၊ Internet နဲ့ဆက်သွယ်အသုံးပြုတဲ့ အရာတိုင်းမှာ NAT ကိုတွေ့ရမှာပါ။ အလွယ်တကူ မြင်သာအောင်ကြည့်မယ်ဆိုရင် Phone ဒါမှမဟုတ် Computer ကနေ whatismyip.com ကိုသွားကြည့်လိုက်ရင် တွေ့ရတဲ့ IP address ဟာ ကိုယ်အသုံးပြုနေတဲ့ Computer ရဲ့IP address မဟုတ်တာကိုတွေ့ရမှာပါ။ ဒီတော့ ကိုယ့်ရဲ့PC ကနေ သွားချင်တဲ့နေရာကိုရောက်ဖို့ လမ်းကြောင်းပေါ်မှာ Address တွေအဆင့်ဆင့်ပြောင်းသွားတာကိုတွေ့ရပါတယ်၊ အများစုအနေနဲ့ကတော့ ကိုယ်အသုံးပြုထားတဲ့ Provider/ISP ရဲ့Register လုပ်ထားတဲ့ Public IP address ကိုတွေ့ရမှာ ဖြစ်ပါတယ်။ Proxy ကနေဖြတ်သွားရင်တော့ Proxy IP ကိုပဲတွေ့ရမှာပေါ့။

NAT ကိုများသောအားဖြင့် Firewall ဒါမှမဟုတ် Router တွေမှာ ပုံစံမျိုးစုံနဲ့လိုအပ်သလို အသုံးပြုလေ့ရှိပါတယ်။ ဥပမာပြရရင် အဓိကလိုအပ်ချက်ဖြစ်တဲ့ Private IP နဲ့ Public IP ပြောင်းတဲ့နေရာမျိုး၊ ကိုယ့်ရဲ့ အတွင်းက Server/ Host တွေကို အပြင်နဲ့ဆက်သွယ်ရာမှာ အတွင်းက IP ကိုမမြင်စေချင်တဲ့အခါ၊ ကိုယ့်မှာရှိတဲ့ Public IP အရေအတွက်နဲ့ လိုအပ်တဲ့ Service/ Server အရေအတွက် မလုံလောက်တဲ့အခါ၊ အဖွဲ့အစည်းအချင်းချင်းဆက်သွယ်ရာမှာ အတွင်းကအသုံးပြုတဲ့ IP address range တွေတူညီနေတဲ့ အခါမျိုး(Overlap Network) တွေမှာအသုံးပြုကြပါတယ်။အသုံးပြုတဲ့အခါမှာလည်း Brand ပေါ်မူတည်ပီး အခေါ်အဝေါ်တွေ၊ Configuration လုပ်ပုံတွေလည်းမတူကြပါဘူး။ 1-1 NAT, 1-Many NAT, Many-Many NAT, Static NAT, Dynamic NAT, Source NAT, Destination NAT ပီးတော့ NAPT, PAT အတွင်းနဲ့အပြင်ကိုခွဲခြားရာမှာလည်း Inside/ Outside, Internal/ External, Local/ Global, Actual/ Translated စသဖြင့် အမျိုးမျိုးခေါ်ကြပါတယ်။ ကိုယ်အသုံးပြုရတဲ့ Device နဲ့ Brand အပေါ်မူတည်ပီး ဘယ်လိုခေါ်လဲ ဘယ်လိုအသုံးပြုရမယ်ဆိုတာကိုတော့သိထားသင့်ပါတယ်။ ဒါပေမယ့် အဓိက အခြေခံသဘောတရားကိုသိထားရင် လုံလောက်ပါတယ်။ ကိုယ်တိုင်အနေနဲ့တော့ NAT Device ကနေကြည့်ပီး Inside/ Outside နဲ့ Actual IP/ Translated IP ဆိုတဲ့ အခေါ်အဝေါ်ကိုပဲ ကြိုက်ပါတယ်၊ အဲဒီမှာမှ Direction ကိုကြည့်၊ လိုချင်တဲ့ Translation အတွက် 1-1 NAT လား၊ SNAT / DNAT စသဖြင့်အလိုက်သင့်သလို Configure လုပ်လိုက်တာပါပဲ။ NAT ရဲ့ သဘောတရားကိုပိုင်ထားရင် Firewall ကိုအသုံးပြုရာမှာ လွယ်ကူစွာကိုင်တွယ်အသုံးပြုနိုင်မှာဖြစ်ပါတယ်။

နမူနာတခုကြည့်လိုက်ရင်ပိုပီးရှင်းသွားပါလိမ့်မယ်။

(R1 Inside network) R1 – R2 (R2 Inside network)

ဒီပုံမှာ Network ၃ခုရှိပါတယ်။ R1 inside Network (192.168.1.0/24) R2 Inside Network (192.168.2.0/24) R1R2 ချိတ်ဆက်ထားတဲ့ Network (10.10.10.0/24)ဆိုပါတော့။










 R1 inside Network ကနေ R2 inside Network ကိုသွားချင်ရင် R1 နဲ့R2 ကြားမှာ Routing ရှိရပါမယ်။ ဒါမှမဟုတ်ရင်တော့ R1 နဲ့R2 အထွက်မှာ NAT ရှိရပါမယ်။


R1 နဲ့ R2 ရဲ့Inside IP တွေအတွက် NAT IP ကို R1-R2 ကြားက IP Range အထဲကနေ (outside IP) ပေးလိုက်ရင် ရပါပီ။

ဥပမာ
192.168.1.1 = 10.10.10.100
192.168.2.1 = 10.10.10.200

R1 inside ကနေ R2 inside ကိုသွားရင် 192.168.2.1 အစား 10.10.10.200 ကိုသွားလိုက်ယုံပဲ၊ ဒီတော့ R1 Routing Table မှာ 192.168.2.0/24 ဆိုတာရှိစရာမလိုတော့ဘူးပေါ့၊ သွားတဲ့အခါမှာလည်း 192.168.1.1 အနေနဲ့မသွားပဲ 10.10.10.100 ဆိုပီးသွားရပါမယ်။ ဒီတော့ R2 ကနေပြန်လာမယ့် Traffic ဟာ 192.168.1.1 အစား 10.10.10.100 ကိုပြန်သွားလိုက်ယုံပဲ။ ဒါကို Address Translation လုပ်တယ်၊ NAT လုပ်တယ်ပေါ့။



ပိုပီးမြင်သာအောင် LAB လုပ်ပီး NAT Translation Table ကို ကြည့်ပါ။ ပါဝင်တဲ့ Device အရေအတွက်၊ Direction နဲ့ကိုယ်ဘယ်ဖက်ကကြည့်လဲ (Perspective) ပေါ်မူတည်ပီး Local/Global/Inside/Outside စသဖြင့် NAT address Types တွေကို ခွဲခြားနိုင်ပါတယ်။

ဒီပုံမှာ R1 Inside Host ကနေ R2 Inside Host ကို PING နဲ့ Telnet လုပ်ထားတာကို R1 နဲ့ R2 အမြင်ကိုပြထားတာ ဖြစ်ပါတယ်။





အခုလောက်ဆို NAT ကိုမရင်းနှီးသေးတဲ့သူများအနေနဲ့NAT အကြောင်းနဲ့အခေါ်အဝေါ် အချို့တို့ကို သိလောက်ပီ၊ ဆက်လက်လေ့လာဖို့လွယ်ကူလောက်ပီလိုထင်ပါတယ်။



ကိုဖြိုး

No comments:

Post a Comment