مستندات Shadowsocks
جهت یابی
فرمت پیکربندی Shadowsocks
پیکربندی پرونده
Shadowsocks تنظیمات فرمت JSON را می گیرد:
{
“server”:”my_server_ip”,
"سرور_پورت": 8388 ،
“local_port”:1080،
"رمز عبور": "بارفو!"،
“روش”:”chacha20-ietf-poly1305″
}
فرمت JSON
- سرور: نام میزبان یا IP سرور شما (IPv4/IPv6).
- server_port: شماره پورت سرور.
- local_port: شماره پورت محلی.
- رمز عبور: رمز عبوری که برای رمزگذاری انتقال استفاده می شود.
- روش: روش رمزگذاری
روش رمزگذاری
ما سرورهای خود را پیکربندی می کنیم و توصیه می کنیم از رمز chacha20-ietf-poly1305 AEAD استفاده کنید زیرا قوی ترین روش رمزگذاری است.
اگر سرور shadowsocks خود را پیکربندی میکنید، میتوانید یکی از «chacha20-ietf-poly1305» یا «aes-256-gcm» را انتخاب کنید.
کد URI و QR
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-remote ارسال می کند.
[آدرس هدف] [بارگیری]
هنگامی که بسته رمزگذاری شده دریافت شد، ss-remote آدرس مورد نظر را رمزگشایی و تجزیه می کند. سپس یک بسته داده جدید همراه با محموله به هدف ارسال می کند. ss-remote بستههای داده را از هدف دریافت میکند و آدرس مورد نظر را به محموله هر بسته اضافه میکند. کپی های رمزگذاری شده به ss-local بازگردانده می شوند.
[آدرس هدف] [بارگیری]
این فرآیند را می توان به انجام ترجمه آدرس شبکه برای ss-local از راه دور ss خلاصه کرد.