Shadowsocks هو بروتوكول وسيط مشفر خفيف الوزن يعتمد على SOCKS5، صُمم في الأصل لتجاوز قيود التحكم في حركة البيانات وحظرها على الشبكات العادية. على عكس الشبكات الافتراضية الخاصة الكاملة (VPN)، فإنه يُمرر فقط البيانات التي يرسلها التطبيق إليه صراحةً، ولا يُضيف أي عبء إضافي تقريبًا، ويعمل بكفاءة حتى مع الاتصالات ذات السرعات المحدودة. لا يُحاول Shadowsocks محاكاة عملية المصافحة TLS الحقيقية كما يفعل VLESS+Reality، بل تكمن قوته في بساطته، ودعمه الواسع للأجهزة (أجهزة التوجيه، والهواتف، والمتصفحات)، وانخفاض زمن الاستجابة بشكل ملحوظ، على حساب سهولة اكتشافه من خلال نمط حركة البيانات على الشبكات الخاضعة لفحص دقيق.
يوجد تطبيقان للخادم يتم صيانتهما بشكل فعال:
- shadowsocks-rust — هو تطبيق مرجعي حديث من منظمة shadowsocks، مكتوب بلغة Rust. يدعم عائلة تشفير AEAD-2022 الأحدث، ويجري تطويره بنشاط، وهو التطبيق الذي يقوم هذا الدليل بتثبيته وتكوينه بالتفصيل.
- shadowsocks-libev — تطبيق C الأقدم. لا يزال يُحدَّث لإصلاح الأخطاء، ويُقدَّم كحزمة apt جاهزة مع وحدات systemd الخاصة به، وهو خيار جيد إذا كنت ترغب في تثبيت بسيط للغاية دون أي معالجة يدوية للملفات الثنائية. يشرح هذا الدليل هذا الخيار كطريقة تثبيت بديلة في القسم 3.
يشرح هذا الدليل كيفية تهيئة الخادم يدويًا عبر سطر الأوامر، دون استخدام لوحة تحكم ويب أو Docker. عند ظهور حقل "عنوان IP"، استبدله بعنوان IP الفعلي لخادمك الافتراضي الخاص (VPS).
ما ستحتاج إليه: خادم افتراضي خاص يعمل بنظام Ubuntu 22.04/24.04 أو Debian 11/12، وصلاحيات الجذر، وعنوان IP الخاص بالخادم الافتراضي الخاص بك، ومنفذ UDP/TCP مجاني (يستخدم هذا الدليل المنفذ 8388، وهو المنفذ الافتراضي لـ Shadowsocks).
ليس لديك خادم بعد؟ انظر كيفية طلب خادم ودفع ثمنه.
هل تقارن هذا الخيار بخيارات الاستضافة الذاتية الأخرى أولاً؟ راجع دليل Xray VLESS Reality للحصول على بديل قائم على تمويه TLS، أو دليل نشر خادم AmneziaWG للحصول على خيار قائم على WireGuard، أو إعداد Hysteria2 وTUIC لبروتوكولين بروكسي حديثين آخرين.
الاتصال بالخادم
ويندوز (PuTTY)
افتح برنامج PuTTY، وأدخل عنوان IP الخاص بخادمك الافتراضي في حقل اسم المضيف، واضبط المنفذ على 22، وقم بتسجيل الدخول كمسؤول باستخدام كلمة المرور التي أرسلها لك مزود خدمة الخادم الافتراضي عبر البريد الإلكتروني.
عنوان IP الخاص بالخادم: عنوان IP الخاص بك
تسجيل الدخول باسم: الجذر
كلمة المرور: كلمة مرورك
للحصول على شرح مفصل لكيفية الاتصال عبر PuTTY/SSH، راجع كيفية الاتصال بخادم Linux عبر SSH.
لينكس / ماك أو إس (طرفية)
ssh root@your_IP_address
يتم تنفيذ جميع الأوامر أدناه على الخادم، في جلسة SSH نفسها - وهذا يغطي الأقسام من 2 إلى 7، بالإضافة إلى عمليات التحقق من جانب الخادم في القسم 13. أما الأقسام من 8 إلى 12 (تثبيت تطبيقات العميل وتكوينها) فتتم على جهازك الذي يعمل بنظام Windows/macOS/Linux/Android/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 قابل للمسح الضوئي في القسم 7.
قم بتكوين جدار الحماية (UFW)
للمزيد حول قواعد UFW، راجع قسم "تكوين جدار الحماية على نظام لينكس".
افتح المنفذين اللذين ستحتاج إليهما: 22/tcp لـ SSH (تجاهل هذه القاعدة وستخاطر بفقدان الوصول إلى الخادم) و8388، كلاهما tcp وudp — يقوم Shadowsocks بتمرير اتصالات TCP وارتباطات UDP (مفيد لـ DNS وبعض الألعاب/التطبيقات)، لذلك يجب فتح كلا اتجاهي المنفذ.
ufw allow 22/tcp
ufw allow 8388/tcp
ufw allow 8388/udp
ufw --force enable
ufw status
يجب أن تظهر القواعد الثلاث جميعها على أنها "مسموح" في مخرجات حالة جدار الحماية ufw. إذا قمت لاحقًا بتغيير المنفذ في ملف config.json، فقم بتحديث هذه القواعد لتتوافق معه.
تثبيت برنامج الخادم
اختر أحد الخيارين أدناه. يُنصح بالخيار أ (shadowsocks-rust): فهو تطبيق قيد التطوير النشط ويدعم خوارزميات التشفير الحديثة AEAD-2022 المستخدمة لاحقًا في هذا الدليل. أما الخيار ب (shadowsocks-libev) فهو خيار مناسب إذا كنت تفضل استخدام حزمة apt عادية مع وحدة systemd جاهزة ولا تحتاج إلى AEAD-2022.
الخيار أ - shadowsocks-rust (موصى به)
لا يتضمن Shadowsocks-rust حزمة apt مع الإصدارات الحالية، لذا يتم تثبيته عن طريق تنزيل الملف الثنائي الثابت المُجهز مسبقًا من إصدارات المشروع على GitHub. قم بجلب أحدث إصدار من واجهة برمجة تطبيقات 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"
إذا كان خادمك الافتراضي الخاص (VPS) من نوع arm64 بدلاً من x86_64 (تحقق باستخدام `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
تأكد من وجود الملف التنفيذي في مكانه وتحقق من الإصدار المثبت:
ssserver --version
أنشئ المجلد الذي سيحتوي على ملف الإعدادات:
mkdir -p /etc/shadowsocks-rust
يُثبّت هذا الدليل إصدارًا ثابتًا بدلًا من تمرير نص التثبيت إلى سطر الأوامر. للترقية لاحقًا، أعد تشغيل الأمرَين المذكورَين أعلاه مع بحث جديد عن قيمة SS_VER، ثم أوقف الخدمة، واستبدل الملف التنفيذي، وأعد تشغيلها (القسم 6).
الخيار ب — shadowsocks-libev (حزمة بديلة، apt)
يتم تضمين Shadowsocks-libev في مستودع Ubuntu universe (Ubuntu 16.10+) والمستودع الرئيسي لـ Debian (Debian 8+)، لذلك لا حاجة إلى PPA تابع لجهة خارجية على 22.04/24.04 أو Debian 11/12:
apt install -y 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 تلقائيًا. تُشير الأقسام من 4 إلى 6 إلى أوامر libev ومسارات الملفات الخاصة بها إلى جانب أوامر Rust. تنطبق بقية أقسام العميل في هذا الدليل (من 7 إلى 13) بشكل متطابق على أي من تطبيقي الخادم، نظرًا لأن كليهما يستخدم بروتوكول 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"
هذا يُطبع سلسلة base64 - هذه هي كلمة مرورك. انسخها في مكان آمن؛ ستلصقها في كل من إعدادات الخادم في القسم 5 ورابط العميل في القسم 7.
اختر عبارة مرور (shadowsocks-libev)
بالنسبة لخوارزميات التشفير الكلاسيكية AEAD المستخدمة في مكتبة shadowsocks-libev، فإن أي سلسلة عشوائية طويلة بما يكفي تفي بالغرض، لأنها تُمرر عبر PBKDF/HKDF بدلاً من استخدامها كمفتاح خام. يمكنك إنشاء واحدة باستخدام:
openssl rand -base64 32
كتابة إعدادات الخادم
صدأ جوارب الظل
افتح ملف التكوين للتحرير:
nano /etc/shadowsocks-rust/config.json
ألصق النموذج أدناه، مع استبدال كلمة المرور الخاصة بك من القسم 4 (ورقم المنفذ من القسم 2، إذا قمت بتغييره من 8388):
{
"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 لتأكيد اسم الملف، ثم اضغط على Ctrl+X للخروج من nano.
الحقول المهمة: يستمع الخادم على جميع الواجهات (0.0.0.0)؛ منفذ الخادم هو المنفذ المفتوح في القسم 2؛ كلمة المرور/الطريقة هما بيانات الاعتماد والتشفير من القسم 4؛ الوضع يُمكّن كلاً من إعادة توجيه TCP وUDP؛ المهلة هي مهلة الاتصال الخامل بالثواني؛ 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
Shadowsocks-libev
أنشأت حزمة apt بالفعل الملف /etc/shadowsocks-libev/config.json بإعدادات افتراضية (للاتصال المحلي فقط، وكلمة مرور عشوائية) ووحدة systemd خاصة بها. افتحه للتعديل.
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
}
يستخدم التكوين الافتراضي server: ["::1", "127.0.0.1"] (حلقة الاتصال فقط)؛ تغييره إلى "0.0.0.0" هو ما يجعل الخادم قابلاً للوصول إليه من عنوان IP العام - لا تتخطى هذا إذا قمت بنسخ الملف الافتراضي بدلاً من القالب أعلاه.
بدء الخدمة وتفعيل التشغيل التلقائي
صدأ جوارب الظل
systemctl enable --now ssserver
systemctl status ssserver --no-pager
يجب أن تظهر الحالة نشطة (قيد التشغيل). تأكد من وجود شيء ما يستمع بالفعل على المنفذ (كلا البروتوكولين):
ss -lntp | grep ':8388'
ss -lunp | grep ':8388'
إذا فشلت الخدمة في البدء، فإن أسرع طريقة لمعرفة السبب هي سجل النظام (للحصول على معلومات أساسية حول قراءة سجلات لينكس بشكل عام، انظر كيفية قراءة سجلات لينكس وأين تجدها ):
journalctl -u ssserver -n 50 --no-pager
Shadowsocks-libev
systemctl restart shadowsocks-libev
systemctl enable shadowsocks-libev
systemctl status shadowsocks-libev --no-pager
تحقق من المنفذ والسجلات بنفس الطريقة المتبعة مع shadowsocks-rust، مع استبدال اسم الخدمة:
ss -lntp | grep ':8388'
ss -lunp | grep ':8388'
journalctl -u shadowsocks-libev -n 50 --no-pager
بناء رابط اتصال العميل
يستورد عملاء Shadowsocks رابط مشاركة واحد ss:// (بتنسيق عنوان URL الخاص بـ SIP002) بدلاً من ملف تكوين. يقوم الرابط بتشفير كلمة المرور والرمز البرمجي باستخدام base64 في جزء معلومات المستخدم من عنوان 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"
مثال على المخرجات (مع مفتاح العنصر النائب):
ss://MjAyMi1ibGFrZTMtYWVzLTI1Ni1nY206eHl6X2V4YW1wbGVfa2V5X2hlcmU=@your_IP_address:8388#My-SS-Server
النص الذي يلي # هو مجرد تسمية عرض يمكنك إعادة تسميتها بحرية في أي عميل. بالنسبة لخادم shadowsocks-libev، استبدل METHOD="chacha20-ietf-poly1305" (أو aes-256-gcm) وعبارة المرور الخاصة به من القسم 4.
حوّله إلى رمز QR حتى يتمكن عملاء الهاتف المحمول من مسحه ضوئيًا مباشرةً:
qrencode -o ~/ss-client.png "ss://${USERINFO}@your_IP_address:8388#My-SS-Server"
انسخ ملف PNG إلى جهاز الكمبيوتر الخاص بك باستخدام scp، وقم بتشغيله من طرفية جهاز الكمبيوتر الخاص بك (أو PowerShell على نظام Windows)، وليس من الخادم:
scp root@your_IP_address:~/ss-client.png .
الاتصال من ويندوز
كل شيء في هذا القسم يحدث على جهاز الكمبيوتر الذي يعمل بنظام Windows الخاص بك، وليس عبر SSH - يجب أن يعمل العميل على الجهاز الذي سيستخدم الوكيل فعليًا.
قم بتثبيت v2rayN
قم بتنزيل ملف .zip الخاص بنظام التشغيل Windows 64 بت (لا يحتاج الإصدار المستقل إلى وقت تشغيل .NET منفصل اعتبارًا من إصدارات v2rayN الحديثة)، واستخرجه في أي مكان، وقم بتشغيل v2rayN.exe.
استورد الخادم
انسخ رابط ss:// المُنشأ في القسم 7 إلى الحافظة (أو انسخ صورة رمز الاستجابة السريعة بصيغة PNG باستخدام scp وافتحها)، ثم في v2rayN اختر الخوادم ← استيراد عناوين URL مجمعة من الحافظة (أو امسح رمز الاستجابة السريعة باستخدام الماسح الضوئي المدمج). سيظهر ملف تعريف الخادم الجديد في القائمة مع التسمية التي حددتها بعد علامة #.
انقر بزر الماوس الأيمن على الملف الشخصي وحدده كملف نشط، ثم قم بتمكين وكيل النظام (أو وضع TUN، لتوجيه الجهاز بأكمله) من شريط أدوات النافذة الرئيسية.
الاتصال من نظام التشغيل MacOS
كل شيء في هذا القسم يحدث على جهاز Mac الخاص بك، وليس عبر SSH.
قم بتثبيت ShadowsocksX-NG
ShadowsocksX-NG هو عميل واجهة المستخدم الرسومية الأصلي لنظام macOS الخاص ببرنامج Shadowsocks، والذي يعمل منذ فترة طويلة؛ ويأتي الإصدار الحالي منه مزودًا بنسخة أصلية من Apple Silicon إلى جانب نسخة Intel. حمّل أحدث ملف .dmg من صفحة الإصدارات.
افتح ملف .dmg واسحب ShadowsocksX-NG إلى التطبيقات، ثم قم بتشغيله - سيظهر كرمز في شريط القوائم.
استورد الخادم
انسخ رابط ss:// من القسم 7 إلى الحافظة، ثم انقر على أيقونة شريط القوائم ← الخوادم ← تفضيلات الخادم ← علامة + في أسفل اليسار، واختر "استيراد من الحافظة" (أو امسح رمز الاستجابة السريعة باستخدام "مسح رمز الاستجابة السريعة من الشاشة" بعد فتح ملف PNG). حدد الملف الشخصي الجديد من القائمة المنسدلة في شريط القوائم، ثم فعّل "Shadowsocks: تشغيل" واختر وضع التوجيه "PAC تلقائي" أو "عام" من القائمة نفسها.
الاتصال من سطح مكتب لينكس
كل ما في هذا القسم يحدث على جهاز Linux الخاص بك، وليس على الخادم الافتراضي الخاص (VPS).
قم بتثبيت العميل المحلي
إذا قمت بتثبيت shadowsocks-rust على الخادم في القسم 3، فإن نفس ملف الإصدار يحتوي على sslocal، وهو عميل وكيل محلي لبروتوكول SOCKS5/HTTP. قم بتنزيله وتثبيته بنفس طريقة تثبيت ملف الخادم (مع تعديل لاحقة نظام التشغيل/البنية لتناسب جهازك إذا لم يكن 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/
قم بتكوين وتشغيل
قم بإنشاء ملف تكوين محلي صغير يستمع على 127.0.0.1:1080 كوكيل SOCKS5:
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-style المعدلة استيراد رابط ss:// نفسه من القسم 7 وإدارة sslocal نيابةً عنك بدلاً من تشغيله يدويًا.
الاتصال من نظام أندرويد
كل شيء هنا يحدث على جهازك الذي يعمل بنظام Android، وليس عبر SSH.
قم بتثبيت برنامج العميل
خياران جيدان:
- Shadowsocks لنظام Android — التطبيق الرسمي من مؤسسة Shadowsocks. ثبّته من متجر Google Play (ابحث عن "Shadowsocks")، أو نزّل ملف APK مباشرةً من صفحة إصدارات المشروع إذا لم يكن متجر Play متوفرًا في منطقتك. منطقة.
- v2rayNG — هو تطبيق أندرويد مُكافئ لتطبيق v2rayN، ويدعم Shadowsocks إلى جانب VLESS/VMess/Trojan؛ وهو مفيد إذا كنت تريد تطبيقًا واحدًا لبروتوكولات متعددة. أنواع.
استورد الخادم
في أيٍّ من التطبيقين: انقر على زر "+"، ثم اختر "استيراد من الحافظة" بعد نسخ رابط ss:// من القسم 7، أو "مسح رمز الاستجابة السريعة" ووجّه الكاميرا إلى ملف PNG. انقر على الملف الشخصي المُستورد لتحديده، ثم انقر على زر الاتصال. سيطلب منك نظام أندرويد منح إذن VPN في المرة الأولى - وافق عليه لإنشاء النفق.
الاتصال من نظام iOS
كل شيء هنا يحدث على جهاز iPhone أو iPad الخاص بك، وليس عبر SSH.
قم بتثبيت عميل يدعم تقنية Shadowsocks
يُعدّ Shadowrocket أكثر تطبيقات iOS استخدامًا مع دعم Shadowsocks؛ وهو تطبيق مدفوع في معظم متاجر التطبيقات. ابحث عنه في متجر التطبيقات، أو افتحه.
Streisand هو بديل مجاني ومفتوح المصدر يدعم أيضًا Shadowsocks إلى جانب VLESS و Trojan وبروتوكولات أخرى.
تختلف كتالوجات متجر التطبيقات حسب المتجر/المنطقة ويمكن أن تتغير بمرور الوقت؛ إذا لم يكن أي منهما مرئيًا في متجرك، فابحث في متجر التطبيقات عن "Shadowsocks" أو "V2Box".
استورد الخادم
انسخ رابط ss:// إلى حافظتك، وافتح التطبيق، واستخدم خيار "إضافة/استيراد من الحافظة"، أو امسح رمز الاستجابة السريعة (QR) من القسم 7 باستخدام الماسح الضوئي المدمج في التطبيق. فعّل الملف الشخصي الجديد؛ سيطلب منك نظام iOS إذن تهيئة VPN في المرة الأولى، والذي ستحتاج إلى الموافقة عليه عبر بصمة الوجه (Face ID) أو بصمة الإصبع (Touch ID) أو رمز المرور الخاص بك.
التحقق من الاتصال
مع تفعيل النفق من القسم 8 أو 9 أو 10 أو 11 أو 12، ارجع إلى جهازك الخاص (وليس جلسة SSH) وافتح أي أداة فحص "ما هو عنوان IP الخاص بي" في متصفح - يجب أن يتطابق العنوان المعروض مع عنوان IP الخاص بخادم VPS الخاص بك، your_IP_address.
وللتحقق من جانب الخادم بدلاً من ذلك، تحقق من سجل النظام (systemd journal) بحثًا عن نشاط الاتصال وتأكد من وجود جلسات قائمة على المنفذ (استخدم ssserver لسجل rust، أو shadowsocks-libev لسجل libev):
journalctl -u ssserver -n 50 --no-pager
ss -tnp | grep ':8388'
مرجع:
|
الحقل |
بعد التخفيض |
|
العنوان |
عنوان IP العام الخاص بخادمك الافتراضي الخاص |
|
ميناء |
8388 (نفس الميناء الذي تم افتتاحه في القسم 2) |
|
كلمة المرور |
المفتاح/عبارة المرور المُنشأة في القسم 4 |
|
الأسلوب |
2022-blake3-aes-256-gcm (rust) أو chacha20-ietf-poly1305 (libev) — يجب أن تتطابق تمامًا على كلا الجانبين |
|
المعالم |
tcp_and_udp — يُمكّن كلاً من توجيه TCP وإعادة توجيه UDP (DNS، بعض الألعاب) |
|
المساعد |
لا يتطلب Shadowsocks أي SNI أو شهادة أو مكون إضافي للنقل لكي يعمل، وذلك وفقًا لما ورد في هذا الدليل. |
خاتمة
باتباع هذا الدليل، سيظل خادم VPS الخاص بك يعمل بخادم Shadowsocks الخاص به - إما shadowsocks-rust مع تشفير AEAD-2022 حديث، أو shadowsocks-libev من مستودع Ubuntu/Debian الخاص - كخدمة systemd تستمر في العمل بعد إعادة التشغيل دون أي إجراء من جانبك.
إضافة المزيد من المستخدمين:
- أبسط طريقة: قم بإنشاء كلمة مرور ثانية (القسم 4) وقم بتشغيل مثيل ssserver/shadowsocks-libev ثانٍ على منفذ مختلف مع ملف التكوين الخاص به ووحدة systemd، ثم كرر القسم 5-7 لهذا المنفذ.
- يدعم shadowsocks-rust مع تشفير AEAD-2022 أيضًا عدة مستخدمين يشاركون منفذًا واحدًا ومفتاح اشتقاق كلمة المرور عبر مصفوفة "users" في config.json (رؤوس الهوية القابلة للتوسيع، SIP022) - راجع قسم التكوين في ملف README الخاص بـ shadowsocks-rust للحصول على الصيغة الدقيقة إذا كنت بحاجة إلى حساب حركة المرور لكل مستخدم على منفذ واحد.
بعض العادات التي يجدر الاستمرار عليها بمجرد تشغيل الخادم:
- حافظ على تحديث الخادم. بالنسبة لـ shadowsocks-rust، أعد تشغيل خطوات التنزيل والتثبيت من القسم 3 بشكل دوري مع البحث عن أحدث إصدار، ثم أعد تشغيل الخادم باستخدام الأمر systemctl restart ssserver. أما بالنسبة لـ shadowsocks-libev، فيمكنك ترقيته باستخدام الأمر apt upgrade.
- احتفظ بنسخة احتياطية من ملف config.json في مكان خاص خارج الخادم. فهو يحتوي على كلمات مرور جميع العملاء؛ وفقدانه يعني إعادة إنشاء بيانات الاعتماد لكل جهاز.
- قم بتغيير كلمة المرور في حالة فقدان جهاز أو اختراق عميل: قم بإنشاء كلمة مرور جديدة (القسم 4)، وقم بتحديث config.json، وأعد تشغيل الخدمة، وأعد بناء رابط العميل (القسم 7) لكل جهاز متبقٍ.
إذا لم يتم الاتصال، فتحقق بالترتيب التالي:
- حالة الخدمة (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 - أي خطأ في حرف واحد يؤدي إلى فشل المصافحة دون ظهور أي رسالة خطأ، وعادةً ما يظهر ذلك على شكل مهلة اتصال بدلاً من خطأ صريح.
- يتم ضبط هذا الوضع على tcp_and_udp على الخادم إذا كان العميل يحتاج إلى UDP (DNS عبر الوكيل، بعض الألعاب/التطبيقات) وليس فقط tcp_only
هل تقارن Shadowsocks بخيارات أخرى؟ راجع دليل Xray VLESS Reality Guide للاطلاع على بروتوكول يعتمد على تمويه TLS، ما يجعل اكتشافه أكثر صعوبة على الشبكات ذات التصفية العالية. راجع أيضًا دليل AmneziaWG Server Deploying Guide ودليل إعداد WireGuard VPN على خادمك للاطلاع على بدائل تعتمد على WireGuard. أو راجع إعداد Hysteria2 وTUIC للاطلاع على بروتوكولين مصممين للشبكات ذات فقدان البيانات أو التصفية العالية. إذا كنت تحتاج فقط إلى وكيل بسيط بدلاً من إعداد نفق كامل، فإن إعداد 3proxy على CentOS/ArchLinux يُعد بديلاً أخف بكثير. أما إعداد خادم VPN الأقدم على Linux: PPTP أو OpenVPN؟ فيغطي بروتوكولات أسهل في الإعداد، ولكن يسهل على DPI اكتشافها وحظرها. لمزيد من المعلومات حول تحسين أمان الخادم بعد تشغيل الوكيل، راجع قسم مستخدمي Linux: الإدارة والصلاحيات.