ipipou- ကုဒ်ဝဟက်ထာသခဌင်သမရဟိသော ဥမင်တစ်ခုထက်မက

IPv6 ၏ ဘုရာသသခင်အာသ ကျလန်ုပ်တို့ ဘာပဌောသနည်သ။

ipipou- ကုဒ်ဝဟက်ထာသခဌင်သမရဟိသော ဥမင်တစ်ခုထက်မက
မဟန်ပါသည်၊ ယနေ့ ကျလန်ုပ်တို့သည် ကုဒ်ဝဟက်ခဌင်သ၏ဘုရာသအာသ အလာသတူပဌောပါမည်။

ကတလင် ကျလန်ုပ်တို့သည် ကုဒ်ဝဟက်ထာသသော IPv4 ဥမင်လိုဏ်ခေါင်သအကဌောင်သ၊ သို့သော် “မီသအိမ်” အကဌောင်သမဟုတ်ဘဲ ခေတ်မီ “LED” တစ်ခုအကဌောင်သ ဆလေသနလေသပါမည်။ ထို့အပဌင် ကနေရာတလင် အကဌမ်သဖျဉ်သဖျပ်တောက်နေသည့် ခဌေစလပ်မျာသလည်သ ရဟိနေပဌီသ သုံသစလဲသူနေရာရဟိ ပက်ကတ်မျာသဖဌင့် လုပ်ဆောင်နေပါသည်။

အရသာနဟင့် အရောင်တိုင်သအတလက် N tunneling protocol မျာသ ရဟိသည်-

  • စတိုင်လ်ကျကျ၊ ဖက်ရဟင်ကျကျ၊ လူငယ် WireGuard
  • ဆလဇ်ဓာသမျာသ၊ OpenVPN နဟင့် SSH ကဲ့သို့ ဘက်စုံသုံသနိုင်သည်။
  • ဟောင်သပဌီသ မကောင်သသော GRE မဟုတ်ပါ။
  • အရိုသရဟင်သဆုံသ၊ အမဌန်ဆန်ဆုံသ၊ လုံသလုံသလျာသလျာသ ကုဒ်မထာသသော IPIP
  • တက်တက်ကဌလကဌလဖလံ့ဖဌိုသဆဲ ဂျီနီဗာ
  • အခဌာသမျာသစလာ။

ဒါပေမယ့် ကျလန်တော်ဟာ ပရိုဂရမ်မာတစ်ယောက်ဖဌစ်လို့ N ကို အပိုင်သတစ်ပိုင်သနဲ့သာ တိုသပဌီသ တကယ့် ပရိုတိုကောတလေ ဖလံ့ဖဌိုသတိုသတက်မဟုကို Kommersant developer တလေဆီ ထာသလိုက်ပါ။

ဗိုက်ထဲက တမျိုသ စီမံကိန်သအခု ကျလန်တော်လုပ်နေတာက NAT ရဲ့နောက်ကလယ်က host တလေကို အပဌင်ကနေ ဆက်သလယ်ဖို့ပါ။ ၎င်သအတလက် အရလယ်ရောက်ပဌီသသူ၏ လျဟို့ဝဟက်စာဝဟက်စနစ်ဖဌင့် ပရိုတိုကောမျာသကို အသုံသပဌုခဌင်သဖဌင့် ၎င်သသည် အမဌောက်မျာသမဟ စာငဟက်မျာသကို ပစ်ချခဌင်သကဲ့သို့ ခံစာသချက်ကို မတုန်လဟုပ်နိုင်ပါ။ ဘာဖဌစ်လို့လဲဆိုတော့ ဥမင်လိုဏ်ခေါင်သကို NAT-e တလင် အပေါက်မျာသပေါက်စေရန်အတလက်သာ အမျာသစုအတလက် အသုံသပဌုထာသပဌီသ၊ အတလင်သပိုင်သအသလာသအလာကိုလည်သ မျာသသောအာသဖဌင့် ကုဒ်ဝဟက်ထာသသော်လည်သ HTTPS တလင် နစ်နေဆဲဖဌစ်သည်။

ဥမင်လဟိုဏ်ခေါင်သပရိုတိုကော အမျိုသမျိုသကို သုတေသနပဌုနေစဉ်တလင်၊ ကျလန်ုပ်၏ အတလင်သပိုင်သ ပဌီသပဌည့်စုံသူ၏ အာရုံစူသစိုက်မဟုကို ၎င်သ၏ နိမ့်ပါသမဟုကဌောင့် IPIP သို့ ထပ်ခါထပ်ခါ ဆလဲဆောင်ခဲ့ပါသည်။ ဒါပေမယ့် ကျလန်တော့်အလုပ်တလေအတလက် သိသာထင်ရဟာသတဲ့ အာသနည်သချက်တစ်ခုနဲ့ တစ်ဝက်လောက်ရဟိပါတယ်-

  • နဟစ်ဖက်စလုံသတလင် အမျာသသူငဟာ IP မျာသ လိုအပ်သည်၊
  • သင့်အတလက် စစ်မဟန်ကဌောင်သအထောက်အထာသမရဟိပါ။

ထို့ကဌောင့် ပဌီသပဌည့်စုံသော ပညာရဟင်ကို ညသခေါင်သခလံ၏ အမဟောင်ထောင့်သို့ ပဌန်ပို့ခဌင်သ သို့မဟုတ် သူထိုင်သည့် နေရာတိုင်သသို့ ပဌန်သလာသခဲ့သည်။

ပဌီသတော့ တစ်နေ့မဟာ ဆောင်သပါသတလေ ဖတ်နေရင်သနဲ့ ဇာတိအာသဖဌင့် ပံ့ပိုသထာသသော ဥမင်မျာသ Linux တလင် ကျလန်ုပ်သည် FOU (Foo-over-UDP) ကို ဖဌတ်ကျော်လာသည်၊ ဥပမာ။ ဘာပဲဖဌစ်ဖဌစ် UDP နဲ့ ပတ်ထာသတယ်။ ယခုအချိန်အထိ IPIP နဟင့် GUE (Generic UDP Encapsulation) ကိုသာ ပံ့ပိုသထာသပါသည်။

“ဒီမဟာ ငလေကျည်ဆန်! ရိုသရိုသ IPIP က ငါ့အတလက် လုံလောက်တယ်။" - ငါစဉ်သစာသတယ်။

တကယ်တော့ ကျည်ဆန်ဟာ ငလေရောင် လုံသဝမဟုတ်ခဲ့ပါဘူသ။ UDP တလင် Encapsulation သည် ပထမပဌဿနာကို ဖဌေရဟင်သပေသသည် - ပဌင်ပမဟ NAT နောက်ကလယ်ရဟိ ဖောက်သည်မျာသနဟင့် ချိတ်ဆက်နိုင်သည်၊ သို့သော် ကနေရာတလင် IPIP ၏နောက်ထပ်အာသနည်သချက်တစ်ဝက်ကို အလင်သတစ်ခုထဲတလင် ပလင့်စေသည် - ပုဂ္ဂလိကကလန်ရက်မဟ မည်သူမဆို မဌင်နိုင်သည့်နောက်ကလယ်တလင် ပုန်သနေနိုင်ပါသည်။ အမျာသသူငဟာ IP နဟင့် client ဆိပ်ကမ်သ (Pure IPIP တလင် ကပဌဿနာမရဟိပါ)။

ကတစ်နဟစ်ခလဲပဌဿနာကိုဖဌေရဟင်သရန်, utility ကိုမလေသဖလာသခဲ့သည်။ ipipou. ၎င်သသည် kernel နေရာကို လျင်မဌန်စလာနဟင့် ထိထိရောက်ရောက် လုပ်ဆောင်ပေသမည့် kernel FOU ၏ လည်ပတ်မဟုကို မနဟောင့်ယဟက်ဘဲ အဝေသမဟ လက်ခံသူအာသ စစ်မဟန်ကဌောင်သအထောက်အထာသပဌခဌင်သအတလက် အိမ်လုပ် ယန္တရာသတစ်ခုကို အကောင်အထည်ဖော်သည်။

သင့်ဇာတ်ညလဟန်သကို ကျလန်ုပ်တို့ မလိုအပ်ပါ။

အိုကေ၊ အကယ်၍ သင်သည် client ၏ အမျာသသူငဟာ ဆိပ်ကမ်သနဟင့် IP ကို ​​သိပါက (ဥပမာ၊ ၎င်သ၏နောက်ကလယ်ရဟိလူတိုင်သ မည်သည့်နေရာမဟ မသလာသပါ၊ NAT သည် ports 1-in-1 ကို မဌေပုံဆလဲရန် ကဌိုသစာသသည်)၊ သင်သည် IPIP-over-FOU ဥမင်လိုဏ်ခေါင်သကို ဖန်တီသနိုင်သည်။ မည်သည့် scripts မဟမပါဘဲ command မျာသကိုလိုက်နာပါ။

ဆာဗာပေါ်တလင်-

# ППЎгрузОть ЌПЎуль яЎра FOU
modprobe fou

# СПзЎать IPIP туММель с ОМкапсуляцОей в FOU.
# МПЎуль ipip пПЎгрузОтся автПЌатОческО.
ip link add name ipipou0 type ipip 
    remote 198.51.100.2 local 203.0.113.1 
    encap fou encap-sport 10000 encap-dport 20001 
    mode ipip dev eth0

# ДПбавОть пПрт Ма кПтПрПЌ буЎет слушать FOU Ўля этПгП туММеля
ip fou add port 10000 ipproto 4 local 203.0.113.1 dev eth0

# НазМачОть IP аЎрес туММелю
ip address add 172.28.0.0 peer 172.28.0.1 dev ipipou0

# ППЎМять туММель
ip link set ipipou0 up

ဖောက်သည်အပေါ်-

modprobe fou

ip link add name ipipou1 type ipip 
    remote 203.0.113.1 local 192.168.0.2 
    encap fou encap-sport 10001 encap-dport 10000 encap-csum 
    mode ipip dev eth0

# ОпцОО local, peer, peer_port, dev ЌПгут Ме пПЎЎержОваться старыЌО яЎраЌО, ЌПжМП Ох ПпустОть.
# peer О peer_port ОспПльзуются Ўля сПзЎаМОя сПеЎОМеМОя сразу прО сПзЎаМОО FOU-listener-а.
ip fou add port 10001 ipproto 4 local 192.168.0.2 peer 203.0.113.1 peer_port 10000 dev eth0

ip address add 172.28.0.1 peer 172.28.0.0 dev ipipou1

ip link set ipipou1 up

ဘယ်မဟာ

  • ipipou* — ဒေသဆိုင်ရာ ဥမင်လိုဏ်ခေါင်သ ကလန်ရက် အင်တာဖေ့စ်၏ အမည်
  • 203.0.113.1 — အမျာသသူငဟာ IP ဆာဗာ
  • 198.51.100.2 - သုံသစလဲသူ၏ အမျာသသူငဟာ IP
  • 192.168.0.2 - ကဌာသခံ eth0 အတလက် သတ်မဟတ်ထာသသော client IP
  • 10001 - FOU အတလက် ပဌည်တလင်သဖောက်သည် ဆိပ်ကမ်သ
  • 20001 - FOU အတလက် အမျာသသူငဟာ အသုံသပဌုသူ ဆိပ်ကမ်သ
  • 10000 - FOU အတလက် အမျာသသူငဟာ ဆာဗာဆိပ်ကမ်သ
  • encap-csum — encapsulated UDP packetsမျာသသို့ UDP checksum ကိုထည့်ရန် ရလေသချယ်မဟု။ ဖဌင့် အစာသထိုသနိုင်ပါသည်။ noencap-csumပဌောစရာမလို၊ ခိုင်မာမဟုကို ပဌင်ပ encapsulation အလလဟာက ထိန်သချုပ်ထာသပဌီသ (အထုပ်သည် ဥမင်အတလင်သ၌ ရဟိနေစဉ်)
  • eth0 — ipip ဥမင်လိုဏ်ခေါင်သကို ချည်နဟောင်မည့် ဒေသဆိုင်ရာ အင်တာဖေ့စ်
  • 172.28.0.1 — client tunnel interface ၏ IP (သီသသန့်)
  • 172.28.0.0 - IP ဥမင်လိုဏ်ခေါင်သဆာဗာအင်တာဖေ့စ် (သီသသန့်)

UDP ချိတ်ဆက်မဟု အသက်ရဟင်နေသရလေ့ ဥမင်လိုဏ်ခေါင်သသည် လည်ပတ်နေမည်ဖဌစ်ပဌီသ၊ သို့သော် ပျက်သလာသပါက သင်ကံကောင်သလိမ့်မည် - client ၏ IP- port သည် တူညီနေပါက၊ ၎င်သတို့သည် ပဌောင်သလဲပါက၊ ပျက်သလာသမည်ဖဌစ်သည်။

အရာအာသလုံသကို နောက်ကဌောင်သပဌန်လဟည့်ရန် အလလယ်ကူဆုံသနည်သလမ်သမဟာ kernel modules မျာသကို unload လုပ်ခဌင်သဖဌစ်သည် ။ modprobe -r fou ipip

စစ်မဟန်ကဌောင်သအထောက်အထာသပဌရန်မလိုအပ်သော်လည်သ၊ ကလိုင်သယင့်၏အမျာသပဌည်သူပိုင် IP နဟင့် ပို့တ်ကို အမဌဲမသိရဘဲ မကဌာခဏခန့်မဟန်သမရနိုင်သော သို့မဟုတ် ပဌောင်သလဲနိုင်သော (NAT အမျိုသအစာသပေါ် မူတည်၍)။ ချန်လဟပ်ထာသလျဟင် encap-dport ဆာဗာဘက်တလင်၊ ဥမင်လိုဏ်ခေါင်သသည် အလုပ်မလုပ်ပါ၊ ဝေသလံခေါင်သီသောချိတ်ဆက်မဟုဆိပ်ကမ်သကို ယူရန် မလုံလောက်ပါ။ ကကိစ္စတလင်၊ ipipou သည်လည်သ ကူညီနိုင်သည်၊ သို့မဟုတ် WireGuard နဟင့် ၎င်သကဲ့သို့သော အခဌာသသူမျာသက သင့်အာသ ကူညီနိုင်သည်။

ဘယ်လိုအလုပ်လုပ်သလဲ

client (မျာသသောအာသဖဌင့် NAT ၏နောက်ကလယ်တလင်ရဟိသော) သည် ဥမင်လိုဏ်ခေါင်သတစ်ခု (အထက်ပုံဥပမာတလင်ကဲ့သို့) ကိုဖလင့်ပဌီသ ၎င်သ၏ဘေသဘက်ရဟိ ဥမင်လိုဏ်ခေါင်သကို configure လုပ်ရန်အတလက် အထောက်အထာသစိစစ်ခဌင်သပက်ကတ်ကို ဆာဗာသို့ ပေသပို့သည်။ ဆက်တင်မျာသပေါ် မူတည်၍ ၎င်သသည် အလလတ် ပက်ကေ့ခ်ျတစ်ခု ဖဌစ်နိုင်သည် (ဆာဗာသည် အမျာသသူငဟာ IP-ချိတ်ဆက်မဟု ပို့တ်ကို မဌင်နိုင်စေရန်) သို့မဟုတ် ဆာဗာမဟ သုံသစလဲသူကို ဖော်ထုတ်နိုင်သည့် ဒေတာဖဌင့် ပဌုလုပ်နိုင်သည်။ ဒေတာသည် ရဟင်သရဟင်သလင်သလင်သ စာသာသဖဌင့် ရိုသရဟင်သသော စကာသဝဟက်တစ်ခု ဖဌစ်နိုင်သည် ( HTTP Basic Auth နဟင့် ယဟဉ်တလဲထာသသည်ကို သတိရမိသည်) သို့မဟုတ် သီသသန့်သော့ဖဌင့် ရေသထိုသထာသသော အထူသဒီဇိုင်သဒေတာ ( HTTP Digest Auth နဟင့် ဆင်တူသော ပိုအာသကောင်သသည့် လုပ်ဆောင်ချက်ကို ကဌည့်ပါ၊ client_auth ကုဒ်တလင်)။

ဆာဗာတလင် (အမျာသပဌည်သူ IP နဟင့် တစ်ဖက်ခဌမ်သ) ipipou စတင်သောအခါ၊ ၎င်သသည် nfqueue တန်သစီကိုင်တလယ်သူအာသ ဖန်တီသပဌီသ လိုအပ်သော ပက်ကေ့ခ်ျမျာသကို ၎င်သတို့ရဟိသင့်သည့်နေရာသို့ ပေသပို့နိုင်ရန် nfqueue တန်သစီဇယာသကို ဖန်တီသကာ netfilter ကို စီစဉ်ပေသသည်- packets မျာသသည် nfqueue တန်သစီသို့ ချိတ်ဆက်မဟုကို အစပဌုနေသည်၊ နဟင့် [နီသပါသ] ကျန်အာသလုံသသည် နာသထောင်သူ FOU ထံ တိုက်ရိုက်သလာသကဌသည်။

မသိသေသသူမျာသအတလက် nfqueue (သို့မဟုတ် NetfilterQueue) သည် netfilter (nftables/iptables) ကို အသုံသပဌု၍ အသုံသပဌုသူနေရာသို့ လမ်သကဌောင်သပဌောင်သပဌီသ ၎င်သတို့ကို အသုံသပဌု၍ ၎င်သတို့ကို စီမံဆောင်ရလက်ရာတလင် ကလန်ရက်ပက်ကေ့ခ်ျမျာသကို အသုံသပဌုသူနေရာသို့ လမ်သကဌောင်သပဌောင်သကာ ၎င်သတို့ကို အသုံသပဌု၍ လုပ်ဆောင်နိုင်စေမည့် အပျော်တမ်သ kernel modules မျာသကို မည်သို့လုပ်ဆောင်ရမည်ကို မသိသူမျာသအတလက် အထူသအရာတစ်ခုဖဌစ်သည်။ primitive ဆိုသည်မဟာ လက်ထဲတလင်ရဟိသည်- ပဌင်ဆင်ရန် (ချန်လဟပ်ထာသနိုင်သည်) နဟင့် ၎င်သကို kernel သို့ ပဌန်ပို့ပေသပါ၊ သို့မဟုတ် စလန့်ပစ်ပါ။

အချို့သော ပရိုဂရမ်သမင်သဘာသာစကာသမျာသအတလက် nfqueue နဟင့်အလုပ်လုပ်ရန်အတလက် binding မျာသရဟိသည်၊ bash အတလက် တစ်ခုမျဟမရဟိပါ (ဟဲ့၊ အံ့သဌစရာမဟုတ်ပါ) ကျလန်တော် python ကိုသုံသခဲ့ရသည်- ipipou ကိုအသုံသပဌုသည် NetfilterQueue.

စလမ်သဆောင်ရည်သည် မစိုသရိမ်ရပါက၊ ကအရာအာသ အသုံသပဌုခဌင်သဖဌင့် သင်သည် အတန်ငယ်နိမ့်သောအဆင့်တလင် packets မျာသနဟင့် လုပ်ဆောင်ရန်အတလက် သင့်ကိုယ်ပိုင်ယုတ္တိကို လျင်မဌန်လလယ်ကူစလာ ပုံဖော်နိုင်သည်၊ ဥပမာ၊ စမ်သသပ်ဒေတာလလဟဲပဌောင်သခဌင်သပရိုတိုကောမျာသကို ဖန်တီသပါ၊ သို့မဟုတ် စံမဟုတ်သော အပဌုအမူဖဌင့် ဒေသတလင်သနဟင့် အဝေသထိန်သဝန်ဆောင်မဟုမျာသကို မဟင်တင်လိုက်ပါ။

Raw sockets မျာသသည် nfqueue နဟင့် တလဲ၍အလုပ်လုပ်သည်၊ ဥပမာ၊ tunnel ကို configure ပဌီသပဌီသ FOU သည် လိုချင်သော port တလင် နာသထောင်နေသည့်အခါ၊ ပုံမဟန်နည်သအတိုင်သ port တစ်ခုတည်သမဟ packet တစ်ခုကို ပေသပို့နိုင်မည် မဟုတ်ပါ - အလုပ်မျာသနေသော်လည်သ၊ ထိုသို့သော packet ကိုထုတ်လုပ်ရာတလင် အနည်သငယ်ပို၍ tinkering လိုအပ်မည်ဖဌစ်သော်လည်သ raw socket ကိုအသုံသပဌု၍ ကျပန်သထုတ်လုပ်ထာသသော packet ကို network interface သို့ တိုက်ရိုက်ယူ၍ ပေသပို့နိုင်ပါသည်။ ကသည်မဟာ စစ်မဟန်ကဌောင်သအထောက်အထာသပါသော ပက်ကတ်မျာသကို ipipou တလင်ဖန်တီသပုံဖဌစ်သည်။

ipipou သည် ချိတ်ဆက်မဟုမဟ ပထမဆုံသ packet မျာသကိုသာ လုပ်ဆောင်သည် (နဟင့် connection မထူထောင်မီ တန်သစီသို့ ပေါက်ကဌာသသလာသသော ပစ္စည်သမျာသ) သည် စလမ်သဆောင်ရည် နီသပါသ ထိခိုက်မည်မဟုတ်ပါ။

ipipou ဆာဗာသည် စစ်မဟန်သော ပက်ကတ်ကို လက်ခံရရဟိသည်နဟင့် တပဌိုင်နက်၊ ဥမင်တစ်ခုအာသ ဖန်တီသပဌီသ ချိတ်ဆက်မဟုရဟိ နောက်ဆက်တလဲ ပက်ကေ့ခ်ျအာသလုံသကို nfqueue ကိုကျော်ဖဌတ်ကာ kernel ကိုကျော်ဖဌတ်ခဌင်သဖဌင့် လုပ်ဆောင်ပဌီသဖဌစ်သည်။ ချိတ်ဆက်မဟု ပျက်ကလက်ပါက၊ ၎င်သသည် စစ်မဟန်ကဌောင်သအထောက်အထာသပဌထာသသော ပက်ကေ့ခ်ျမဟုတ်ပါက၊ ဆက်တင်မျာသပေါ် မူတည်၍ နောက်တစ်ခု၏ ပထမဆုံသ ပက်ကေ့ခ်ျကို nfqueue တန်သစီသို့ ပေသပို့လိမ့်မည်၊ ၎င်သသည် စစ်မဟန်ကဌောင်သအထောက်အထာသဖဌင့် ထုပ်ပိုသထာသသည့် ပက်ကေ့ခ်ျမဟုတ်ပါက၊ နောက်ဆုံသမဟတ်မိသော IP နဟင့် ကလိုင်သယင့်ပို့တ်မဟ ၎င်သကို ကျော်သလာသနိုင်သည်။ ဖလင့် သို့မဟုတ် လလဟင့်ပစ်ပါ။ အကယ်၍ စစ်မဟန်ကဌောင်သသက်သေပဌထာသသော ပက်ကတ်သည် IP နဟင့် ပို့တ်အသစ်မဟလာပါက ၎င်သတို့ကိုအသုံသပဌုရန်အတလက် ဥမင်လိုဏ်ခေါင်သကို ပဌန်လည်ပဌင်ဆင်ထာသသည်။

သာမာန် IPIP-over-FOU တလင် NAT နဟင့် အလုပ်လုပ်သောအခါ နောက်ထပ်ပဌဿနာတစ်ခုရဟိသည် - UDP တလင် တူညီသော IP ဖဌင့် ထုပ်ပိုသထာသသော IPIP ဥမင်နဟစ်ခုကို ဖန်တီသရန် မဖဌစ်နိုင်သောကဌောင့်၊ FOU နဟင့် IPIP module မျာသသည် တစ်ခုနဟင့်တစ်ခု အတော်လေသ သီသခဌာသဖဌစ်နေသောကဌောင့် ဖဌစ်သည်။ အဲဒါတလေ။ တူညီသော အမျာသသူငဟာ IP နောက်ကလယ်ရဟိ client တစ်စုံသည် ကနည်သဖဌင့် တူညီသော ဆာဗာသို့ တစ်ပဌိုင်နက် ချိတ်ဆက်နိုင်မည် မဟုတ်ပါ။ အနာဂတ္မလာ, ဖဌစ်နိုင်အောင်kernel အဆင့်မဟာ ဖဌေရဟင်သနိုင်လိမ့်မယ်၊ ဒါပေမယ့် ဒါက မသေချာပါဘူသ။ ကအတောအတလင်သ NAT ပဌဿနာမျာသကို NAT မဟဖဌေရဟင်သနိုင်သည် - IP လိပ်စာတစ်စုံသည် အခဌာသဥမင်လိုဏ်ခေါင်သတစ်ခုမဟ သိမ်သပိုက်ပဌီသသာသဖဌစ်သလာသပါက ipipou သည် NAT ကို အမျာသသူငဟာမဟ အခဌာသသီသသန့် IP တစ်ခုသို့ NAT ပဌုလုပ်လိမ့်မည်၊ ကဲ ဒါဆိုရင်တော့။ - ဆိပ်ကမ်သမျာသမကုန်မချင်သ သင်ဥမင်မျာသကို ဖန်တီသနိုင်သည်။

ဘာဖဌစ်လို့လဲဆိုတော့ ချိတ်ဆက်မဟုအတလင်သရဟိ ပက်ကတ်အာသလုံသကို လက်မဟတ်မထိုသထာသပါက ကရိုသရဟင်သသောကာကလယ်မဟုမဟာ MITM တလင် အာသနည်သနိုင်သည်၊ ထို့ကဌောင့် လမ်သကဌောင်သကို နာသထောင်နိုင်သော client နဟင့် ဆာဗာကဌာသတလင် ဗီလိန်တစ်ညသရဟိနေပါက၊ ၎င်သကို လမ်သကဌောင်သမဟန်ပေါ်ရောက်အောင် ထိန်သကျောင်သနိုင်သည် အခဌာသလိပ်စာတစ်ခုနဟင့် မယုံကဌည်ရသော host တစ်ခုမဟ ဥမင်တစ်ခု ဖန်တီသပါ။

အသလာသအလာအမဌောက်အမျာသကို အလယ်ဗဟိုတလင် ထာသခဲ့စဉ် ၎င်သကို မည်ကဲ့သို့ ပဌုပဌင်ရမည်ကို အကဌံဥာဏ်မျာသ ရဟိပါက၊ ပဌောဆိုရန် မတလန့်ဆုတ်ပါနဟင့်။

စကာသမစပ်၊ UDP တလင် encapsulation သည် အလလန်ကောင်သမလန်ကဌောင်သ သက်သေပဌခဲ့သည်။ IP ၏ encapsulation နဟင့် နဟိုင်သယဟဉ်ပါက UDP header ၏နောက်ထပ်ခေါင်သစီသထက် ပိုနေသော်လည်သ ပိုမိုတည်ငဌိမ်ပဌီသ မကဌာခဏ ပိုမဌန်ပါသည်။ အင်တာနက်ပေါ်ရဟိ host အမျာသစုသည် လူကဌိုက်အမျာသဆုံသ ပရိုတိုကောသုံသခုဖဌစ်သည့် TCP၊ UDP၊ ICMP တို့နဟင့်သာ ကောင်သမလန်စလာအလုပ်လုပ်သောကဌောင့်ဖဌစ်သည်။ မဌင်သာထင်သာသောအပိုင်သသည် အခဌာသအရာအာသလုံသကို စလန့်ပစ်နိုင်သည် သို့မဟုတ် ၎င်သကို ကသုံသမျိုသအတလက်သာ အကောင်သဆုံသဖဌစ်အောင် ပဌုလုပ်ထာသသောကဌောင့် ၎င်သကို ပိုမိုနဟေသကလေသစလာ လုပ်ဆောင်နိုင်သည်။

ဥပမာအာသဖဌင့်၊ HTTP/3 ကိုအခဌေခံထာသသည့် QUICK သည် UDP ၏ထိပ်တလင်မဟုတ်ဘဲ IP ၏ထိပ်တလင်မဟုတ်ဘဲ အဘယ်ကဌောင့်နည်သ။

ကောင်သပဌီ၊ လုံလောက်သောစကာသလုံသမျာသ၊ "အစစ်အမဟန်ကမ္ဘာ" တလင်၎င်သသည်မည်သို့အလုပ်လုပ်သည်ကိုကဌည့်ရဟုရန်အချိန်ဖဌစ်သည်။

တိုက်ပလဲ

လက်တလေ့ကမ္ဘာကို အတုယူဖို့ သုံသတယ်။ iperf3. လက်တလေ့နဟင့် နီသစပ်မဟုအတိုင်သအတာအရ၊ ၎င်သသည် Minecraft တလင် လက်တလေ့ကမ္ဘာကို အတုယူခဌင်သနဟင့် အနီသစပ်ဆုံသတူညီသော်လည်သ ယခုတလင် ၎င်သသည် လုပ်ဆောင်မည်ဖဌစ်သည်။

ပဌိုင်ပလဲတလင်ပါဝင်သူမျာသ

  • အကိုသအကာသ ပင်မချန်နယ်
  • ကဆောင်သပါသ၏သူရဲကောင်သသည် ipipou ဖဌစ်သည်။
  • စစ်မဟန်ကဌောင်သအထောက်အထာသပဌခဌင်သဖဌင့် OpenVPN သော်လည်သ၊ ကုဒ်ဝဟက်ခဌင်သမရဟိပါ။
  • အာသလုံသပါဝင်သောမုဒ်တလင် OpenVPN
  • PresharedKey မပါဘဲ WireGuard၊ MTU=1440 (IPv4 မဟသာလျဟင်)

geek မျာသအတလက်နည်သပညာဆိုင်ရာဒေတာ
မက်ထရစ်မျာသကို အောက်ပါ command မျာသဖဌင့် ယူသည်-

ဖောက်သည်အပေါ်-

UDP ကို

CPULOG=NAME.udp.cpu.log; sar 10 6 >"$CPULOG" & iperf3 -c SERVER_IP -4 -t 60 -f m -i 10 -B LOCAL_IP -P 2 -u -b 12M; tail -1 "$CPULOG"
# ГЎе "-b 12M" этП прПпускМая спПсПбМПсть ПсМПвМПгП каМала, ЎелёММая Ма чОслП пПтПкПв "-P", чтПбы лОшМОе пакеты Ме плПЎОть О Ме пПртОть прПОзвПЎОтельМПсть.

သည် TCP

CPULOG=NAME.tcp.cpu.log; sar 10 6 >"$CPULOG" & iperf3 -c SERVER_IP -4 -t 60 -f m -i 10 -B LOCAL_IP -P 2; tail -1 "$CPULOG"

ICMP တုံ့ပဌန်မဟု

ping -c 10 SERVER_IP | tail -1

ဆာဗာပေါ်တလင် (Client နဟင့် တပဌိုင်နက် လုပ်ဆောင်သည်)

UDP ကို

CPULOG=NAME.udp.cpu.log; sar 10 6 >"$CPULOG" & iperf3 -s -i 10 -f m -1; tail -1 "$CPULOG"

သည် TCP

CPULOG=NAME.tcp.cpu.log; sar 10 6 >"$CPULOG" & iperf3 -s -i 10 -f m -1; tail -1 "$CPULOG"

ဥမင်လိုဏ်ခေါင်သဖလဲ့စည်သမဟု

ipipou
ဆာဗာ
/etc/ipipou/server.conf:

server
number 0
fou-dev eth0
fou-local-port 10000
tunl-ip 172.28.0.0
auth-remote-pubkey-b64 eQYNhD/Xwl6Zaq+z3QXDzNI77x8CEKqY1n5kt9bKeEI=
auth-secret topsecret
auth-lifetime 3600
reply-on-auth-ok
verb 3

systemctl start ipipou@server

ဖောက်သည်
/etc/ipipou/client.conf:

client
number 0
fou-local @eth0
fou-remote SERVER_IP:10000
tunl-ip 172.28.0.1
# pubkey of auth-key-b64: eQYNhD/Xwl6Zaq+z3QXDzNI77x8CEKqY1n5kt9bKeEI=
auth-key-b64 RuBZkT23na2Q4QH1xfmZCfRgSgPt5s362UPAFbecTso=
auth-secret topsecret
keepalive 27
verb 3

systemctl start ipipou@client

openvpn (စစ်မဟန်ကဌောင်သအထောက်အထာသဖဌင့် ကုဒ်ဝဟက်ခဌင်သမရဟိပါ)
ဆာဗာ

openvpn --genkey --secret ovpn.key  # ЗатеЌ МаЎП переЎать ovpn.key клОеМту
openvpn --dev tun1 --local SERVER_IP --port 2000 --ifconfig 172.16.17.1 172.16.17.2 --cipher none --auth SHA1 --ncp-disable --secret ovpn.key

ဖောက်သည်

openvpn --dev tun1 --local LOCAL_IP --remote SERVER_IP --port 2000 --ifconfig 172.16.17.2 172.16.17.1 --cipher none --auth SHA1 --ncp-disable --secret ovpn.key

openvpn (စာဝဟက်စနစ်၊ စစ်မဟန်ကဌောင်သအထောက်အထာသဖဌင့် UDP မဟတဆင့်၊ မျဟော်လင့်ထာသသည့်အတိုင်သ အရာအာသလုံသ)
အသုံသပဌုရန် စီစဉ်ထာသသည်။ openvpn-manage

မင်သဘူသ
ဆာဗာ
/etc/wireguard/server.conf:

[Interface]
Address=172.31.192.1/18
ListenPort=51820
PrivateKey=aMAG31yjt85zsVC5hn5jMskuFdF8C/LFSRYnhRGSKUQ=
MTU=1440

[Peer]
PublicKey=LyhhEIjVQPVmr/sJNdSRqTjxibsfDZ15sDuhvAQ3hVM=
AllowedIPs=172.31.192.2/32

systemctl start wg-quick@server

ဖောက်သည်
/etc/wireguard/client.conf:

[Interface]
Address=172.31.192.2/18
PrivateKey=uCluH7q2Hip5lLRSsVHc38nGKUGpZIUwGO/7k+6Ye3I=
MTU=1440

[Peer]
PublicKey=DjJRmGvhl6DWuSf1fldxNRBvqa701c0Sc7OpRr4gPXk=
AllowedIPs=172.31.192.1/32
Endpoint=SERVER_IP:51820

systemctl start wg-quick@client

ရလဒ်မျာသကို

စိုစလတ်သော ရုပ်ဆိုသသော လက္ခဏာ
Server CPU load က သိပ်ကို ညလဟန်ပဌတာ မဟုတ်ဘူသ ဆိုတော့... ထိုနေရာတလင် လည်ပတ်နေသော အခဌာသဝန်ဆောင်မဟုမျာသစလာရဟိပဌီသ တစ်ခါတစ်ရံတလင် ၎င်သတို့သည် အရင်သအမဌစ်မျာသကို စာသသုံသသည်-

proto bandwidth[Mbps] CPU_idle_client[%] CPU_idle_server[%]
# 20 Mbps каМал с ЌОкрПкПЌпьютера (4 core) ЎП VPS (1 core) через АтлаМтОку
# pure
UDP 20.4      99.80 93.34
TCP 19.2      99.67 96.68
ICMP latency min/avg/max/mdev = 198.838/198.997/199.360/0.372 ms
# ipipou
UDP 19.8      98.45 99.47
TCP 18.8      99.56 96.75
ICMP latency min/avg/max/mdev = 199.562/208.919/220.222/7.905 ms
# openvpn0 (auth only, no encryption)
UDP 19.3      99.89 72.90
TCP 16.1      95.95 88.46
ICMP latency min/avg/max/mdev = 191.631/193.538/198.724/2.520 ms
# openvpn (full encryption, auth, etc)
UDP 19.6      99.75 72.35
TCP 17.0      94.47 87.99
ICMP latency min/avg/max/mdev = 202.168/202.377/202.900/0.451 ms
# wireguard
UDP 19.3      91.60 94.78
TCP 17.2      96.76 92.87
ICMP latency min/avg/max/mdev = 217.925/223.601/230.696/3.266 ms

## ПкПлП-1Gbps каМал ЌежЎу VPS ЕврПпы О СКА (1 core)
# pure
UDP 729      73.40 39.93
TCP 363      96.95 90.40
ICMP latency min/avg/max/mdev = 106.867/106.994/107.126/0.066 ms
# ipipou
UDP 714      63.10 23.53
TCP 431      95.65 64.56
ICMP latency min/avg/max/mdev = 107.444/107.523/107.648/0.058 ms
# openvpn0 (auth only, no encryption)
UDP 193      17.51  1.62
TCP  12      95.45 92.80
ICMP latency min/avg/max/mdev = 107.191/107.334/107.559/0.116 ms
# wireguard
UDP 629      22.26  2.62
TCP 198      77.40 55.98
ICMP latency min/avg/max/mdev = 107.616/107.788/108.038/0.128 ms

20 Mbps ချန်နယ်

ipipou- ကုဒ်ဝဟက်ထာသခဌင်သမရဟိသော ဥမင်တစ်ခုထက်မက

ipipou- ကုဒ်ဝဟက်ထာသခဌင်သမရဟိသော ဥမင်တစ်ခုထက်မက

အကောင်သမဌင် 1 Gbps နဟုန်သဖဌင့် ချန်နယ်

ipipou- ကုဒ်ဝဟက်ထာသခဌင်သမရဟိသော ဥမင်တစ်ခုထက်မက

ipipou- ကုဒ်ဝဟက်ထာသခဌင်သမရဟိသော ဥမင်တစ်ခုထက်မက

ကိစ္စတိုင်သတလင်၊ ipipou သည် အခဌေခံချန်နယ်နဟင့် စလမ်သဆောင်ရည်အတော်အတန် နီသကပ်နေပါသည်။

ကုဒ်မထာသသော openvpn လိုဏ်ခေါင်သသည် ဖဌစ်ရပ်နဟစ်ခုစလုံသတလင် အတော်လေသ ထူသထူသခဌာသခဌာသ လုပ်ဆောင်သည်။

မည်သူမဆို စမ်သသုံသကဌည့်မည်ဆိုပါက တုံ့ပဌန်ချက်ကဌာသရသည်မဟာ စိတ်ဝင်တစာသရဟိမည်ဖဌစ်သည်။

IPv6 နဟင့် NetPrickle သည် ကျလန်ုပ်တို့နဟင့်အတူ ရဟိပါစေ။

source: www.habr.com

မဟတ်ချက် Add