
एक सेंसरशिप दरकिनार करने का उपकरण जो सत्तावादी राज्य प्रतिद्वंद्वियों द्वारा पहचान से बचने के लिए है।
Cloak एक प्लगेबल ट्रांसपोर्ट है जो OpenVPN जैसे पारंपरिक प्रॉक्सी टूल्स को परिष्कृत सेंसरशिप और डेटा डिस्क्रिमिनेशन से बचने में मदद करता है।
Cloak एक स्वतंत्र प्रॉक्सी प्रोग्राम नहीं है। बल्कि, यह प्रॉक्सी किए गए ट्रैफ़िक को सामान्य वेब ब्राउज़िंग गतिविधियों के रूप में छिपाकर काम करता है। पारंपरिक टूल्स के विपरीत, जिनमें बहुत प्रमुख ट्रैफ़िक फ़िंगरप्रिंट होते हैं और सरल फ़िल्टरिंग नियमों द्वारा ब्लॉक किए जा सकते हैं, Cloak को कम गलत सकारात्मकता के साथ सटीक रूप से लक्षित करना बहुत मुश्किल है। इससे सेंसरशिप कार्रवाइयों को होने वाली साइड इफेक्ट बढ़ जाती है, क्योंकि Cloak को ब्लॉक करने के प्रयास उन सेवाओं को भी नुकसान पहुंचा सकते हैं जिन पर सेंसर राज्य निर्भर करता है।
किसी भी तीसरे पक्ष के पर्यवेक्षक के लिए, Cloak सर्वर चलाने वाला होस्ट एक हानिरहित वेब सर्वर से अप्रभेद्य है। यह सर्वर से और सर्वर तक ट्रैफ़िक प्रवाह को निष्क्रिय रूप से देखने के साथ-साथ Cloak सर्वर के व्यवहारों की सक्रिय रूप से जांच करने पर भी लागू होता है। यह क्रिप्टोग्राफिक स्टेग्नोग्राफी तकनीकों की एक श्रृंखला के उपयोग के माध्यम से प्राप्त किया जाता है।
Cloak का उपयोग किसी भी प्रॉक्सी प्रोग्राम के साथ किया जा सकता है जो ट्रैफ़िक को TCP या UDP के माध्यम से टनल करता है, जैसे कि Shadowsocks, OpenVPN और Tor। एक ही सर्वर होस्ट पर कई प्रॉक्सी सर्वर चलाए जा सकते हैं और Cloak सर्वर एक रिवर्स प्रॉक्सी के रूप में कार्य करेगा, ग्राहकों को उनके वांछित प्रॉक्सी एंड से जोड़ेगा।
Cloak कई अंतर्निहित TCP कनेक्शनों के माध्यम से ट्रैफ़िक को मल्टीप्लेक्स करता है, जिससे हेड-ऑफ़-लाइन ब्लॉकिंग कम होती है और TCP हैंडशेक ओवरहेड समाप्त होता है। यह ट्रैफ़िक पैटर्न को वास्तविक वेबसाइटों के अधिक समान बनाता है।
Cloak मल्टी-यूज़र सपोर्ट प्रदान करता है, जिससे कई क्लाइंट एक ही पोर्ट (डिफ़ॉल्ट रूप से 443) पर प्रॉक्सी सर्वर से कनेक्ट हो सकते हैं। यह उपयोग क्रेडिट और बैंडविड्थ नियंत्रण जैसी ट्रैफ़िक प्रबंधन सुविधाएँ भी प्रदान करता है। यह एक प्रॉक्सी सर्वर को कई उपयोगकर्ताओं की सेवा करने की अनुमति देता है, भले ही अंतर्निहित प्रॉक्सी सॉफ़्टवेयर कई उपयोगकर्ताओं के लिए डिज़ाइन नहीं किया गया हो।
Cloak Amazon Cloudfront जैसे मध्यवर्ती CDN सर्वर के माध्यम से टनलिंग का भी समर्थन करता है। ऐसी सेवाओं का इतना व्यापक रूप से उपयोग किया जाता है कि उनके ट्रैफ़िक को बाधित करने के प्रयास सेंसर के लिए बहुत अधिक साइड इफेक्ट पैदा कर सकते हैं।
सर्वर पर Shadowsocks के साथ Cloak को तेज़ी से तैनात करने के लिए, आप @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 बेस64 में एन्कोडेड स्टैटिक curve25519 डिफी-हेलमैन प्राइवेट कुंजी है।
BypassUID उन UID की सूची है जो बिना किसी बैंडविड्थ या क्रेडिट सीमा प्रतिबंध के अधिकृत हैं।
AdminUID बेस64 में व्यवस्थापक उपयोगकर्ता का UID है। यदि आप केवल BypassUID में उपयोगकर्ता जोड़ते हैं तो आप इसे खाली छोड़ सकते हैं।
DatabasePath userinfo.db का पथ है, जो उपयोगकर्ता उपयोग जानकारी और प्रतिबंधों को संग्रहीत करने के लिए उपयोग किया जाता है। Cloak फ़ाइल को स्वचालित रूप से बनाएगा यदि यह मौजूद नहीं है। यदि आप केवल BypassUID में उपयोगकर्ता जोड़ते हैं तो आप इसे खाली छोड़ सकते हैं। इस फ़ील्ड का कोई प्रभाव नहीं है यदि AdminUID एक वैध UID नहीं है या खाली है।
KeepAlive उन सेकंड की संख्या है जो OS को बताता है कि अंतर्निहित प्रॉक्सी सर्वर को TCP KeepAlive प्रोब भेजने से पहले कितनी देर तक निष्क्रियता के बाद प्रतीक्षा करनी है। शून्य या नकारात्मक मान इसे निष्क्रिय कर देगा। डिफ़ॉल्ट 0 (निष्क्रिय) है।
UID बेस64 में आपका UID है।
Transport direct या CDN हो सकता है। यदि सर्वर होस्ट चाहता है कि आप सीधे उससे कनेक्ट करें, तो direct का उपयोग करें। यदि इसके बजाय CDN का उपयोग किया जाता है, तो CDN का उपयोग करें।
PublicKey सर्वर व्यवस्थापक द्वारा दी गई बेस64 में स्टैटिक curve25519 सार्वजनिक कुंजी है।
ProxyMethod आपके द्वारा उपयोग की जा रही प्रॉक्सी विधि का नाम है। यह सर्वर की ProxyBook में प्रविष्टियों में से एक से बिल्कुल मेल खाना चाहिए।
EncryptionMethod उस एन्क्रिप्शन एल्गोरिदम का नाम है जिसे आप Cloak द्वारा उपयोग करना चाहते हैं। विकल्प हैं plain, aes-256-gcm (aes-gcm के समानार्थी), aes-128-gcm, और chacha20-poly1305। नोट: Cloak परिवहन सुरक्षा प्रदान करने के लिए अभिप्रेत नहीं है। एन्क्रिप्शन का उद्देश्य प्रॉक्सी प्रोटोकॉल के फिंगरप्रिंट को छिपाना और पेलोड को सांख्यिकीय रूप से यादृच्छिक जैसा बनाना है। आप इसे केवल plain पर छोड़ सकते हैं यदि आप सुनिश्चित हैं कि आपका अंतर्निहित प्रॉक्सी टूल पहले से ही एन्क्रिप्शन और प्रमाणीकरण दोनों प्रदान करता है (AEAD या समान तकनीकों के माध्यम से)।
ServerName वह डोमेन है जिसे आप अपने ISP या फ़ायरवॉल को सोचने देना चाहते हैं कि आप देख रहे हैं। आदर्श रूप से इसे सर्वर के कॉन्फ़िगरेशन में RedirAddr से मेल खाना चाहिए, एक प्रमुख साइट जिसे सेंसर अनुमति देता है, लेकिन ऐसा होना ज़रूरी नहीं है। प्रत्येक कनेक्शन के लिए सर्वर नाम को यादृच्छिक बनाने के लिए random का उपयोग करें।
AlternativeNames एक सरणी है जिसका उपयोग ServerName के साथ प्रत्येक नए कनेक्शन के लिए विभिन्न ServerNames के बीच फेरबदल करने के लिए किया जाता है। यह CDN ट्रांसपोर्ट मोड के साथ टकराव कर सकता है यदि CDN प्रदाता डोमेन फ्रंटिंग को प्रतिबंधित करता है और वैकल्पिक डोमेन को अस्वीकार करता है।
उदाहरण:
{
"ServerName": "bing.com",
"AlternativeNames": ["cloudflare.com", "github.com"]
}
CDNOriginHost CDN मोड के तहत ओरिजिन सर्वर (यानी Cloak चलाने वाला सर्वर) का डोमेन नाम है। इसका प्रभाव केवल तब होता है जब Transport को CDN पर सेट किया जाता है। यदि सेट नहीं किया गया है, तो यह डिफ़ॉल्ट रूप से कमांडलाइन तर्क (स्टैंडअलोन मोड में) या Shadowsocks (प्लगइन मोड में) के माध्यम से आपूर्ति किए गए रिमोट होस्टनाम पर होगा। CDN सर्वर के साथ TLS सत्र स्थापित होने के बाद, इस डोमेन नाम का उपयोग HTTP अनुरोध के Host हेडर में CDN सर्वर से इस होस्ट के साथ वेबसॉकेट कनेक्शन स्थापित करने के लिए कहने के लिए किया जाएगा।
CDNWsUrlPath URL पथ है जिसका उपयोग CDN मोड के तहत भेजे गए वेबसॉकेट अनुरोध के निर्माण के लिए किया जाता है, और इसका प्रभाव केवल तब होता है जब Transport को CDN पर सेट किया जाता है। यदि सेट नहीं किया गया है, तो यह डिफ़ॉल्ट रूप से "/" होगा। इस विकल्प का उपयोग TLS सत्र स्थापित होने के बाद HTTP अनुरोध की पहली पंक्ति बनाने के लिए किया जाता है। यह मुख्य रूप से एक रिवर्स प्रॉक्सी के पीछे Cloak सर्वर के लिए है, जहाँ केवल विशिष्ट URL पथ के तहत अनुरोध अग्रेषित किए जाते हैं।
NumConn आपके द्वारा उपयोग किए जाने वाले अंतर्निहित TCP कनेक्शनों की मात्रा है। अधिकांश लोगों के लिए डिफ़ॉल्ट 4 उपयुक्त होना चाहिए। इसे बहुत अधिक सेट करने से प्रदर्शन बाधित होगा। इसे 0 पर सेट करने से कनेक्शन मल्टीप्लेक्सिंग अक्षम हो जाएगी और प्रत्येक TCP कनेक्शन एक अलग अल्पकालिक सत्र उत्पन्न करेगा जो समाप्त होने पर बंद हो जाएगा। यह इसे GoQuiet जैसा बनाता है। यह अस्थिर कनेक्शन वाले लोगों के लिए उपयोगी हो सकता है।
BrowserSig वह ब्राउज़र है जिसे आप दिखना चाहते हैं कि आप उपयोग कर रहे हैं। यह आपके वास्तविक ब्राउज़र से प्रासंगिक नहीं है। वर्तमान में, chrome, firefox और safari समर्थित हैं।
KeepAlive उन सेकंड की संख्या है जो OS को बताता है कि Cloak सर्वर को TCP KeepAlive प्रोब भेजने से पहले निष्क्रियता के बाद कितनी देर तक प्रतीक्षा करनी है। शून्य या नकारात्मक मान इसे निष्क्रिय कर देता है। डिफ़ॉल्ट 0 (निष्क्रिय) है। चेतावनी: इसे सक्षम करने से आपका सर्वर एक प्रॉक्सी के रूप में अधिक पता लगाने योग्य हो सकता है, लेकिन यह Cloak क्लाइंट को इंटरनेट रुकावट को अधिक तेज़ी से पहचानने में मदद करेगा।
StreamTimeout उन सेकंड की संख्या है जो Cloak किसी प्रॉक्सी प्रोग्राम से आने वाले कनेक्शन से कोई डेटा भेजने की प्रतीक्षा करता है, जिसके बाद कनेक्शन Cloak द्वारा बंद कर दिया जाएगा। Cloak TCP कनेक्शन स्थापित होने के बाद उस पर कोई टाइमआउट लागू नहीं करेगा।
ck-server -key चलाएँ। सार्वजनिक कुंजी उपयोगकर्ताओं को दी जानी चाहिए, निजी कुंजी गुप्त रखी जानी चाहिए।ck-server -uid चलाएँ। नया UID AdminUID के रूप में उपयोग किया जाएगा।PrivateKey को अभी प्राप्त निजी कुंजी में बदलें; AdminUID को अभी प्राप्त UID में बदलें।ProxyBook संपादित करें।sudo ck-server -c <path to ckserver.json> चलाएँ। ck-server को रूट विशेषाधिकार की आवश्यकता है क्योंकि यह कम नंबर वाले पोर्ट (443) से बंधता है। वैकल्पिक रूप से, ck-server को अनावश्यक रूप से रूट विशेषाधिकार देने से बचने के लिए आप https://superuser.com/a/892391 का पालन कर सकते हैं।ck-server -uid चलाएँ और UID को ckserver.json में BypassUID फ़ील्ड में जोड़ें।
ckserver.json में AdminUID जनरेट और सेट किया है, साथ ही DatabasePath में userinfo.db का पथ भी (Cloak आपके लिए यह फ़ाइल बनाएगा यदि यह पहले से मौजूद नहीं है)।ck-client -s <सर्वर का IP> -l <एक स्थानीय पोर्ट> -a <AdminUID> -c <ckclient.json का पथ> चलाएँ ताकि एडमिन मोड में प्रवेश करें।index.html को ब्राउज़र में खोल सकते हैं। किसी वेब सर्वर की आवश्यकता नहीं है)।127.0.0.1:<चरण 1 में दर्ज किया गया पोर्ट> टाइप करें, और List पर क्लिक करें।+ पैनल पर क्लिक करके और उपयोगकर्ता जोड़ सकते हैं।नोट: उपयोगकर्ता डेटाबेस स्थायी है क्योंकि यह डिस्क पर है। जब भी आप ck-server शुरू करते हैं तो आपको उपयोगकर्ताओं को फिर से जोड़ने की आवश्यकता नहीं है।
Android क्लाइंट यहाँ उपलब्ध है: https://github.com/cbeuw/Cloak-android
example_config/ckclient.json को अपनी पसंद के स्थान पर कॉपी करें। प्राप्त UID और PublicKey दर्ज करें। ProxyMethod को सर्वर सिरे पर ProxyBook में संबंधित प्रविष्टि से बिल्कुल मेल खाने के लिए सेट करें।ck-client -c <ckclient.json का पथ> -s <आपके सर्वर का ip> चलाएँ।यदि आपको यह प्रोजेक्ट उपयोगी लगता है, तो आप मेरे मर्च स्टोर पर जा सकते हैं; वैकल्पिक रूप से आप सीधे मुझे दान कर सकते हैं
BTC: bc1q59yvpnh0356qq9vf0j2y7hx36t9ysap30spx9h
ETH: 0x8effF29a8F9bD38A367580527AC303972c92b60c