ကျတော်ဒီနေ့ Open VPN Split Tunneling နဲ့ ပတ်သတ်တဲ့အကြောင်းလေးကို နဲနဲလေး sharing လုပ်ပေးချင်လို့ပါ...ဒီထဲမှာ ကျတော်မသိသေးတဲ့အမှားတွေလည်းပါကောင်းပါနိုင်တာမို့ မှားနေတာတွေရှိရင်လည်း နားလည်ပေးကြဖို့..တောင်းဆိုပါတယ်...
Open VPN server ဆိုတာက ကျတော်တို့ Local data center မှာရှိတဲ့ VM တစ်လုံးပေါ်မှာပဲဖြစ်ဖြစ် GCP , AWS, DO, Huwaei Cloud, Alibaba Cloud စသဖြင့် server တွေအကုန်လုံးပေါ်မှာ အလွယ်တကူ implement လုပ်လို့ရတဲ့ VPN server ပေါ့... သူ့မှာ ကိုယ်လိုချင်သလို Subnet တွေခွဲ IP တွေ assign လုပ်လို့ရတာပေါ့...configuration လုပ်ပြီးပြီဆိုရင် client files လေးတွေထွက်လာပြီး ကိုယ့် Local PC မှာပဲဖြစ်ဖြစ် ubuntu , centos , debian linux အစရှိတဲ့ server တွေပေါ်မှာပဲဖြစ်ဖြစ် အဲ့ client file နဲ့ connect လုပ်ပြီးသွားလို့ connection establish ဖြစ်သွားရင် Datacenter က server ကို access လှမ်းလုပ်တာပဲ ဖြစ်ဖြစ်... ဥပမာ... အခုလက်ရှိခေတ်စားနေတဲ့ VPN ကျော်ပြီး တခြားနိုင်ငံကနေ အင်တာနက်ထွက်အောင် VPN server ထောင်ပြီး သုံးတာမျိုးမျိုးဖြစ်ဖြစ် ကိုယ်လိုချင်သလို scenario တွေပေါ်မူတည်ပြီး အမျိုးမျိုး သုံးကြတာပေါ့...
အဲ့ထဲမှာမှ ကျတော်ပြောချင်တဲ့ scenario ကတော့ Public access ရအောင် Configure လုပ်ထားတဲ့ Amazon RDS တစ်လုံးကို Open VPN ရဲ့ Split Tunneling method ကိုသုံးပြီး access လုပ်တဲ့အကြောင်းလေး sharing လုပ်ချင်တာပါ...
ဆိုတော့ ... Amazon RDS မှာ public access နဲ့ Database တစ်လုံးကို create လုပ်လိုက်မယ်ဆိုရင် သူ့ကို nslookup ကနေ ခေါ်ကြည့်လိုက်တဲ့ အခါ Private IP တွေ assign ဖြစ်နေမှာ မဟုတ်ပါဘူး...ဆိုလိုတာက အဲ့ Database instance အတွက် Private IP မရှိဘူးပေါ့... အဲ့တော့ ကျတော်တို့က သူ့ကို ဘယ်လို Private Network ပေါ်ကမှ access လုပ်လို့မရတော့ဘူး... အဲ့ဒီ Database instance ကို EC2 ကနေ လှမ်းခေါ်ချင်တယ်ဆိုရင်တောင်မှ DB Instance ရဲ့ Secutity Group မှာ အဲ့ EC2ရဲ့ public IPကို /32 နဲ့ allow လုပ်ထားပေးဖို့လိုတယ်...ဒီလိုမျိုး scenarioက Production database တွေအတွက် သုံးလေ့မရှိတာမှန်ပေမဲ့ တစ်ချို့ အရမ်း restrict ဖြစ်တဲ့ Organization တွေမှာဆိုရင် public access နဲ့ create လုပ်ထားတဲ့ UAT Database လိုမျိုးကို developers တွေ, တခြား access ရဖို့လိုတဲ့ လူတွေကို secure ဖြစ်ဖြစ်နဲ့ ပေးလေ့ရှိကြတယ်ဆိုရင် ကျတော်အခုပြောတဲ့ Split Tunneling method ကိုသုံးပြီး implement လုပ်ထားလို့ရပါတယ်...
ခန ကျတော် mention လုပ်ခဲ့သလိုပဲ Public ဖြစ်နေတဲ့ Amazon RDS DB instance ကို မတူညီတဲ့ နိုင်ငံတွေ မတူညီတဲ့ public IP တွေကနေ access လုပ်မယ်ဆိုရင် နဲနဲပြဿနာရှိလာပြီ ...သူတို့ရဲ့ public IP တွေကို /32 နဲ့လိုက်ပြီး allow လုပ်ပေးရတော့မယ် ... အဲ့နည်းကို ဖြေရှင်းဖို့ ကျတော်ခုနက ပြောခဲ့တဲ့ Open VPN server ကို implement လုပ်ပြီးသုံးကြမယ်... အဲ့တော့ ဟုတ်ပြီ အဲ့ VPN server ရဲ့ public IP ကို ခုနက Public ဖြစ်နေတဲ့ Amazon RDS DB instanceရဲ့ security group မှာ allow လုပ်ပေးလိုက်ရင် Open VPN Server က client connection တွေက DB instance ကို access လုပ်လို့ရပြီ problem solved ဖြစ်ပြီပေါ့...ဒီနေရာမှာ တစ်ခု စဥ်းစာရမှာက ကျတော်တို့က Open VPN server ကို Local Datacenter မှာထား public IP assign လုပ်ပြီးမှသုံးမယ်ဆိုရင်တော့ Traffic charges က မပေးရဘူးပဲ ထားပါတော့...AWS တို့ Google Cloud တို့မှာကျ Traffice ပေါ်မူတည်ပြီး ပိုက်ဆံပေးရတာဖြစ်တဲ့ အတွက် ခုနက Open VPN server ကို developerကချိတ်ပြီး download လုပ်တာပဲဖြစ်ဖြစ် Social media သုံးတာပဲဖြစ်ဖြစ် မေ့ပြီး ချိတ်ထားမိရင် ခုန create လုပ်ထားတဲ့ server ကနေပဲ traffic သွားနေမှာဖြစ်လို့ အဲ့ server အတွက် traffic fees တွေအများကြီးကုန်ကျသွားမှာပေါ့...
အဲ့ဒီ cost တွေကို လျှော့ဖို့ဆိုရင် ကျတော် mention လုပ်တဲ့ Split Tunneling Method ကိုသုံးလို့ရတယ်...Split Tunnel ဆိုတာက ကိုယ်အဓိက access သွားချင်တဲ့ server ကို ..ဒီ scenario မှာဆိုရင်တော့ RDS ပေါ့ ...အဲ့ဒီ RDS ကို access လုပ်တဲ့အခါ ဒီ VPN server ပေါ်ကနေပဲသွားမယ်ဆိုပြီး client config ဖိုင်ထဲမှာ route ရေးထားတဲ့ပုံစံပေါ့... ဆိုတော့ တခြားကျန်တဲ့ Google,Youtube တို့ Facebook တို့ကိုသွားမယ်ဆိုရင် နဂိုသူ့မူရင်း ISP ရဲ့ Public Network ပေါ်ကနေပဲ သွားတော့မယ်...အဲ့နည်းကို သုံးလိုက်မယ်ဆိုရင် Developers တွေပဲ ဖြစ်ဖြစ်, တခြား အဲ့ Open VPN server ရဲ့ client connection ကိုသုံးပြီး RDS ကို access လုပ်တဲ့ connection တွေအကုန်လုံးဟာ...မေ့ပြီးဘယ်လောက်ပဲ ချိတ်ထားချိတ်ထား RDS ကို access လုပ်တဲ့အချိန်မှသာ VPN server ပေါ်က ဖြတ်ပြီး ကျန်တဲ့ network တွေကိုသွားရင် ISP ရဲ့ network ပေါ်ကသွားနေမှာဖြစ်လို့ ခုန VPN server traffic charges တွေကို ကျတော်တို့စိတ်ပူစရာမလိုတော့ဘူးပေါ့...
ဒါကတော့ နဂိုမူရင်း client config example...
client
dev tun
proto udp
remote <aws or gcp or DO vpn server public ip>
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
auth SHA512
ignore-unknown-option block-outside-dns
verb 3
အခုအပေါ်က client config file ကိုသုံးပြီး connect လုပ်မယ်ဆိုရင် တခြား network တွေကို access လုပ်တဲ့အခါ Open VPN server ပေါ်ကနေသွားနေမှာဖြစ်လို့ traffic charges တွေ သုံးတဲ့ GB or TB အလိုက်ပေးရမှာပေါ့...
Split Tunnel ကိုသုံးမယ့် config ကအောက်က config ပါ...
route-nopull
route <RDS public IP>
client
dev tun
proto udp
remote <aws or gcp or DO vpn server public ip>
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
auth SHA512
ignore-unknown-option block-outside-dns
verb 3
ကျတော်တို့က Split Tunnel လုပ်ဖို့ အတွက်ဆို origin client config မှာ
route-nopull
route <RDS public IP>
အဲ့နှစ်ကြောင်းလေး ထည့်ပေးလိုက်ရမှာပဲဖြစ်ပါတယ်... အခုလို Open VPN Split Tunnel ကိုသုံးတာ restrict access ကို solve ဖြစ်သလို မေ့ပြီးချိတ်သုံးမိနေတဲ့ connection တွေအတွက် Traffic charges တွေကို သက်သာစေမှာဖြစ်ပါတယ်...
အမှားပါသွားရင်လည်းဖြည့်ပြီးဖတ်ရှု့ပေးကြပါခင်ဗျာ.. ဖတ်ပေးတဲ့တစ်ယောက်ချင်းစီတိုင်းကိုလည်း ကျေးဇူးပါ...