
أداة لتجاوز الرقابة وتجنب اكتشافها من قبل خصوم الدولة الاستبدادية
Cloak هو نقل قابل للتوصيل يُعزز أدوات الوكيل التقليدية مثل OpenVPN لتجاوز الرقابة المتطورة والتمييز في البيانات.
ليس Cloak برنامج وكيل مستقلًا بذاته. بل يعمل عن طريق إخفاء حركة المرور الوكيلة كأنشطة تصفح ويب عادية. على عكس الأدوات التقليدية التي تمتلك بصمات حركة مرور واضحة جدًا ويمكن حظرها بقواعد تصفية بسيطة، فمن الصعب جدًا استهداف Cloak بدقة مع عدد قليل من النتائج الإيجابية الخاطئة. هذا يزيد من الضرر الجانبي لإجراءات الرقابة، حيث أن محاولات حظر Cloak قد تضر أيضًا بالخدمات التي تعتمد عليها الدولة الرقيبة.
بالنسبة لأي مراقب طرف ثالث، فإن المضيف الذي يدير خادم Cloak لا يمكن تمييزه عن خادم ويب بريء. سواء أثناء المراقبة السلبية لتدفق حركة المرور من وإلى الخادم، أو أثناء الاستقصاء النشط لسلوكيات خادم Cloak. يتم تحقيق ذلك من خلال استخدام سلسلة من تقنيات إخفاء المعلومات التشفيرية.
يمكن استخدام Cloak مع أي برنامج وكيل يُمرر حركة المرور عبر TCP أو UDP، مثل Shadowsocks وOpenVPN وTor. يمكن تشغيل خوادم وكيل متعددة على نفس مضيف الخادم وسيعمل خادم Cloak كوكيل عكسي، يربط العملاء بنقطة نهاية الوكيل المطلوبة.
يقوم Cloak بتعدد إرسال حركة المرور عبر اتصالات TCP أساسية متعددة مما يقلل من حظر الرأس ويزيل حمل المصافحة لـ TCP. هذا أيضًا يجعل نمط حركة المرور أكثر تشابهًا مع مواقع الويب الحقيقية.
يوفر Cloak دعمًا متعدد المستخدمين، مما يسمح لعدة عملاء بالاتصال بخادم الوكيل على نفس المنفذ (443 افتراضيًا). كما يوفر ميزات إدارة حركة المرور مثل رصيد الاستخدام والتحكم في عرض النطاق الترددي. هذا يسمح لخادم وكيل بخدمة عدة مستخدمين حتى لو لم يكن برنامج الوكيل الأساسي مصممًا لمستخدمين متعددين.
يدعم Cloak أيضًا النقل عبر خادم CDN وسيط مثل Amazon Cloudfront. هذه الخدمات مستخدمة على نطاق واسع لدرجة أن محاولات تعطيل حركة المرور إليها يمكن أن تؤدي إلى ضرر جانبي كبير جدًا للرقيب.
لنشر Cloak بسرعة مع Shadowsocks على خادم، يمكنك تشغيل هذا السكريبت الذي كتبه @HirbodBehnam
git clone https://github.com/cbeuw/Cloak
cd Cloak
go get ./...
make
ستكون الملفات الثنائية المبنية في مجلد build.
يمكن العثور على أمثلة لملفات الإعدادات تحت مجلد example_config.
RedirAddr هو عنوان إعادة التوجيه عندما لا تكون حركة المرور الواردة من عميل Cloak. من الناحية المثالية يجب ضبطه على موقع ويب رئيسي مسموح به من قبل الرقيب (مثل www.bing.com)
BindAddr هي قائمة بالعناوين التي سيرتبط بها Cloak ويستمع إليها (مثل [":443",":80"] للاستماع إلى المنفذين 443 و80 على جميع الواجهات)
ProxyBook هو كائن مفتاحه هو اسم ProxyMethod المستخدم من جانب العميل (حساس لحالة الأحرف). قيمته هي مصفوفة عنصرها الأول هو البروتوكول، والعنصر الثاني هو سلسلة IP:PORT لخادم الوكيل المنبع الذي سيقوم Cloak بتوجيه حركة المرور إليه.
مثال:
{
"ProxyBook": {
"shadowsocks": [
"tcp",
"localhost:51443"
],
"openvpn": [
"tcp",
"localhost:12345"
]
}
}
PrivateKey هو المفتاح الخاص الثابت لـ curve25519 Diffie-Hellman المشفر بـ base64.
BypassUID هي قائمة بـ UIDs المصرح لها دون أي حدود لعرض النطاق أو الرصيد.
AdminUID هو UID للمستخدم المسؤول بصيغة base64. يمكنك ترك هذا فارغًا إذا كنت ستضيف مستخدمين إلى BypassUID فقط.
DatabasePath هو المسار إلى userinfo.db، والذي يستخدم لتخزين معلومات استخدام المستخدم والقيود. سيقوم Cloak بإنشاء الملف تلقائيًا إذا لم يكن موجودًا. يمكنك ترك هذا فارغًا إذا كنت ستضيف مستخدمين إلى BypassUID فقط. هذا الحقل ليس له تأثير أيضًا إذا لم يكن AdminUID UID صالحًا أو كان فارغًا.
KeepAlive هو عدد الثواني لإخبار نظام التشغيل بالانتظار بعد عدم وجود نشاط قبل إرسال استقصاءات KeepAlive لـ TCP إلى خادم الوكيل المنبع. القيمة الصفرية أو السالبة تعطله. الافتراضي هو 0 (معطل).
UID هو UID الخاص بك بصيغة base64.
Transport يمكن أن يكون إما direct أو CDN. إذا أراد مضيف الخادم منك الاتصال به مباشرة، استخدم direct. إذا تم استخدام CDN بدلاً من ذلك، استخدم CDN.
PublicKey هو المفتاح العام الثابت لـ curve25519 بصيغة base64، معطى من مسؤول الخادم.
ProxyMethod هو اسم طريقة الوكيل التي تستخدمها. يجب أن يتطابق تمامًا مع أحد الإدخالات في ProxyBook في الخادم.
EncryptionMethod هو اسم خوارزمية التشفير التي تريد أن يستخدمها Cloak. الخيارات هي plain و aes-256-gcm (مرادف لـ aes-gcm) و aes-128-gcm و chacha20-poly1305. ملاحظة: Cloak ليس مخصصًا لتوفير أمان النقل. الهدف من التشفير هو إخفاء بصمات بروتوكولات الوكيل وجعل الحمولة تبدو عشوائية إحصائيًا. يمكنك فقط تركه كـ plain إذا كنت متأكدًا من أن أداة الوكيل الأساسية توفر بالفعل كلاً من التشفير والمصادقة (عبر AEAD أو تقنيات مشابهة).
ServerName هو النطاق الذي تريد أن يجعل مزود خدمة الإنترنت أو جدار الحماية يعتقد أنك تزوره. من الناحية المثالية يجب أن يتطابق مع RedirAddr في إعدادات الخادم، موقع رئيسي يسمح به الرقيب، لكنه ليس ضروريًا. استخدم random لعشوائية اسم الخادم لكل اتصال يتم.
AlternativeNames هي مصفوفة تُستخدم جنبًا إلى جنب مع ServerName للتبديل بين أسماء خوادم مختلفة لكل اتصال جديد. قد يتعارض هذا مع وضع النقل CDN إذا كان مزود CDN يحظر توجيه النطاق الأمامي ويرفض النطاقات البديلة.
مثال:
{
"ServerName": "bing.com",
"AlternativeNames": ["cloudflare.com", "github.com"]
}
CDNOriginHost هو اسم النطاق لخادم الأصل (أي الخادم الذي يشغل Cloak) تحت وضع CDN. هذا له تأثير فقط عندما يكون Transport مضبوطًا على CDN. إذا لم يتم تعيينه، فسيتم افتراضيًا إلى اسم المضيف البعيد المقدم عبر وسيطة سطر الأوامر (في الوضع المستقل)، أو بواسطة Shadowsocks (في وضع الإضافة). بعد إنشاء جلسة TLS مع خادم CDN، سيتم استخدام اسم النطاق هذا في رأس Host لطلب HTTP لطلب من خادم CDN إنشاء اتصال WebSocket مع هذا المضيف.
CDNWsUrlPath هو مسار URL المستخدم لبناء طلب WebSocket المرسل تحت وضع CDN، وله تأثير فقط عندما يكون Transport مضبوطًا على CDN. إذا لم يتم تعيينه، فسيتم افتراضيًا إلى "/". يستخدم هذا الخيار لبناء السطر الأول من طلب HTTP بعد إنشاء جلسة TLS. وهو مخصص بشكل أساسي لخادم Cloak خلف وكيل عكسي، حيث يتم إعادة توجيه الطلبات فقط تحت مسار URL محدد.
NumConn هو عدد اتصالات TCP الأساسية التي تريد استخدامها. الافتراضي 4 مناسب لمعظم الأشخاص. تعيينها مرتفع جدًا سيعيق الأداء. تعيينها على 0 سيعطل تعدد الإرسال في الاتصال وسيؤدي كل اتصال TCP إلى جلسة منفصلة قصيرة العمر سيتم إغلاقها بعد إنهائها. هذا يجعله يتصرف مثل GoQuiet. قد يكون هذا مفيدًا للأشخاص ذوي الاتصالات غير المستقرة.
BrowserSig هو المتصفح الذي تريد الظهور به. لا علاقة له بالمتصفح الذي تستخدمه فعليًا. حاليًا، يتم دعم chrome و firefox و safari.
KeepAlive هو عدد الثواني لإخبار نظام التشغيل بالانتظار بعد عدم وجود نشاط قبل إرسال استقصاءات KeepAlive لـ TCP إلى خادم Cloak. القيمة الصفرية أو السالبة تعطله. الافتراضي هو 0 (معطل). تحذير: تمكينه قد يجعل خادمك أكثر قابلية للاكتشاف كخادم وكيل، لكنه سيجعل عميل Cloak يكتشف انقطاع الإنترنت بسرعة أكبر.
StreamTimeout هو عدد الثواني التي ينتظرها Cloak لاتصال وارد من برنامج وكيل لإرسال أي بيانات، وبعدها سيتم إغلاق الاتصال بواسطة Cloak. لن يفرض Cloak أي مهلة على اتصالات TCP بعد إنشائها.
ck-server -key. يجب إعطاء المفتاح العام للمستخدمين، ويجب الاحتفاظ بالمفتاح الخاص سريًا.ck-server -uid. سيتم استخدام UID الجديد كـ AdminUID.example_config/ckserver.json إلى الموقع المطلوب. قم بتغيير PrivateKey إلى المفتاح الخاص الذي حصلت عليه للتو؛ قم بتغيير AdminUID إلى UID الذي حصلت عليه للتو.ProxyBook في ملف الإعدادات وفقًا لذلك.sudo ck-server -c <path to ckserver.json>. يحتاج ck-server إلى صلاحيات الجذر لأنه يرتبط بمنفذ منخفض (443). بدلاً من ذلك، يمكنك اتباع https://superuser.com/a/892391 لتجنب منح ck-server صلاحيات الجذر دون داعٍ.قم بتشغيل ck-server -uid وأضف UID إلى حقل BypassUID في ckserver.json.
AdminUID وتعيينه في ckserver.json، بالإضافة إلى مسار إلى userinfo.db في DatabasePath (سيقوم Cloak بإنشاء هذا الملف لك إذا لم يكن موجودًا بالفعل).ck-client -s <IP of the server> -l <A local port> -a <AdminUID> -c <path-to-ckclient.json> للدخول في وضع المسؤول.index.html في متصفح. لا يلزم وجود خادم ويب).127.0.0.1:<the port you entered in step 1> كقاعدة API، وانقر على List.+.ملاحظة: قاعدة بيانات المستخدمين دائمة لأنها على القرص. لا تحتاج إلى إضافة المستخدمين مرة أخرى في كل مرة تبدأ فيها ck-server.
عميل Android متاح هنا: https://github.com/cbeuw/Cloak-android
example_config/ckclient.json إلى مكان تختاره. أدخل UID و PublicKey اللذين حصلت عليهما. قم بتعيين ProxyMethod ليطابق تمامًا الإدخال المقابل في ProxyBook على جانب الخادم.ck-client -c <path to ckclient.json> -s <ip of your server>.إذا وجدت هذا المشروع مفيدًا، يمكنك زيارة متجري للبضائع؛ بدلاً من ذلك يمكنك التبرع مباشرة لي
BTC: bc1q59yvpnh0356qq9vf0j2y7hx36t9ysap30spx9h
ETH: 0x8effF29a8F9bD38A367580527AC303972c92b60c