الٹا ٹیدرنگ فون کے ٹریفک کو کمپیوٹر پر منتقل کرتا ہے اور اسی کمپیوٹر کے کنکشن سے باہر بھیجتا ہے۔ صرف USB کیبل یہ نہیں کرتی: فون کو ایسی کیپچر سروس چاہیے جو اس کی روٹنگ سنبھالے، اور کمپیوٹر کو ایسا ریلے چاہیے جو وہ پیکٹ آگے لے جائے۔ راستے میں چار چھلانگیں ہیں: ایپلیکیشن، فون پر کیپچر، USB ریلے اور میزبان کا اخراج، اور ہر ایک کا مالک مختلف ہے۔ یہ رہنما کتاب وہ راستہ بناتی ہے، میزبان VPN کو اس کی درست جگہ رکھتی ہے اور نتیجے پر بھروسا کرنے سے پہلے ہر چھلانگ کی جانچ کرتی ہے۔

کچھ چلانے سے پہلے چھلانگوں کا نقشہ بنائیں

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

HopOwnerWhat it decides
Application requestThe appDestination, resolver, address family
Capture servicePhone VpnService appWhich traffic enters the relay at all
ADB relayHost processForwarding phone flows to host sockets
Host egressHost routing and VPNExit address and host policy

ایک وقت میں صرف ایک VPN سروس کلائنٹ فون کی کیپچر ذمہ داری رکھ سکتا ہے، اس لیے دوسری عام VPN ایپ ریلے پر تہ نہیں چڑھاتی۔ اگر VPN کمپیوٹر کا ہے، تو کیپچر سروس اسی کمپیوٹر کی طرف رسائی کا حلقہ ہے، یہ ثبوت نہیں کہ کوئی دور سرنگ پہلے ہی نتیجے کی حفاظت کر رہی ہے۔

فون کو چھونے سے پہلے ریلے تیار کریں

Gnirehtet اس ساخت کی دستاویزی مثال ہے: فون پر root کے بغیر VPN سروس کلائنٹ اور میزبان پر ADB کے ذریعے لے جایا جانے والا ریلے، جو IPv4 پر TCP اور UDP کی حمایت کرتا ہے۔ اس کا مخزن یہ بھی بتاتا ہے کہ منصوبہ اب فعال طور پر برقرار نہیں رکھا جاتا، اس لیے اسے حوالہ ڈیزائن اور تجربہ گاہ کے لیے کام کرنے والا اوزار سمجھیں، زیر انتظام بیڑے پر معیار بنانے کے قابل معاون مصنوع کے طور پر نہیں۔

adb devices
adb shell getprop ro.build.version.release
gnirehtet run

پہلے adb devices چلائیں۔ جس فون نے میزبان کی ڈیبگ کلید قبول نہیں کی وہ غیر مجاز بتایا جاتا ہے، اور ڈیوائس پر درخواست قبول ہونے تک ریلے جڑے گا نہیں۔ gnirehtet run کلائنٹ انسٹال کرتا ہے، ریلے شروع کرتا ہے اور کیپچر فعال کرتا ہے؛ جس ورژن میں مرحلے الگ ہیں وہاں اس کے بجائے دستاویزی install، relay اور start ذیلی کمانڈز استعمال کریں۔

ADB رسائی ڈیوائس کنٹرول کا تعلق ہے، نیٹ ورک سیٹنگ نہیں۔ صرف اسی کمپیوٹر کو اجازت دیں جسے آپ کنٹرول کرتے ہیں، اور کام ختم ہونے پر وہ اجازت واپس لینے کا منصوبہ بنائیں۔

میزبان VPN کو دوبارہ راستے میں لائیں

ریلے میزبان پر ایک عام عمل ہے، اس لیے اس کے آگے کے کنکشن میزبان کی روٹنگ جدول کی پیروی کرتے ہیں۔ مکمل سرنگ پروفائل انہیں لے جاتا ہے؛ منقسم سرنگ شاید نہ لے جائے۔ اگر میزبان VPN فی ایپ کنٹرول استعمال کرتا ہے تو ریلے بائنری کو اجازت یافتہ مجموعے میں شامل کریں، ورنہ براؤزر محفوظ دکھنے کے باوجود ریلے جسمانی انٹرفیس ہی استعمال کرتا رہے گا۔

ip route get 1.1.1.1
curl -4 https://ifconfig.me
sudo ss -tnp | grep -i relay

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

ریلے سے گزرنے والے ٹریفک کے لیے DNS میزبان پر حل ہوتا ہے، اس لیے کون سا سرور نام دیکھتا ہے یہ میزبان کا حل کنندہ طے کرتا ہے۔ فون پر نجی DNS سیٹنگ ریلے سے نہیں گزرتی، اور فون کی طرف کی حل کنندہ جانچ میزبان کی تلاشوں کی وضاحت نہیں کرے گی۔

ہر چھلانگ الگ الگ جانچیں

اس ترتیب میں تین جانچیں: فون ریلے تک پہنچتا ہے، ریلے میزبان کی پالیسی کے تحت منزل تک پہنچتا ہے، اور ایپ منزل کو درست طور پر حل کر کے استعمال کرتی ہے۔ صفحات دوبارہ لوڈ کر کے اندازہ لگانے کے بجائے پہلی ناکامی پر رکیں۔

adb shell dumpsys connectivity | grep -i -A3 vpn
adb logcat -s GnirehtetRelay:V Gnirehtet:V

کنیکٹیویٹی ڈمپ میں VPN نیٹ ورک اندراج دکھاتا ہے کہ کیپچر سروس فعال ہے؛ ریلے کا اپنا لاگ دکھاتا ہے کہ بہاؤ آ رہے ہیں یا نہیں۔ ان میں سے کسی ایک میں عدم موجودگی مسئلے کو صاف بانٹ دیتی ہے: کیپچر نہیں تو فون کی طرف، بہاؤ نہیں تو میزبان کی طرف۔

میزبان پر چلنے والا براؤزر میزبان براؤزر کا راستہ ثابت کرتا ہے، ریلے کے عمل کا نہیں۔ دونوں جو پتے بتاتے ہیں ان کا موازنہ کریں، اور نجی وسیلے کے ساتھ ساتھ عوامی صفحہ بھی جانچیں، کیونکہ صرف نجی سرنگ ایک کو روٹ کر سکتی ہے دوسرے کو نہیں۔

توڑ کر ناکامی کا رویہ چنیں

واپسی رہنما کتاب کا حصہ ہے۔ ریلے روک کر ہٹائیں، کیپچر کلائنٹ ان انسٹال کریں، اور کام مکمل ہونے پر فون کے ڈویلپر اختیارات سے میزبان کی ڈیبگ اجازت واپس لیں۔

gnirehtet stop
gnirehtet uninstall
adb kill-server

طے کریں کہ ریلے کے غائب ہونے پر فون کیا کرے۔ واضح انتخاب کے بغیر یہ موبائل ڈیٹا پر واپس جا کر وہ ٹریفک لیک کر سکتا ہے جسے آپ روٹ کرنا چاہتے تھے، اس لیے کنکشن بلاک کرنے کا رویہ یا VPN پالیسی جان بوجھ کر مقرر کریں اور اس پر بھروسا کرنے سے پہلے توڑنے کی جانچ کریں۔

جس میزبان کو اجازت دی گئی، ریلے کا ورژن، میزبان کی سرنگ پالیسی اور توڑنے کے مراحل لکھیں۔ وہی ریکارڈ اگلی الٹی ٹیدرنگ ترتیب کو دوبارہ دریافت کرنے والی دوسری سہ پہر کے بجائے دہرانے کے قابل بناتا ہے۔

متعلقہ مضامین