دانش محور دستورالعمل های ساده برای کار با سرویس Profitserver
اصلی دانش محور راهنمای Shadowsocks (shadowsocks-rust / shadowsocks-libev): VPS، Windows، macOS، Linux، Android، iPhone

راهنمای Shadowsocks (shadowsocks-rust / shadowsocks-libev): VPS، Windows، macOS، Linux، Android، iPhone


Shadowsocks یک پروتکل پروکسی رمزگذاری شده سبک مبتنی بر SOCKS5 است که در ابتدا برای دور زدن شکل‌دهی ترافیک و مسدود کردن در شبکه‌های معمولی طراحی شده بود. برخلاف یک VPN کامل، این پروتکل فقط ترافیکی را که یک برنامه به صراحت به آن ارسال می‌کند، پروکسی می‌کند، تقریباً هیچ سربار پروتکلی ندارد و حتی در اتصالات محدود نیز به خوبی کار می‌کند. این پروتکل سعی نمی‌کند مانند VLESS+Reality یک TLS handshake واقعی را تقلید کند - نقطه قوت آن سادگی، پشتیبانی گسترده از کلاینت (روترها، تلفن‌ها، مرورگرها) و تأخیر بسیار کم است، به قیمت اینکه شناسایی آن بر اساس الگوی ترافیک در یک شبکه به شدت بازرسی شده تا حدودی آسان‌تر است.

دو پیاده‌سازی سرور با نگهداری فعال وجود دارد:

  • shadowsocks-rust — پیاده‌سازی مرجع مدرن از سازمان shadowsocks، نوشته شده با Rust. این پیاده‌سازی از خانواده رمزنگاری جدیدتر AEAD-2022 پشتیبانی می‌کند، به طور فعال توسعه داده می‌شود و پیاده‌سازی است که این راهنما به تفصیل نصب و پیکربندی می‌کند.
  • shadowsocks-libev — پیاده‌سازی قدیمی‌تر C. این نسخه هنوز برای رفع اشکالات نگهداری می‌شود، به عنوان یک بسته آماده apt با واحدهای systemd مخصوص به خود ارائه می‌شود و اگر می‌خواهید ساده‌ترین نصب را بدون نیاز به مدیریت دستی فایل‌های باینری داشته باشید، انتخاب خوبی است. این راهنما آن را به عنوان یک مسیر نصب جایگزین در بخش ۳ پوشش می‌دهد.

این راهنما نحوه پیکربندی دستی سرور از طریق خط فرمان - بدون استفاده از پنل وب یا Docker - را شرح می‌دهد. هر جا که فیلد "آدرس IP" ظاهر شد، آن را با آدرس IP واقعی VPS خود جایگزین کنید.

آنچه نیاز دارید: یک VPS با سیستم عامل Ubuntu 22.04/24.04 یا Debian 11/12، دسترسی روت، آدرس IP VPS شما و یک پورت UDP/TCP آزاد (این راهنما از ۸۳۸۸، پورت پیش‌فرض Shadowsocks، استفاده می‌کند).

هنوز سرور ندارید؟ به بخش نحوه سفارش سرور و پرداخت هزینه آن مراجعه کنید.

آیا می‌خواهید این را با سایر گزینه‌های خود-میزبان مقایسه کنید؟ برای جایگزین مبتنی بر استتار TLS به راهنمای واقعیت Xray VLESS ، برای گزینه مبتنی بر WireGuard به راهنمای استقرار سرور AmneziaWG ، یا برای دو پروتکل پروکسی مدرن دیگر به تنظیمات Hysteria2 و TUIC مراجعه کنید.

جدول محتوا
به حداقل رساندن

اتصال به سرور

ویندوز (Putty)

PuTTY را باز کنید، آدرس IP سرور مجازی خود را در قسمت Host Name وارد کنید، پورت را روی ۲۲ تنظیم کنید و با استفاده از رمز عبوری که ارائه دهنده VPS برای شما ایمیل کرده است، به عنوان root وارد شوید.

آدرس IP سرور: آدرس IP شما

ورود به عنوان: ریشه

رمز عبور: رمز عبور شما

برای آشنایی بیشتر با نحوه اتصال از طریق PuTTY/SSH، به نحوه اتصال به سرور لینوکس از طریق SSH مراجعه کنید.

پیکربندی جلسه PuTTY برای دسترسی به SSH. ترمینال PuTTY SSH پس از اتصال به VPS. ورود موفقیت‌آمیز از طریق SSH به VPS.

لینوکس / macOS (ترمینال)

ssh root@your_IP_address

تمام دستورات زیر روی سرور، در همین جلسه SSH اجرا می‌شوند - که بخش‌های ۲ تا ۷، به علاوه بررسی‌های سمت سرور در بخش ۱۳ را پوشش می‌دهد. بخش‌های ۸ تا ۱۲ (نصب و پیکربندی برنامه‌های کلاینت) در دستگاه ویندوز/مک/لینوکس/اندروید/iOS خودتان انجام می‌شوند، زیرا این دستگاهی است که پروکسی باید روی آن اجرا شود؛ هر یک از این بخش‌ها به صراحت بیان می‌کنند که کدام خطوط، در صورت وجود، هنوز به سرور متصل هستند.

آماده سازی سرور

به روز رسانی سیستم

قبل از نصب هر چیزی، لیست بسته‌ها را به‌روزرسانی کنید و بسته‌های نصب‌شده را ارتقا دهید:

apt update -y && apt upgrade -y
دستوری که برای به‌روزرسانی بسته‌های نصب‌شده استفاده می‌شود. خروجی ارتقاء بسته. اعلان ارتقاء هسته در طول ارتقاء بسته نمایش داده می‌شود هنگام ارتقاء بسته، اعلان راه‌اندازی مجدد سرویس‌ها نمایش داده می‌شود.

اگر این کار باعث ارتقاء هسته شود، قبل از ادامه، راه‌اندازی مجدد سیستم ایده خوبی است. (برای آشنایی بیشتر با apt و نحوه کار مدیران بسته لینوکس، به مدیران بسته لینوکس مراجعه کنید .) با موارد زیر مشورت کنید:

cat /var/run/reboot-required
دستوری که برای بررسی نیاز به راه‌اندازی مجدد استفاده می‌شود. خروجی بررسی نیاز به راه‌اندازی مجدد.

اگر فایل وجود داشت، ابتدا با دستور 'reboot' سیستم را ریبوت کنید، حدود 30 ثانیه صبر کنید و سپس دوباره متصل شوید.

ابزارهایی را که این راهنما استفاده می‌کند نصب کنید

apt install -y curl wget tar xz-utils ufw qrencode

curl/wget و tar/xz-utils برای دریافت و باز کردن آرشیو انتشار shadowsocks-rust مورد نیاز هستند؛ ufw فایروال پیکربندی شده در زیر است؛ qrencode لینک کلاینت نهایی را در بخش ۷ به یک کد QR قابل اسکن تبدیل می‌کند.

دستوری که برای نصب ابزارهای مورد نیاز سرور استفاده می‌شود.

پیکربندی فایروال (UFW)

برای اطلاعات بیشتر در مورد قوانین UFW، به پیکربندی فایروال در لینوکس مراجعه کنید.

دو پورت مورد نیاز خود را باز کنید: ۲۲/tcp برای SSH (از این قانون صرف نظر کنید و خطر از دست دادن دسترسی به سرور را دارید) و ۸۳۸۸، هم برای tcp و هم برای udp - Shadowsocks هم اتصالات TCP و هم ارتباطات UDP را پروکسی می‌کند (برای DNS و برخی بازی‌ها/اپلیکیشن‌ها مفید است)، بنابراین هر دو جهت پورت باید باز باشد.

ufw allow 22/tcp
ufw allow 8388/tcp
ufw allow 8388/udp
ufw --force enable
ufw status

هر سه قانون باید در خروجی وضعیت ufw به صورت ALLOW نمایش داده شوند. اگر بعداً پورت را در config.json تغییر دادید، این قوانین را برای مطابقت به‌روزرسانی کنید.

وضعیت UFW که قوانین پیکربندی شده SSH و Shadowsocks را نشان می‌دهد.

نصب نرم‌افزار سرور

یکی از دو گزینه زیر را انتخاب کنید. گزینه الف (shadowsocks-rust) توصیه می‌شود: این پیاده‌سازی به طور فعال توسعه یافته است و از رمزهای مدرن AEAD-2022 که بعداً در این راهنما استفاده می‌شوند، پشتیبانی می‌کند. گزینه ب (shadowsocks-libev) اگر ترجیح می‌دهید از یک بسته apt ساده با یک واحد systemd آماده استفاده کنید و به AEAD-2022 نیازی ندارید، انتخاب خوبی است.

گزینه الف - shadowsocks-rust (توصیه می‌شود)

Shadowsocks-rust بسته apt را با نسخه‌های فعلی ارائه نمی‌دهد، بنابراین با دانلود فایل باینری استاتیک از پیش ساخته شده از نسخه‌های GitHub پروژه نصب می‌شود. آخرین برچسب انتشار را از API GitHub دریافت کنید و بایگانی Linux x86_64 مطابق را دانلود کنید:

SS_VER=$(curl -s https://api.github.com/repos/shadowsocks/shadowsocks-rust/releases/latest | grep -Po '"tag_name": "\K[^"]*')
echo "Latest version: $SS_VER"
cd /root
wget "https://github.com/shadowsocks/shadowsocks-rust/releases/download/${SS_VER}/shadowsocks-${SS_VER}.x86_64-unknown-linux-gnu.tar.xz"
دستوری که برای دانلود آرشیو انتشار shadowsocks-rust استفاده می‌شود.

اگر VPS شما به جای x86_64، arm64 است (با `uname -m` بررسی کنید)، عبارت x86_64-unknown-linux-gnu را با aarch64-unknown-linux-gnu در نام فایل بالا جایگزین کنید.

بایگانی را استخراج کرده و فایل‌های باینری را در کل سیستم نصب کنید:

tar -xf shadowsocks-*.tar.xz
install -m 755 ssserver ssservice ssmanager ssurl /usr/local/bin/
rm -f shadowsocks-*.tar.xz ssserver ssservice ssmanager ssurl sslocal 2>/dev/null
دستوری که برای استخراج و نصب فایل‌های باینری shadowsocks-rust استفاده می‌شود.

تأیید کنید که فایل باینری در جای خود قرار دارد و نسخه نصب شده را بررسی کنید:

ssserver --version
نسخه ssserver نصب شده است.

دایرکتوری را که فایل پیکربندی در آن قرار خواهد گرفت، ایجاد کنید:

mkdir -p /etc/shadowsocks-rust
ایجاد دایرکتوری پیکربندی shadowsocks-rust.

این راهنما به جای ارسال اسکریپت نصب‌کننده به bash، یک نسخه ثابت را نصب می‌کند. برای ارتقاء در آینده، دو دستور بالا را با یک جستجوی SS_VER جدید دوباره اجرا کنید، سرویس را متوقف کنید، فایل باینری را جایگزین کنید و آن را مجدداً راه‌اندازی کنید (بخش 6).

گزینه ب - shadowsocks-libev (بسته جایگزین، apt)

Shadowsocks-libev در مخزن جهانی اوبونتو (اوبونتو ۱۶.۱۰+) و مخزن اصلی دبیان (دبیان ۸+) گنجانده شده است، بنابراین در نسخه‌های ۲۲.۰۴/۲۴.۰۴ یا دبیان ۱۱/۱۲ به هیچ PPA شخص ثالثی نیاز نیست:

apt install -y shadowsocks-libev
دستوری که برای نصب shadowsocks-libev از مخزن بسته‌ها استفاده می‌شود.

اگر apt گزارش داد که بسته پیدا نشده است، مخزن universe غیرفعال است؛ آن را فعال کنید و دوباره امتحان کنید:

add-apt-repository universe && apt update && apt install -y shadowsocks-libev

این بسته واحدهای systemd مخصوص به خود را نصب می‌کند (shadowsocks-libev.service برای پیکربندی پیش‌فرض، به علاوه [email protected] برای پیکربندی‌های نام‌گذاری شده برای هر نمونه) و /etc/shadowsocks-libev/config.json را به طور خودکار ایجاد می‌کند - در بخش‌های ۴ تا ۶ به دستورات و مسیرهای فایل مخصوص libev در کنار Rust اشاره شده است. بقیه بخش‌های کلاینت این راهنما (۷ تا ۱۳) به طور یکسان برای هر دو پیاده‌سازی سرور اعمال می‌شوند، زیرا هر دو از پروتکل Shadowsocks/SIP002 یکسانی روی سیم استفاده می‌کنند.

تولید رمز عبور و انتخاب رمز

احراز هویت Shadowsocks یک رمز عبور مشترک به همراه یک رمز (روش رمزگذاری) است که هر دو طرف باید روی آن توافق کنند - هیچ UUID، جفت کلید یا گواهی جداگانه‌ای برای مدیریت وجود ندارد.

خانواده‌های رمزگذار

  • AEAD-2022 (توصیه شده، فقط shadowsocks-rust): 2022-blake3-aes-128-gcm، 2022-blake3-aes-256-gcm، 2022-blake3-chacha20-poly1305. طراحی جدیدتر (SIP022) با محافظت در برابر بازپخش قوی‌تر و پشتیبانی از چندین کاربر که از یک پورت استفاده می‌کنند. رمز عبور باید یک رشته base64 دقیقاً به اندازه طول کلید رمز باشد (16 بایت برای انواع 128 بیتی، 32 بایت برای نوع 256 بیتی).
  • AEAD کلاسیک (پشتیبانی شده توسط Rust و libev): aes-256-gcm، aes-128-gcm، chacha20-ietf-poly1305. به طور گسترده با کلاینت‌های قدیمی‌تر و با shadowsocks-libev سازگار است؛ رمز عبور می‌تواند هر عبارت عبوری باشد، زیرا به جای استفاده مستقیم به عنوان ماده کلید، از طریق یک تابع مشتق کلید وارد می‌شود.

این راهنما از 2022-blake3-aes-256-gcm برای سرور shadowsocks-rust استفاده می‌کند، زیرا قوی‌ترین و رایج‌ترین گزینه است و هر کلاینتی که بعداً توصیه می‌شود (v2rayN، v2rayNG، Shadowrocket، Streisand، ShadowsocksX-NG) از آن پشتیبانی می‌کند. اگر shadowsocks-libev را در بخش 3 نصب کرده‌اید، به جای آن از chacha20-ietf-poly1305 یا aes-256-gcm استفاده کنید، زیرا libev AEAD-2022 را پیاده‌سازی نمی‌کند.

یک کلید ایجاد کنید (shadowsocks-rust)

ssservice genkey -m "2022-blake3-aes-256-gcm"
دستوری که برای تولید یک رمز عبور تصادفی برای shadowsocks-libev استفاده می‌شود.

این یک رشته base64 چاپ می‌کند - این رمز عبور شماست. آن را در جایی امن کپی کنید؛ آن را هم در پیکربندی سرور در بخش ۵ و هم در لینک کلاینت در بخش ۷ قرار خواهید داد.

عبارت عبور تصادفی تولید شده.

یک عبارت عبور انتخاب کنید (shadowsocks-libev)

برای رمزهای کلاسیک AEAD که توسط shadowsocks-libev استفاده می‌شود، هر رشته تصادفی به اندازه کافی طولانی کار می‌کند، زیرا به جای استفاده به عنوان کلید خام، از طریق PBKDF/HKDF اجرا می‌شود. یکی را با دستور زیر ایجاد کنید:

openssl rand -base64 32

نوشتن پیکربندی سرور

شدوساکس-زنگ

فایل پیکربندی را برای ویرایش باز کنید:

nano /etc/shadowsocks-rust/config.json

الگوی زیر را وارد کنید و رمز عبور خود را از بخش ۴ (و پورت بخش ۲، اگر آن را از ۸۳۸۸ تغییر داده‌اید) جایگزین کنید:

{
    "server": "0.0.0.0",
    "server_port": 8388,
    "password": "YOUR-GENERATED-KEY-HERE",
    "method": "2022-blake3-aes-256-gcm",
    "mode": "tcp_and_udp",
    "timeout": 300,
    "nofile": 51200
}

برای ذخیره فایل، Ctrl+O (WriteOut) را فشار دهید، برای تأیید نام فایل، Enter را بزنید، سپس برای خروج از nano، Ctrl+X را فشار دهید.

فیلدهای مهم: سرور به تمام رابط‌ها گوش می‌دهد (0.0.0.0)؛ server_port پورتی است که در بخش 2 باز شده است؛ password/method اعتبارنامه و رمز از بخش 4 هستند؛ mode هم رله TCP و هم UDP را فعال می‌کند؛ timeout زمان اتمام اتصال غیرفعال بر حسب ثانیه است؛ nofile محدودیت توصیف‌گر فایل را برای سرورهای شلوغ افزایش می‌دهد.

قبل از اتصال JSON به systemd، اعتبارسنجی کنید که آیا فایل باینری آن را پذیرفته است یا خیر:

ssserver -c /etc/shadowsocks-rust/config.json --help >/dev/null && echo "binary OK"
python3 -m json.tool /etc/shadowsocks-rust/config.json >/dev/null && echo "JSON OK"

ایجاد واحد systemd (shadowsocks-rust)

نسخه باینری یک واحد systemd ارائه نمی‌دهد، بنابراین یکی ایجاد کنید:

nano /etc/systemd/system/ssserver.service
[Unit]
Description=Shadowsocks-Rust Server
Documentation=https://github.com/shadowsocks/shadowsocks-rust
After=network.target
 
[Service]
Type=simple
ExecStart=/usr/local/bin/ssserver -c /etc/shadowsocks-rust/config.json
Restart=on-failure
RestartSec=5s
LimitNOFILE=51200
User=root
 
[Install]
WantedBy=multi-user.target

مانند بالا ذخیره و خارج شوید، سپس به systemd بگویید که فایل واحد جدید را انتخاب کند:

systemctl daemon-reload

شدوساکس-لیبف

بسته apt از قبل فایل /etc/shadowsocks-libev/config.json را با پیکربندی پیش‌فرض (فقط loopback، رمز عبور تصادفی) و واحد systemd مخصوص به خود ایجاد کرده است. آن را برای ویرایش باز کنید:

دستوری که برای باز کردن فایل پیکربندی shadowsocks-libev استفاده می‌شود.
nano /etc/shadowsocks-libev/config.json

محتویات را با موارد زیر جایگزین کنید:

{
    "server":"0.0.0.0",
    "server_port":8388,
    "password":"YOUR-PASSPHRASE-HERE",
    "method":"chacha20-ietf-poly1305",
    "mode":"tcp_and_udp",
    "timeout":300
}
مثالی از پیکربندی shadowsocks-libev.

پیکربندی پیش‌فرض از server: ["::1", "127.0.0.1"] (فقط loopback) استفاده می‌کند؛ تغییر آن به "0.0.0.0" چیزی است که باعث می‌شود سرور از طریق IP عمومی قابل دسترسی باشد - اگر فایل اصلی را به جای الگوی بالا کپی کرده‌اید، این مرحله را از دست ندهید.

شروع سرویس و فعال کردن شروع خودکار

شدوساکس-زنگ

systemctl enable --now ssserver
systemctl status ssserver --no-pager

وضعیت باید فعال (در حال اجرا) را نشان دهد. تأیید کنید که چیزی واقعاً در حال گوش دادن به پورت است (هر دو پروتکل):

سرور در حال گوش دادن به پورت TCP و UDP شماره ۸۳۸۸ است.
ss -lntp | grep ':8388'
ss -lunp | grep ':8388'

اگر سرویس شروع به کار نکرد، سریع‌ترین راه برای فهمیدن دلیل آن، استفاده از systemd journal است (برای آشنایی با نحوه خواندن لاگ‌های لینوکس به طور کلی، به بخش نحوه خواندن لاگ‌های لینوکس و محل یافتن آن مراجعه کنید ):

journalctl -u ssserver -n 50 --no-pager

شدوساکس-لیبف

systemctl restart shadowsocks-libev
systemctl enable shadowsocks-libev
systemctl status shadowsocks-libev --no-pager

پورت و لاگ‌ها را همانند shadowsocks-rust بررسی کنید و نام سرویس را جایگزین کنید:

دستوراتی که برای راه‌اندازی مجدد، فعال‌سازی و بررسی سرویس shadowsocks-libev استفاده می‌شوند. وضعیت سرویس Shadowsocks-libev که فعال (در حال اجرا) را نشان می‌دهد.
ss -lntp | grep ':8388'
ss -lunp | grep ':8388'
journalctl -u shadowsocks-libev -n 50 --no-pager

ساخت لینک اتصال کلاینت

کلاینت‌های Shadowsocks به جای یک فایل پیکربندی، یک لینک اشتراک‌گذاری ss:// (با فرمت URL SIP002) را وارد می‌کنند. این لینک، رمز و رمز عبور را به صورت base64 در بخش userinfo از URL کدگذاری می‌کند:

ss://base64(method:password)@your_IP_address:port#label

بخش base64 را روی سرور بسازید (این کار از هرگونه غلط املایی ناشی از کدگذاری دستی جلوگیری می‌کند):

METHOD="2022-blake3-aes-256-gcm"
PASSWORD="YOUR-GENERATED-KEY-HERE"
USERINFO=$(echo -n "${METHOD}:${PASSWORD}" | base64 -w0)
echo "ss://${USERINFO}@your_IP_address:8388#My-SS-Server"

خروجی مثال (با کلید placeholder):

مثالی از لینک اتصال ss:// (توضیحی) تولید شده است.
ss://MjAyMi1ibGFrZTMtYWVzLTI1Ni1nY206eHl6X2V4YW1wbGVfa2V5X2hlcmU=@your_IP_address:8388#My-SS-Server

متن بعد از # فقط یک برچسب نمایشی است که می‌توانید آزادانه در هر کلاینتی نام آن را تغییر دهید. برای سرور shadowsocks-libev، عبارت METHOD="chacha20-ietf-poly1305" (یا aes-256-gcm) و عبارت عبور آن را از بخش ۴ جایگزین کنید. 

آن را به یک کد QR تبدیل کنید تا مشتریان تلفن همراه بتوانند مستقیماً آن را اسکن کنند:

qrencode -o ~/ss-client.png "ss://${USERINFO}@your_IP_address:8388#My-SS-Server"

فایل PNG را با استفاده از scp در کامپیوتر خود کپی کنید، آن را از ترمینال کامپیوتر خود (یا PowerShell در ویندوز) اجرا کنید، نه از سرور:

scp root@your_IP_address:~/ss-client.png .

اتصال از ویندوز

همه چیز در این بخش روی رایانه شخصی ویندوز شما اتفاق می‌افتد، نه از طریق SSH - کلاینت باید روی دستگاهی اجرا شود که در واقع از پروکسی استفاده خواهد کرد.

نصب v2rayN

v2rayN یک کلاینت رابط کاربری گرافیکی رایگان و فعال است که از Shadowsocks به صورت بومی در کنار VLESS، VMess، Trojan و موارد دیگر پشتیبانی می‌کند. آخرین نسخه را از صفحه پروژه دانلود کنید.

فایل فشرده‌ی ویندوز ۶۴ بیتی .zip را بردارید (یک ساختار مستقل که مانند نسخه‌های اخیر v2rayN نیازی به زمان اجرای جداگانه‌ی .NET ندارد)، آن را در هر جایی استخراج کنید و v2rayN.exe را اجرا کنید.

سرور را وارد کنید

لینک ss:// که در بخش ۷ ساخته شده را در کلیپ‌بورد خود کپی کنید (یا فایل PNG QR را با scp کپی کرده و باز کنید)، سپس در v2rayN مسیر Servers → Import bulk URL from clipboard را انتخاب کنید (یا کد QR را از طریق اسکنر داخلی اسکن کنید). نمایه سرور جدید با برچسبی که بعد از # تنظیم کرده‌اید، در لیست ظاهر می‌شود.

روی پروفایل کلیک راست کرده و آن را به عنوان فعال انتخاب کنید، سپس پروکسی سیستم (یا حالت TUN، برای مسیریابی کل دستگاه) را از نوار ابزار پنجره اصلی فعال کنید.

اتصال از macOS

همه چیز در این بخش روی مک شما اتفاق می‌افتد، نه از طریق SSH.

نصب ShadowsocksX-NG

ShadowsocksX-NG کلاینت رابط کاربری گرافیکی بومی macOS برای Shadowsocks است که مدت‌هاست در حال اجرا است؛ نسخه فعلی، یک ساختار بومی Apple Silicon را در کنار Intel ارائه می‌دهد. آخرین نسخه .dmg را از صفحه انتشارها دانلود کنید.

فایل .dmg را باز کنید و ShadowsocksX-NG را به داخل برنامه‌ها بکشید، سپس آن را اجرا کنید - به صورت یک آیکون در نوار منو ظاهر می‌شود.

 

سرور را وارد کنید

لینک ss:// را از بخش ۷ در کلیپ‌بورد خود کپی کنید، سپس روی آیکون نوار منو → سرورها → تنظیمات سرور → علامت + در پایین سمت چپ کلیک کنید و گزینه "وارد کردن از Pasteboard" را انتخاب کنید (یا پس از باز کردن فایل PNG، کد QR را با گزینه "اسکن کد QR از صفحه" اسکن کنید). پروفایل جدید را از منوی کشویی نوار منو انتخاب کنید، سپس "Shadowsocks: On" را فعال کنید و حالت مسیریابی "PAC Auto" یا "Global" را از همان منو انتخاب کنید.

اتصال از طریق دسکتاپ لینوکس

همه چیز در این بخش روی دستگاه لینوکس خودتان اتفاق می‌افتد، نه روی VPS.

کلاینت محلی را نصب کنید

اگر shadowsocks-rust را در بخش ۳ روی سرور نصب کرده‌اید، همان آرشیو انتشار شامل sslocal، یک کلاینت پروکسی محلی SOCKS5/HTTP، است. آن را مانند فایل باینری سرور دانلود و نصب کنید (اگر پسوند OS/arch برای دسکتاپ شما x86_64-unknown-linux-gnu نیست، آن را تنظیم کنید):

SS_VER=$(curl -s https://api.github.com/repos/shadowsocks/shadowsocks-rust/releases/latest | grep -Po '"tag_name": "\K[^"]*')
wget "https://github.com/shadowsocks/shadowsocks-rust/releases/download/${SS_VER}/shadowsocks-${SS_VER}.x86_64-unknown-linux-gnu.tar.xz"
tar -xf shadowsocks-*.tar.xz
sudo install -m 755 sslocal /usr/local/bin/

پیکربندی و اجرا

یک پیکربندی محلی کوچک ایجاد کنید که به عنوان یک پروکسی SOCKS5 به 127.0.0.1:1080 گوش می‌دهد:

mkdir -p ~/.config/shadowsocks-rust
cat > ~/.config/shadowsocks-rust/local.json << 'EOF'
{
    "server": "your_IP_address",
    "server_port": 8388,
    "password": "YOUR-GENERATED-KEY-HERE",
    "method": "2022-blake3-aes-256-gcm",
    "local_address": "127.0.0.1",
    "local_port": 1080,
    "mode": "tcp_and_udp"
}
EOF
sslocal -c ~/.config/shadowsocks-rust/local.json

تنظیمات شبکه مرورگر یا سیستم خود را روی یک پروکسی SOCKS5 روی 127.0.0.1:1080 تنظیم کنید. برای رابط کاربری گرافیکی، فورک‌های Nekoray یا ShadowsocksX-Qt5 می‌توانند همان لینک ss:// را از بخش 7 وارد کرده و sslocal را برای شما مدیریت کنند، به جای اینکه آن را به صورت دستی اجرا کنید.

اتصال از اندروید

همه چیز اینجا روی دستگاه اندروید شما اتفاق می‌افتد، نه از طریق SSH.

یک کلاینت نصب کنید

دو گزینه خوب:

  • Shadowsocks برای اندروید — کلاینت رسمی از سازمان shadowsocks. آن را از گوگل پلی نصب کنید (با جستجوی عبارت "Shadowsocks") یا اگر نسخه Play در دستگاه شما در دسترس نیست، فایل APK را مستقیماً از صفحه انتشار پروژه دانلود کنید. منطقه است.
  • v2rayNG — همتای اندروید v2rayN، که از Shadowsocks در کنار VLESS/VMess/Trojan پشتیبانی می‌کند؛ اگر می‌خواهید یک برنامه برای چندین پروتکل داشته باشید، مفید است. انواع.

سرور را وارد کنید

در هر دو برنامه: روی دکمه + ضربه بزنید، پس از کپی کردن لینک ss:// از بخش ۷، گزینه «وارد کردن از کلیپ‌بورد» را انتخاب کنید، یا «کد QR را اسکن کنید» و دوربین را به سمت PNG بگیرید. روی پروفایل وارد شده ضربه بزنید تا انتخاب شود، سپس روی دکمه اتصال ضربه بزنید. اندروید برای اولین بار از شما اجازه VPN می‌خواهد - آن را برای ایجاد تونل تأیید کنید. 

اتصال از iOS

همه چیز اینجا روی آیفون یا آیپد شما اتفاق می‌افتد، نه از طریق SSH.

یک کلاینت سازگار با Shadowsocks نصب کنید

Shadowrocket پرکاربردترین کلاینت iOS با پشتیبانی از Shadowsocks است؛ این یک برنامه پولی در اکثر فروشگاه‌ها است. آن را در اپ استور جستجو کنید یا باز کنید.

استرایسند یک جایگزین رایگان و متن‌باز است که در کنار پروتکل‌های VLESS، تروجان و سایر پروتکل‌ها، از Shadowsocks نیز پشتیبانی می‌کند.

کاتالوگ‌های اپ استور بر اساس فروشگاه/منطقه متفاوت هستند و می‌توانند با گذشت زمان تغییر کنند؛ اگر هیچ‌کدام از آن‌ها در اپ استور شما قابل مشاهده نیست، در اپ استور عبارت «Shadowsocks» یا «V2Box» را جستجو کنید.

سرور را وارد کنید

لینک ss:// را در کلیپ‌بورد خود کپی کنید، کلاینت را باز کنید و از گزینه Add/Import from clipboard آن استفاده کنید، یا کد QR را از بخش ۷ با اسکنر داخلی کلاینت اسکن کنید. پروفایل جدید را روشن کنید؛ iOS برای اولین بار از شما اجازه پیکربندی VPN را می‌خواهد که باید آن را از طریق Face ID، Touch ID یا کد عبور خود تأیید کنید.

تایید اتصال

با فعال بودن تونل از بخش‌های ۸، ۹، ۱۰، ۱۱ یا ۱۲، به دستگاه خودتان (نه جلسه SSH) برگردید و هر بررسی‌کننده «what’s my IP» را در مرورگر باز کنید - آدرس نشان داده شده باید با آدرس IP سرور مجازی شما، your_IP_address، مطابقت داشته باشد.

برای تأیید از سمت سرور، فعالیت اتصال را در systemd journal بررسی کنید و نشست‌های برقرار شده روی پورت را تأیید کنید (برای rust journal از ssserver یا برای libev journal از shadowsocks-libev استفاده کنید):

journalctl -u ssserver -n 50 --no-pager
ss -tnp | grep ':8388'

مرجع:

میدان

مقدار

دفتر مرکزی و نشانی قانونی:

آدرس IP عمومی VPS شما

بندر

۴۴۳ (همان پورتی که در بخش ۲ باز شد)

کلمه عبور

کلید/عبارت عبور تولید شده در بخش ۴

روش

2022-blake3-aes-256-gcm (زنگ زدگی) یا chacha20-ietf-poly1305 (libev) - باید دقیقاً در هر دو طرف مطابقت داشته باشند

حالت

tcp_and_udp - هم پروکسی TCP و هم رله UDP را فعال می‌کند (DNS، برخی بازی‌ها)

پلاگین

در این راهنما از هیچ کدام استفاده نشده است - Shadowsocks برای عملکرد به هیچ SNI، گواهی یا افزونه انتقال نیاز ندارد.

نتیجه

با دنبال کردن این راهنما، VPS شما سرور Shadowsocks مخصوص به خود را اجرا می‌کند - چه shadowsocks-rust با رمزنگاری مدرن AEAD-2022، یا shadowsocks-libev از مخزن خود اوبونتو/دبیان - به عنوان یک سرویس systemd که بدون هیچ اقدامی از جانب شما، پس از راه‌اندازی مجدد نیز به کار خود ادامه می‌دهد.

اضافه کردن کاربران بیشتر:

  • ساده‌ترین: یک رمز عبور دوم (بخش ۴) ایجاد کنید و یک نمونه ssserver/shadowsocks-libev دوم را روی پورت دیگری با فایل پیکربندی و واحد systemd مخصوص به خود اجرا کنید، سپس بخش‌های ۵ تا ۷ را برای آن پورت تکرار کنید.
  • shadowsocks-rust با رمز AEAD-2022 همچنین از چندین کاربر که یک پورت و کلید مشتق رمز عبور را از طریق آرایه "users" در config.json (سرآیندهای هویت توسعه‌پذیر، SIP022) به اشتراک می‌گذارند، پشتیبانی می‌کند - اگر به محاسبه ترافیک هر کاربر روی یک پورت نیاز دارید، برای نحوه دقیق آن به بخش پیکربندی shadowsocks-rust README مراجعه کنید.

چند عادت که ارزش دارند پس از راه‌اندازی سرور رعایت شوند:

  • سرور را به‌روز نگه دارید. برای shadowsocks-rust، مراحل دانلود و نصب از بخش ۳ را به صورت دوره‌ای با جستجوی نسخه جدید دوباره اجرا کنید، سپس systemctl ssserver را مجدداً راه‌اندازی کنید. برای shadowsocks-libev، ارتقاء ساده apt آن را پوشش می‌دهد.
  • فایل config.json را در جایی خصوصی خارج از سرور ذخیره کنید. این فایل رمز عبور هر کلاینت را در خود نگه می‌دارد؛ از دست دادن آن به معنای ایجاد مجدد اعتبارنامه برای هر دستگاه است.
  • اگر دستگاهی گم شد یا کلاینتی در معرض خطر قرار گرفت، رمز عبور را تغییر دهید: یک رمز عبور جدید ایجاد کنید (بخش ۴)، config.json را به‌روزرسانی کنید، سرویس را مجدداً راه‌اندازی کنید و لینک کلاینت را (بخش ۷) برای هر دستگاه باقی‌مانده بازسازی کنید.

اگر اتصال برقرار نشد، به ترتیب موارد زیر را بررسی کنید:

  • وضعیت سرویس (systemctl status ssserver --no-pager یا shadowsocks-libev) و ژورنال (journalctl -u ssserver -n 50 --no-pager)
  • قوانین فایروال (وضعیت ufw - پورت باید برای هر دو tcp و udp باز باشد)
  • اینکه پورت از قبل توسط سرویس دیگری محدود نشده باشد (ss -lntp | grep ':8388' ​​فقط باید ssserver/ss-server را نشان دهد)
  • اینکه رمز عبور، متد و پورت در کلاینت دقیقاً با config.json مطابقت داشته باشند - یک کاراکتر نامتناسب، دست‌دهی را بی‌صدا با شکست مواجه می‌کند و معمولاً به جای یک خطای صریح، به صورت یک زمان‌بندی اتصال نشان داده می‌شود.
  • اگر کلاینت به UDP (DNS-over-proxy، برخی بازی‌ها/اپلیکیشن‌ها) نیاز داشته باشد و نه فقط tcp_only، این حالت روی tcp_and_udp روی سرور تنظیم می‌شود.

مقایسه Shadowsocks با سایر گزینه‌ها؟ برای پروتکل مبتنی بر استتار TLS که شناسایی آن در شبکه‌ای با فیلترینگ شدید دشوارتر است، به راهنمای واقعیت Xray VLESS ، برای گزینه‌های مبتنی بر WireGuard به راهنمای استقرار سرور AmneziaWG و نحوه راه‌اندازی Wireguard VPN روی سرور خود ، یا برای دو پروتکل ساخته شده برای شبکه‌های با اتلاف یا فیلترینگ شدید، به تنظیمات Hysteria2 و TUIC مراجعه کنید . اگر فقط به یک پروکسی ساده به جای یک راه‌اندازی تونلینگ کامل نیاز دارید، پیکربندی 3proxy در CentOS/ArchLinux جایگزین بسیار سبک‌تری است و راه‌اندازی سرور VPN قدیمی‌تر در لینوکس: PPTP یا OpenVPN؟ پروتکل‌هایی را پوشش می‌دهد که راه‌اندازی آنها ساده‌تر است اما تشخیص و مسدود کردن آنها برای DPI بسیار آسان‌تر است. برای مقاوم‌سازی عمومی سرور پس از راه‌اندازی پروکسی، به کاربران لینوکس: مدیریت و مجوزها مراجعه کنید.

❮ مقاله قبلی راهنمای واقعیت Xray VLESS: VPS، ویندوز، مک، اندروید، آیفون
مقاله بعدی ❯ حادثه امنیتی VMmanager 6: چه اتفاقی افتاد و چه باید کرد؟

VPS را از ما بخواهید

ما همیشه آماده پاسخگویی به سوالات شما در هر ساعت از شبانه روز هستیم.