مستندات 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 خلاصه کرد.

آزمایشی رایگان 5 روزه خود را شروع کنید