ឯកសារ Shadowsocks
ការរុករក
ទម្រង់កំណត់រចនាសម្ព័ន្ធ Shadowsocks
កំណត់រចនាសម្ព័ន្ធឯកសារ
Shadowsocks ទទួលយកការកំណត់ទម្រង់ JSON៖
{
"ម៉ាស៊ីនមេ": "my_server_ip",
"server_port": 8388,
"local_port": 1080,
"ពាក្យសម្ងាត់": "barfoo!",
"វិធីសាស្រ្ត":"chacha20-ietf-poly1305"
}
ទម្រង់ JSON
- ម៉ាស៊ីនមេ៖ ឈ្មោះម៉ាស៊ីន ឬ IP ម៉ាស៊ីនមេរបស់អ្នក (IPv4/IPv6) ។
- server_port៖ លេខច្រកម៉ាស៊ីនមេ។
- local_port៖ លេខច្រកក្នុងស្រុក។
- ពាក្យសម្ងាត់៖ ជាពាក្យសម្ងាត់ប្រើដើម្បីអ៊ិនគ្រីបការផ្ទេរប្រាក់។
- វិធីសាស្រ្ត៖ វិធីសាស្ត្រអ៊ិនគ្រីប។
វិធីសាស្រ្តអ៊ិនគ្រីប
យើងកំណត់រចនាសម្ព័ន្ធម៉ាស៊ីនមេរបស់យើង ហើយណែនាំឱ្យអ្នកប្រើលេខកូដសម្ងាត់ chacha20-ietf-poly1305 AEAD ព្រោះវាជាវិធីសាស្ត្រខ្លាំងបំផុតនៃការអ៊ិនគ្រីប។
ប្រសិនបើកំណត់រចនាសម្ព័ន្ធម៉ាស៊ីនមេ shadowsocks ផ្ទាល់ខ្លួនរបស់អ្នក អ្នកអាចជ្រើសរើសពី "chacha20-ietf-poly1305" ឬ "aes-256-gcm" ។
URI & QR Code
Shadowsocks សម្រាប់ប្រព័ន្ធប្រតិបត្តិការ Android / IOS ក៏ទទួលយកការកំណត់រចនាសម្ព័ន្ធ URI ដែលបានអ៊ិនកូដ BASE64៖
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:8888យើងអាចបង្កើត URI ដែលបានអ៊ិនកូដ BASE64៖
> console.log(“ss://” + btoa(“bf-cfb:test/!@#:@192.168.100.1:8888”))
ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg
ដើម្បីជួយរៀបចំ និងកំណត់អត្តសញ្ញាណ URI ទាំងនេះ អ្នកអាចបន្ថែមស្លាកមួយបន្ទាប់ពីខ្សែអក្សរដែលបានអ៊ិនកូដ BASE64៖
ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg#example-server
ការដោះស្រាយ
Shadowsocks ប្រើអាសយដ្ឋានដែលរកឃើញក្នុងទម្រង់អាសយដ្ឋាន SOCKS5៖
[ប្រភេទ 1 បៃ [ម៉ាស៊ីនប្រវែងអថេរ] [ច្រក 2 បៃ]
នេះគឺជាប្រភេទអាសយដ្ឋានដែលបានកំណត់៖
- 0x01៖ ម៉ាស៊ីនគឺជាអាសយដ្ឋាន IPv4 4 បៃ។
- 0x03 : ម៉ាស៊ីនគឺជាខ្សែអក្សរប្រវែងអថេរ ចាប់ផ្តើមដោយប្រវែង 1 បៃ អមដោយឈ្មោះដែនអតិបរមា 255 បៃ។
- 0x04៖ ម៉ាស៊ីនគឺជាអាសយដ្ឋាន IPv16 6 បៃ។
លេខច្រកគឺជាចំនួនគត់ដែលមិនបានចុះហត្ថលេខា 2 បៃធំ។
TCP
ម៉ាស៊ីនភ្ញៀវ ss-local ផ្តួចផ្តើមការតភ្ជាប់ទៅ ss-remote ដោយផ្ញើទិន្នន័យដែលបានអ៊ិនគ្រីបដោយចាប់ផ្តើមជាមួយអាសយដ្ឋានគោលដៅ បន្តដោយទិន្នន័យបន្ទុក។ ការបំប្លែងកូដនឹងខុសគ្នាអាស្រ័យលើលេខសម្ងាត់ដែលបានប្រើ។
[អាសយដ្ឋានគោលដៅ][បន្ទុក]
ss-remote ទទួលទិន្នន័យដែលបានអ៊ិនគ្រីប បន្ទាប់មក ឌិគ្រីប និងញែកអាសយដ្ឋានគោលដៅ។ បន្ទាប់មកវាបង្កើតការភ្ជាប់ TCP ថ្មីទៅកាន់គោលដៅ ហើយបញ្ជូនទិន្នន័យបន្ទុកទៅវា។ ss-remote ទទួលបានការឆ្លើយតបពីគោលដៅ បន្ទាប់មកអ៊ិនគ្រីបទិន្នន័យ និងបញ្ជូនវាត្រឡប់ទៅ ss-local វិញរហូតដល់វាត្រូវបានផ្តាច់។
សម្រាប់គោលបំណងលាក់បាំង មូលដ្ឋាន និងពីចម្ងាយគួរតែផ្ញើទិន្នន័យចាប់ដៃជាមួយនឹងបន្ទុកមួយចំនួននៅក្នុងកញ្ចប់ព័ត៌មានដំបូង។
UDP
ss-local ផ្ញើកញ្ចប់ទិន្នន័យដែលបានអ៊ិនគ្រីបដែលមានអាសយដ្ឋានគោលដៅ និងបន្ទុកទៅ ss-ពីចម្ងាយ។
[អាសយដ្ឋានគោលដៅ][បន្ទុក]
នៅពេលដែលបានទទួលកញ្ចប់ព័ត៌មានដែលបានអ៊ិនគ្រីប ss-remote ឌិគ្រីប និងញែកអាសយដ្ឋានគោលដៅ។ បន្ទាប់មកវាផ្ញើកញ្ចប់ទិន្នន័យថ្មីជាមួយនឹង payload ទៅកាន់គោលដៅ។ ss-remote ទទួលកញ្ចប់ទិន្នន័យពីគោលដៅ ហើយដាក់អាសយដ្ឋានគោលដៅជាមុនទៅនឹង payload ក្នុងកញ្ចប់នីមួយៗ។ ច្បាប់ចម្លងដែលបានអ៊ិនគ្រីបត្រូវបានបញ្ជូនទៅ ss-local វិញ។
[អាសយដ្ឋានគោលដៅ][បន្ទុក]
ដំណើរការនេះអាចត្រូវបានដាំឱ្យពុះរហូតដល់ ss-remote អនុវត្តការបកប្រែអាសយដ្ឋានបណ្តាញសម្រាប់ ss-local ។