Shadowsocks စာတမ်း
navigation
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-အဝေးမှ ပြုတ်သွားနိုင်သည်။