وثائق 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 استخدام فرنك بلجيكي 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
للمساعدة في تنظيم وتحديد URIs ، يمكنك إلحاق علامة بعد سلسلة 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 البيانات المشفرة ، ثم يفك تشفير العنوان الهدف ويوزعه. ثم يقوم بإنشاء اتصال TCP جديد إلى الهدف ويقوم بإعادة توجيه بيانات الحمولة إليه. يتلقى ss-remote ردًا من الهدف ثم يقوم بتشفير البيانات وإعادة توجيهها مرة أخرى إلى ss-local حتى يتم فصلها.
لأغراض التشويش ، يجب أن ترسل البيانات المحلية والبعيدة بيانات المصافحة مع بعض الحمولة في الحزمة الأولى.
UDP
يرسل ss-local حزمة البيانات المشفرة التي تحتوي على العنوان الهدف والحمولة إلى ss-remote.
[عنوان الهدف] [الحمولة]
بمجرد استلام الحزمة المشفرة ، يقوم SS-remote بفك تشفير العنوان الهدف وتحليله. ثم يرسل حزمة بيانات جديدة مع الحمولة إلى الهدف. يستقبل ss-remote حزم البيانات من الهدف ويرسل العنوان الهدف إلى الحمولة في كل حزمة. يتم إرسال النسخ المشفرة مرة أخرى إلى ss-local.
[عنوان الهدف] [الحمولة]
يمكن تلخيص هذه العملية إلى إجراء ss-remote لإجراء ترجمة عنوان الشبكة لـ ss-local.