نیلے رنگ سے باہر مہم جوئی

نیلے رنگ سے باہر مہم جوئی

Spotify آپ کو ڈیمنز، RFCs، نیٹ ورکس کا مطالعہ کرنے اور اوپن سورس کو فروغ دینے میں کس طرح مدد کر سکتا ہے۔ یا اگر آپ ادائیگی نہیں کر سکتے تو کیا ہوتا ہے، لیکن آپ واقعی کچھ پریمیم گڈیز چاہتے ہیں۔

شروع

تیسرے دن، یہ دیکھا گیا کہ Spotify IP ایڈریس کے ملک کی بنیاد پر اشتہارات دکھا رہا ہے۔ یہ بھی نوٹ کیا گیا کہ کچھ ممالک میں اشتہارات بالکل درآمد نہیں کیے جاتے تھے۔ مثال کے طور پر جمہوریہ بیلاروس میں۔ اور پھر نان پریمیم اکاؤنٹ میں اشتہارات کو غیر فعال کرنے کے لیے ایک "شاندار" منصوبہ بنایا گیا۔

Spotify کے بارے میں تھوڑا سا

عام طور پر، Spotify کی ایک عجیب پالیسی ہے۔ ہمارے بھائی کو پریمیم خریدنے کے لیے کافی مڑنا پڑتا ہے: اپنے پروفائل میں لوکیشن کو اوورسیز میں تبدیل کریں، ایک مناسب گفٹ کارڈ تلاش کریں جس کی ادائیگی صرف PayPal سے کی جا سکتی ہے، جو حال ہی میں عجیب و غریب کام کر رہا ہے اور اسے دستاویزات کا ایک گروپ چاہیے۔ عام طور پر، یہ بھی ایک ایڈونچر ہے، لیکن ایک مختلف ترتیب کا۔ اگرچہ زیادہ تر لوگ موبائل ورژن کی خاطر ایسا کرتے ہیں، مجھے اس میں کوئی دلچسپی نہیں ہے۔ لہذا، ذیل میں سب کچھ صرف ڈیسک ٹاپ ورژن کے معاملے میں مدد کرے گا. مزید یہ کہ افعال میں کوئی توسیع نہیں ہوگی۔ صرف کچھ اضافی کو کاٹنا۔

یہ اتنا پیچیدہ کیوں ہے؟

اور میں نے Spotify config میں socks-proxy ڈیٹا کو رجسٹر کرتے وقت ایسا سوچا۔ مسئلہ یہ نکلا کہ لاگ ان اور پاس ورڈ کا استعمال کرتے ہوئے جرابوں میں تصدیق کام نہیں کرتی۔ اس کے علاوہ، ڈویلپرز باقاعدگی سے پراکسی کے ارد گرد کچھ کرتے ہیں: کبھی اس کی اجازت دیتے ہیں، کبھی اسے منع کرتے ہیں، کبھی اسے توڑ دیتے ہیں، جو آف سائٹ پر بحث کے پورے پینل کو جنم دیتا ہے۔

یہ فیصلہ کیا گیا تھا کہ غیر مستحکم افعال پر بھروسہ نہ کریں اور کچھ زیادہ قابل اعتماد اور دلچسپ تلاش کریں۔

یہاں کہیں قاری ضرور پوچھے: کیوں نہیں لیتے؟ ssh ایک چابی کے ساتھ -D اور یہ اس کا خاتمہ ہے؟ اور، عام طور پر، وہ صحیح ہو گا. لیکن، سب سے پہلے، اس کو اب بھی شیطان بنانے اور آٹوش کے ساتھ دوستی کرنے کی ضرورت ہے، تاکہ پھٹے ہوئے کنکشن کے بارے میں سوچنا نہ پڑے۔ اور دوسری بات: یہ بہت سادہ اور بورنگ ہے۔

ترتیب میں

ہمیشہ کی طرح، آئیے بائیں سے دائیں، اوپر سے نیچے جائیں اور ہر وہ چیز بیان کریں جس کی ہمیں اپنے "سادہ" خیال کو نافذ کرنے کی ضرورت ہے۔

سب سے پہلے آپ کو ایک پراکسی کی ضرورت ہے۔

اور ایک ہی وقت میں بہت سے متبادل ہیں:

  • آپ صرف جا کر کھلی پراکسی فہرستوں سے لے سکتے ہیں۔ سستا (یا اس کے بجائے کچھ بھی نہیں)، لیکن بالکل ناقابل بھروسہ ہے اور اس طرح کے پراکسیوں کی زندگی صفر ہوتی ہے۔ اس لیے، پراکسی لسٹوں کے لیے پارسر تلاش کرنا/لکھنا، انہیں مطلوبہ قسم اور ملک کے لحاظ سے فلٹر کرنا، اور Spotify میں پائے جانے والے پراکسی کو تبدیل کرنے کا سوال کھلا رہتا ہے (اچھی طرح سے، شاید اس کے ذریعے HTTP_PROXY منتقل کریں اور بائنری کے لیے ایک کسٹم ریپر بنائیں تاکہ باقی تمام ٹریفک وہاں نہ بھیجی جائے)۔
  • آپ اسی طرح کی پراکسی خرید سکتے ہیں اور اوپر بیان کردہ بیشتر مسائل سے خود کو بچا سکتے ہیں۔ لیکن پراکسی کی قیمت پر، آپ فوری طور پر Spotify پر پریمیم خرید سکتے ہیں، اور یہ اصل کام کے لیے عملی نہیں ہے۔
  • اپنا اٹھاؤ۔ جیسا کہ آپ نے شاید اندازہ لگایا ہے، یہ ہمارا انتخاب ہے۔

خالصتاً اتفاق سے یہ معلوم ہو سکتا ہے کہ آپ کا کوئی دوست جمہوریہ بیلاروس یا کسی اور چھوٹے ملک میں سرور والا ہے۔ آپ کو اسے استعمال کرنے اور اس پر مطلوبہ پراکسی رول آؤٹ کرنے کی ضرورت ہے۔ خصوصی ماہر راؤٹر آن والے دوست سے مطمئن ہو سکتے ہیں۔ ڈی ڈی ڈبلیو آر ٹی یا اسی طرح کے سافٹ ویئر۔ لیکن وہاں ان کی حیرت انگیز دنیا اور یہ دنیا واضح طور پر اس کہانی کے فریم ورک میں فٹ نہیں ہے۔

لہذا، ہمارے اختیارات: سکویڈ - متاثر کن نہیں، اور میں HTTP پراکسی نہیں چاہتا، اس پروٹوکول کے ارد گرد پہلے ہی بہت زیادہ ہیں۔ اور SOCKS کے علاقے میں سوائے سمجھدار کچھ نہیں ہے۔ ڈینٹ ابھی تک پہنچایا نہیں ہے. لہذا، چلو اسے لے لو.

انسٹال اور کنفیگر کرنے پر ڈینٹ کے دستی کا انتظار نہ کریں۔ وہ صرف گوگلنگ اور کوئی خاص دلچسپی نہیں ہے۔ کم از کم کنفیگریشن میں آپ کو ہر طرح کے کام کرنے کی ضرورت ہے۔ client pass, socks pass، انٹرفیس کو صحیح طریقے سے رجسٹر کریں اور شامل کرنا نہ بھولیں۔ socksmethod: username. اس فارم میں، تصدیق کے لیے، سسٹم کے صارفین سے لاگو پاس لیا جائے گا۔ اور سیکورٹی کے بارے میں حصہ: لوکل ہوسٹ تک رسائی پر پابندی، صارفین کو محدود کرنا، وغیرہ۔

نیٹ ورک کا سامنا کرنے والی ایک پراکسی تعینات کریں۔

ڈرامہ دو ایکٹ میں ہے۔

ایک پر عمل کریں۔

ہم نے پراکسی کو ترتیب دیا ہے، اب ہمیں عالمی ویب سے اس تک رسائی حاصل کرنے کی ضرورت ہے۔ اگر آپ کے پاس مطلوبہ ملک میں سفید IP والی مشین ہے، تو آپ اس مقام کو محفوظ طریقے سے چھوڑ سکتے ہیں۔ ہمارے پاس ایک نہیں ہے (جیسا کہ اوپر بتایا گیا ہے، ہم دوستوں کے گھروں میں میزبان ہیں) اور قریب ترین سفید IP جرمنی میں کہیں ہے، لہذا ہم نیٹ ورکس کا مطالعہ کریں گے۔

تو ہاں، دھیان سے پڑھنے والا دوبارہ پوچھے گا: آپ موجودہ سروس کیوں نہیں لیتے جیسے ngrok یا اسی طرح؟ اور وہ پھر ٹھیک ہو جائے گا۔ لیکن یہ ایک خدمت ہے، اسے پھر سے شیطانیت کی ضرورت ہے، اس پر پیسے بھی لگ سکتے ہیں اور عام طور پر یہ کھیل نہیں ہے۔ لہذا، ہم سکریپ مواد سے سائیکلیں بنائیں گے.

ٹاسک: NAT کے پیچھے کہیں ایک پراکسی ہے، آپ کو اسے VPS کی بندرگاہوں میں سے کسی ایک پر لٹکانے کی ضرورت ہے جس کا IP سفید ہے اور جو دنیا کے کنارے پر واقع ہے۔

یہ سمجھنا منطقی ہے کہ اسے یا تو پورٹ فارورڈنگ کے ذریعے حل کیا جا سکتا ہے (جس کا نفاذ مذکورہ بالا کے ذریعے کیا جاتا ہے ssh)، یا VPN کے ذریعے ہارڈ ویئر کو ورچوئل نیٹ ورک میں جوڑ کر۔ کے ساتھ ssh ہم کام کرنا جانتے ہیں، autossh یہ لینا بورنگ ہے، تو آئیے OpenVPN لیں۔

DigitalOcean کے پاس ہے۔ شاندار مینول اس معاملے میں. میرے پاس اس میں شامل کرنے کے لیے کچھ نہیں ہے۔ اور نتیجے میں آنے والی تشکیل کو اوپن وی پی این کلائنٹ کے ساتھ آسانی سے منسلک کیا جاسکتا ہے اور systemd. بس اسے (config) ڈالیں۔ /etc/openvpn/client/ اور ایکسٹینشن کو میں تبدیل کرنا نہ بھولیں۔ .conf. اس کے بعد، خدمت کو کھینچیں۔ [email protected]اس کے لیے کرنا مت بھولنا enable اور خوش ہوں کہ سب کچھ اڑ گیا۔

بلاشبہ، ہمیں نئے بنائے گئے VPN پر ٹریفک کی کسی بھی ری ڈائریکشن کو غیر فعال کرنے کی ضرورت ہے، کیونکہ ہم ٹریفک کو آدھی گیند سے گزار کر کلائنٹ مشین پر رفتار کو کم نہیں کرنا چاہتے۔

اور ہاں، ہمیں اپنے کلائنٹ کے لیے VPN سرور پر ایک جامد IP ایڈریس رجسٹر کرنے کی ضرورت ہے۔ اس کی ضرورت تھوڑی دیر بعد کہانی میں آئے گی۔ ایسا کرنے کے لیے آپ کو فعال کرنے کی ضرورت ہے۔ ifconfig-pool-persist، ترمیم ipp.txt، OpenVPN کے ساتھ شامل کریں اور client-config-dir کو فعال کریں، نیز شامل کرکے مطلوبہ کلائنٹ کی تشکیل میں ترمیم کریں۔ ifconfig-push صحیح ماسک اور مطلوبہ IP ایڈریس کے ساتھ۔

ایکٹ دو

اب ہمارے پاس "نیٹ ورک" پر ایک مشین ہے جو انٹرنیٹ کا سامنا کرتی ہے اور اسے خود غرض مقاصد کے لیے استعمال کیا جا سکتا ہے۔ یعنی ٹریفک کا کچھ حصہ اس کے ذریعے ری ڈائریکٹ کریں۔

لہذا، ایک نیا کام: آپ کو ایک سفید IP کے ساتھ VPS بندرگاہوں میں سے کسی ایک پر آنے والی ٹریفک کو بند کرنے کی ضرورت ہے تاکہ یہ ٹریفک نئے منسلک ورچوئل نیٹ ورک پر جائے اور وہاں سے جواب واپس آ سکے۔

حل: بالکل iptables! آپ کو اس کے ساتھ مشق کرنے کا اتنا شاندار موقع اور کب ملے گا؟

مطلوبہ کنفیگریشن تین گھنٹوں میں بہت جلد مل سکتی ہے، سو قسم کے الفاظ اور مٹھی بھر ضائع شدہ اعصاب، کیونکہ نیٹ ورکس کو ڈیبگ کرنا ایک بہت ہی مخصوص طریقہ کار ہے۔

سب سے پہلے، آپ کو دانا میں ٹریفک ری ڈائریکشن کو فعال کرنے کی ضرورت ہے۔ اس چیز کو کہتے ہیں۔ ipv4.ip_forward اور OS اور نیٹ ورک مینیجر کے لحاظ سے قدرے مختلف طریقے سے فعال کیا گیا ہے۔

دوم، آپ کو VPS پر ایک پورٹ منتخب کرنے اور اس پر جانے والی تمام ٹریفک کو ورچوئل سب نیٹ میں سمیٹنے کی ضرورت ہے۔ یہ کیا جا سکتا ہے، مثال کے طور پر، اس طرح:

iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 8080 -j DNAT --to-destination 10.8.0.2:8080

یہاں ہم بیرونی انٹرفیس کے پورٹ 8080 پر آنے والی تمام TCP ٹریفک کو IP 10.8.0.2 اور اسی پورٹ 8080 والی مشین پر بھیج دیتے ہیں۔

ان لوگوں کے لیے جو کام کی گندی تفصیلات چاہتے ہیں۔ netfilter, iptables اور عام طور پر روٹنگ، اس پر غور کرنا بالکل ضروری ہے۔ اس یا اس.

لہذا، اب ہمارے پیکٹ ورچوئل سب نیٹ پر اڑتے ہیں اور... وہ وہیں رہتے ہیں۔ مزید واضح طور پر، جرابوں پراکسی سے جواب ڈینٹ کے ساتھ مشین پر پہلے سے طے شدہ گیٹ وے کے ذریعے واپس اڑتا ہے اور وصول کنندہ اسے چھوڑ دیتا ہے، کیونکہ نیٹ ورکس میں یہ رواج نہیں ہے کہ ایک آئی پی کو درخواست بھیجیں اور دوسرے سے جواب وصول کریں۔ لہذا، ہمیں جادو جاری رکھنے کی ضرورت ہے.

لہذا، اب آپ کو پراکسی سے تمام پیکٹوں کو ایک سفید IP کے ساتھ VPS کی طرف ورچوئل سب نیٹ پر واپس بھیجنے کی ضرورت ہے۔ یہاں صورتحال قدرے خراب ہے، کیونکہ یہ صرف ہے۔ iptables ہمارے پاس کافی نہیں ہوگا، کیونکہ اگر ہم روٹ کرنے سے پہلے منزل کا پتہ درست کر لیتے ہیں (PREROUTING)، پھر ہمارا پیکج انٹرنیٹ پر نہیں جائے گا، اور اگر ہم اسے ٹھیک نہیں کرتے ہیں، تو پیکج انٹرنیٹ پر جائے گا۔ default gateway. لہذا، آپ کو مندرجہ ذیل کام کرنے کی ضرورت ہے: سلسلہ کو یاد رکھیں mangleکے ذریعے پیکٹ کو نشان زد کرنے کے لیے iptables اور انہیں ایک حسب ضرورت روٹنگ ٹیبل میں لپیٹیں جو انہیں بھیجے گا جہاں انہیں جانا ہے۔

مکمل ہونے سے جلد ہی کہا:

iptables -t mangle -A OUTPUT -p tcp --sport 8080 -j MARK --set-mark 0x80
ip rule add fwmark 0x80 table 80
ip route add default via 10.8.0.1 dev tun0 table 80

ہم باہر جانے والی ٹریفک کو لیتے ہیں، ہر اس چیز کو نشان زد کرتے ہیں جو پورٹ سے اڑتی ہے جس پر پراکسی بیٹھتی ہے (ہمارے معاملے میں 8080)، تمام نشان زد ٹریفک کو نمبر 80 کے ساتھ روٹنگ ٹیبل پر ری ڈائریکٹ کرتے ہیں (عام طور پر، نمبر کسی چیز پر منحصر نہیں ہوتا ہے، ہم صرف چاہتے تھے میں) اور ایک اصول شامل کریں، جس کے مطابق اس ٹیبل میں شامل تمام پیکٹ VPN سب نیٹ پر اڑتے ہیں۔

زبردست! اب پیکٹ واپس VPS کی طرف اڑتے ہیں... اور وہیں مر جاتے ہیں۔ کیونکہ VPS نہیں جانتا کہ ان کے ساتھ کیا کرنا ہے۔ لہذا، اگر آپ پریشان نہیں ہوتے ہیں، تو آپ آسانی سے ورچوئل سب نیٹ سے آنے والی تمام ٹریفک کو انٹرنیٹ پر واپس بھیج سکتے ہیں:

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j SNAT --to-source 172.42.1.10

یہاں، 10.8.0.0 کے ماسک کے ساتھ 255.255.255.000 سب نیٹ سے آنے والی ہر چیز کو سورس-NAT میں لپیٹا جاتا ہے اور پہلے سے طے شدہ انٹرفیس کی طرف اڑ جاتا ہے، جو انٹرنیٹ کی طرف موڑ دیا جاتا ہے۔ یہ نوٹ کرنا ضروری ہے کہ یہ چیز صرف اس صورت میں کام کرے گی جب ہم پورٹ کو شفاف طریقے سے آگے بڑھاتے ہیں، یعنی VPS پر آنے والی پورٹ ہماری پراکسی کی بندرگاہ سے ملتی ہے۔ ورنہ آپ کو کچھ زیادہ ہی نقصان اٹھانا پڑے گا۔

کہیں اب سب کام شروع کر دینا چاہیے۔ اور صرف تھوڑا سا باقی ہے: اس بات کو یقینی بنانا نہ بھولیں کہ تمام تشکیلات iptables и route دوبارہ شروع کرنے کے بعد جاری نہیں رکھا. کے لیے iptables جیسے خصوصی فائلیں ہیں۔ /etc/iptables/rules.v4(اوبنٹو کے معاملے میں)، لیکن راستوں کے لیے سب کچھ کچھ زیادہ ہی پیچیدہ ہے۔ میں نے انہیں اندر دھکیل دیا۔ up/down اوپن وی پی این اسکرپٹس، حالانکہ مجھے لگتا ہے کہ ان کو زیادہ شائستہ طریقے سے کیا جا سکتا تھا۔

ایپلیکیشن سے ٹریفک کو پراکسی میں لپیٹیں۔

لہذا، ہمارے پاس مطلوبہ ملک میں تصدیق کے ساتھ ایک پراکسی ہے، جو ایک جامد سفید IP ایڈریس کے ذریعے قابل رسائی ہے۔ بس اسے استعمال کرنا اور Spotify سے ٹریفک کو وہاں سے ری ڈائریکٹ کرنا باقی ہے۔ لیکن ایک نزاکت ہے، جیسا کہ اوپر بتایا گیا ہے، Spotify میں پراکسی کے لیے لاگ ان پاس ورڈ کام نہیں کرتا، اس لیے ہم اس کے ارد گرد جانے کا طریقہ تلاش کریں گے۔

کے ساتھ شروع کرنے کے لئے، کے بارے میں یاد کرتے ہیں پراکسی. بہت اچھا سامان، لیکن اس کی قیمت ایک اسٹار شپ ($40) کے برابر ہے۔ اس رقم سے ہم دوبارہ پریمیم خرید سکتے ہیں اور اس کے ساتھ کیا جا سکتا ہے۔ لہذا، ہم میک پر مزید مفت اور کھلے ینالاگ تلاش کریں گے (ہاں، ہم میک پر موسیقی سننا چاہتے ہیں)۔ آئیے ایک مکمل ٹول دریافت کریں: proximac. اور ہم خوشی سے اس کو چھونے جائیں گے۔

لیکن یہ خوشی قلیل المدت ہوگی، کیونکہ یہ پتہ چلتا ہے کہ آپ کو میک او ایس میں ڈیبگ موڈ اور کسٹم کرنل ایکسٹینشنز کو فعال کرنے کی ضرورت ہے، ایک سادہ کنفیگریشن فائل کریں اور سمجھیں کہ اس ٹول میں بالکل وہی مسئلہ ہے جیسا کہ Spotify: یہ استعمال کرتے ہوئے تصدیق پاس نہیں کر سکتا۔ socks-proxy پر لاگ ان پاس ورڈ۔

یہاں کے آس پاس کہیں وقت آ گیا ہے کہ بیوقوف ہو جائیں اور پریمیم خریدیں... لیکن نہیں! آئیے اسے درست کرنے کے لیے پوچھنے کی کوشش کریں، یہ اوپن سورس ہے! چلو کرتے ہیں ٹکٹ. اور اس کے جواب میں ہمیں ایک دل دہلا دینے والی کہانی ملتی ہے کہ کس طرح صرف دیکھ بھال کرنے والے کے پاس میک بک نہیں ہے اور اس کے ساتھ جہنم ہے، کوئی فکس نہیں۔

ہم پھر پریشان ہو جائیں گے۔ لیکن پھر ہم اپنی جوانی اور سی کو یاد رکھیں گے، ڈینٹ میں ڈیبگ موڈ کو آن کریں گے، سیکڑوں کلو بائٹ لاگ کھودیں گے، پر جائیں آر ایف سی 1927 SOCKS5 پروٹوکول کے بارے میں معلومات کے لیے، آئیے Xcode کو دیکھیں اور مسئلہ تلاش کریں۔ طریقہ کار کے کوڈز کی فہرست میں ایک حرف کو درست کرنا کافی ہے جو کلائنٹ تصدیق کے لیے پیش کرتا ہے اور ہر چیز گھڑی کے کام کی طرح کام کرنا شروع کر دیتی ہے۔ ہم خوشی مناتے ہیں، ہم ریلیز بائنری جمع کرتے ہیں، ہم کرتے ہیں۔ کھینچنے کی درخواست اور ہم غروب آفتاب میں جاتے ہیں اور اگلے نقطہ پر جاتے ہیں۔

اسے خودکار بنائیں

ایک بار جب Proximac کام کرتا ہے، اسے شیطانی اور بھول جانے کی ضرورت ہے۔ ایک مکمل ابتدائی نظام ہے جو اس کے لیے موزوں ہے، جو کہ MacOS میں پایا جاتا ہے، یعنی شروع کیا.

ہم اسے جلدی ڈھونڈتے ہیں۔ دستی اور ہم سمجھتے ہیں کہ ایسا بالکل نہیں ہے۔ systemd اور یہاں یہ تقریبا ایک سکوپ ہے اور xml. آپ کے لیے کوئی فینسی کنفیگرز نہیں، کوئی کمانڈز نہیں جیسے status, restart, daemon-reload. صرف کٹر قسم start-stop, list-grep, unload-load اور بہت سی عجیب و غریب چیزیں۔ ان سب پر قابو پا کر ہم لکھتے ہیں۔ plist، لوڈ ہو رہا ہے۔ کام نہیں کرتا. ہم شیطان کو ڈیبگ کرنے کے طریقہ کار کا مطالعہ کرتے ہیں، اسے ڈیبگ کرتے ہیں، سمجھتے ہیں کہ وہاں کیا ہے۔ ENV بھی PATH ہم نے نارمل ڈیلیور نہیں کیا، ہم بحث کرتے ہیں، ہم اسے اندر لاتے ہیں (شامل کرنا /sbin и /usr/local/bin) اور آخر کار ہم آٹو اسٹارٹ اور مستحکم آپریشن سے خوش ہیں۔

سانس چھوڑنا

نتیجہ کیا نکلا؟ مہم جوئی کا ایک ہفتہ، خدمات سے ایک گھٹنے ٹیکنے والا چڑیا گھر جو دل کو عزیز ہے اور وہ کرتا ہے جو اس کی ضرورت ہے۔ مشکوک تکنیکی شعبوں میں تھوڑا سا علم، تھوڑا سا کھلا ذریعہ اور آپ کے چہرے پر مسکراہٹ اس سوچ سے کہ "میں نے یہ کیا!"

PS: یہ سرمایہ داروں کے بائیکاٹ، میچوں کو بچانے یا مکمل چالاکیوں کے لیے کال نہیں ہے، بلکہ تحقیق اور ترقی کے ان امکانات کی طرف اشارہ ہے جہاں عام طور پر آپ ان سے توقع نہیں رکھتے۔

ماخذ: www.habr.com

نیا تبصرہ شامل کریں