Shadowsocks စာတမ်း

Shadowsocks ဖွဲ့စည်းမှုပုံစံ

ဖိုင်ကိုပြုပြင်ပါ

Shadowsocks သည် JSON ဖော်မတ်ဖွဲ့စည်းပုံများကို ရယူသည်-

{

    “ဆာဗာ”:”my_server_ip”၊

    "Server_port": ၈၃၈၈၊

    "local_port": 1080၊

    "စကားဝှက်":"barfoo!"၊

    "နည်းလမ်း":"chacha20-ietf-poly1305"

}

JSON ဖော်မတ်

  • ဆာဗာ- သင်၏ hostname သို့မဟုတ် server IP (IPv4/IPv6)။
  • server_port- ဆာဗာ ဆိပ်ကမ်းနံပါတ်။
  • local_port- ဒေသတွင်း ဆိပ်ကမ်းနံပါတ်။
  • စကားဝှက်- ငွေလွှဲစာဝှက်ရန် အသုံးပြုသည့် စကားဝှက်။
  • နည်းလမ်း- ကုဒ်ဝှက်နည်း။

ကုဒ်ဝှက်ခြင်းနည်းလမ်း

ကျွန်ုပ်တို့၏ဆာဗာများကို configure ပြီး chacha20-ietf-poly1305 AEAD cipher ကိုအသုံးပြုရန် အကြံပြုလိုသည်မှာ ၎င်းသည် စာဝှက်ခြင်း၏ အပြင်းထန်ဆုံးနည်းလမ်းဖြစ်သောကြောင့်ဖြစ်သည်။ 

သင့်ကိုယ်ပိုင် shadowsocks ဆာဗာကို ပြင်ဆင်သတ်မှတ်ပါက၊ သင်သည် “chacha20-ietf-poly1305” သို့မဟုတ် “aes-256-gcm” တို့မှ ရွေးချယ်နိုင်ပါသည်။

URI နှင့် QR ကုဒ်

Android / IOS အတွက် Shadowsocks သည် BASE64 encoded URI format configs ကိုယူသည်-

ss://BASE64-ENCODED-STRING-WithOUT-PADDING#TAG

 

ရိုးရိုး URI သည်- ss://method:password@hostname:port ဖြစ်သင့်သည်။

အထက်ပါ URI သည် RFC3986 ကိုမလိုက်နာပါ။ ဤကိစ္စတွင်ရှိ စကားဝှက်သည် ရိုးရှင်းသော စာသားဖြစ်သင့်သည်၊ ရာခိုင်နှုန်းဖြင့် ကုဒ်လုပ်ထားခြင်းမဟုတ်ပါ။



ဥပမာ- ကျွန်ုပ်တို့သည် 192.168.100.1:8888 တွင် ဆာဗာကို အသုံးပြုနေပါသည်။ သုံးပြီး bf-cfb ကုဒ်ဝှက်နည်းနှင့် စကားဝှက် စမ်းသပ်/!@#:

 

ထို့နောက် ရိုးရိုး URI ဖြင့်၊ ss://bf-cfb:test/!@#:@192.168.100.1:8888BASE64 encoded URI ကို ကျွန်ုပ်တို့ ထုတ်လုပ်နိုင်သည်- 

 

> console.log(“ss://” + btoa(“bf-cfb:test/!@#:@192.168.100.1:8888”))

ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg

 

ဤ URI များကို စုစည်းပြီး ခွဲခြားသတ်မှတ်ရာတွင် ကူညီရန်၊ BASE64 ကုဒ်ဝှက်ထားသော စာကြောင်း၏နောက်တွင် တဂ်တစ်ခု ထပ်ထည့်နိုင်သည်-

ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg#example-server

addressing

Shadowsocks သည် SOCKS5 လိပ်စာဖော်မတ်ရှိ လိပ်စာများကို အသုံးပြုသည်-

[1-byte type][variable-length host][2-byte port]

 

ဤသည်မှာ သတ်မှတ်ထားသော လိပ်စာအမျိုးအစားများဖြစ်သည်-

  • 0x01 : host သည် 4-byte IPv4 လိပ်စာတစ်ခုဖြစ်သည်။
  • 0x03 : host သည် 1-byte အရှည်ဖြင့် စတင်ကာ ကွဲပြားနိုင်သော အရှည်စာကြောင်းဖြစ်ပြီး၊ နောက်တွင် အများဆုံး 255-byte ဒိုမိန်းအမည်တစ်ခုဖြစ်သည်။
  • 0x04 : host သည် 16-byte IPv6 လိပ်စာတစ်ခုဖြစ်သည်။

 

ပို့တ်နံပါတ်သည် 2-byte big-endian လက်မှတ်မထိုးထားသော ကိန်းပြည့်ဖြစ်သည်။

သည် TCP

ss-local client သည် payload data ၏နောက်တွင် ပစ်မှတ်လိပ်စာဖြင့် စတင်ပြီး ကုဒ်ဝှက်ထားသောဒေတာကို ပေးပို့ခြင်းဖြင့် ss-remote သို့ ချိတ်ဆက်မှုစတင်သည်။ အသုံးပြုထားသော cipher ပေါ်မူတည်၍ ကုဒ်ဝှက်ခြင်း ကွဲပြားပါမည်။

[ပစ်မှတ်လိပ်စာ][payload]

ss-remote သည် ကုဒ်ဝှက်ထားသောဒေတာကို လက်ခံရရှိပြီးနောက် ပစ်မှတ်လိပ်စာကို စာဝှက်ပြီး ခွဲခြမ်းစိတ်ဖြာသည်။ ထို့နောက် ၎င်းသည် ပစ်မှတ်သို့ TCP ချိတ်ဆက်မှုအသစ်ကို ဖန်တီးပြီး payload data ကို ၎င်းထံသို့ ပေးပို့သည်။ ss-remote သည် ပစ်မှတ်ထံမှ အကြောင်းပြန်ချက်ကို လက်ခံရရှိပြီးနောက် ဒေတာကို ကုဒ်ဝှက်ပြီး အဆက်ပြတ်သွားသည်အထိ ss-local သို့ ပြန်လည်ပေးပို့သည်။

ရှုပ်ထွေးစေသောရည်ရွယ်ချက်များအတွက်၊ ဒေသန္တရနှင့် အဝေးထိန်းစနစ်သည် ပထမထုပ်ပိုးမှုတွင် payload အချို့နှင့်အတူ လက်ဆွဲခြင်းဒေတာကို ပေးပို့သင့်သည်။

UDP ကို

ss-local သည် ပစ်မှတ်လိပ်စာနှင့် payload ပါရှိသော ကုဒ်ဝှက်ထားသော ဒေတာပက်ကတ်ကို ss-remote သို့ ပေးပို့သည်။

[ပစ်မှတ်လိပ်စာ][payload]

ကုဒ်ဝှက်ထားသော ပက်ကတ်ကို လက်ခံရရှိသည်နှင့်တစ်ပြိုင်နက်၊ ss-remote သည် ကုဒ်ဝှက်ပြီး ပစ်မှတ်လိပ်စာကို ခွဲခြမ်းစိတ်ဖြာသည်။ ထို့နောက် ၎င်းသည် ပစ်မှတ်သို့ payload ပါသည့် ဒေတာပက်ကေ့ခ်ျအသစ်တစ်ခုကို ပေးပို့သည်။ ss-remote သည် ပစ်မှတ်မှ data packet များကို လက်ခံရရှိပြီး packet တစ်ခုစီရှိ payload သို့ ပစ်မှတ်လိပ်စာကို ကြိုတင်ထားသည်။ ကုဒ်ဝှက်ထားသော မိတ္တူများကို ss-local သို့ ပြန်ပို့သည်။

[ပစ်မှတ်လိပ်စာ][payload]

ဤလုပ်ငန်းစဉ်ကို ss-local အတွက် ကွန်ရက်လိပ်စာဘာသာပြန်ဆိုခြင်းကို လုပ်ဆောင်သည့် ss-အဝေးမှ ပြုတ်သွားနိုင်သည်။

သင်၏ 5 ရက် အခမဲ့ အစမ်းသုံးမှုကို စတင်ပါ။