ایک مشین کے پاس پہلے سے منظور شدہ VPN رسائی ہے، دوسری مشین کو بالکل ایک نجی HTTPS سروس درکار ہے، اور مقامی SSH فارورڈنگ دوسری مشین کو ٹنل دیے بغیر یہ خلا پر کر سکتی ہے۔ فارورڈنگ پورے نیٹ ورک کے بجائے ایک TCP منزل لے کر جاتی ہے، اور یہی حد اصل بات ہے۔ نیچے دیے گئے پانچ مراحل ترتیب سے مکمل کریں، کیونکہ ہر ایک مختلف وجہ سے ناکام ہوتا ہے اور بعد کا مرحل پہلے کے خلا کو نہیں بچا سکتا۔ اگر کوئی پیشگی شرط نہ ہو تو یہ ڈیزائن اسے حل نہیں کرتا اور کمانڈ کی کوئی بھی ٹیوننگ مدد نہیں کرے گی۔

پہلا مرحلہ: تین پیشگی شرطیں تصدیق کریں

کسی بھی کمانڈ کا مطلب ہونے سے پہلے تین چیزیں پہلے سے درست ہونی چاہئیں۔ پہلی مشین کو فارورڈنگ ہوسٹ کے طور پر استعمال کرنے کی اجازت، اس تک کام کرنے والی SSH رسائی، اور ایسی سرور پالیسی جو مطلوبہ منزل کی اجازت دے۔ فائل منتقلی کے لیے بنائے گئے SSH اکاؤنٹ میں فارورڈنگ بند ہو سکتی ہے، اور فارورڈنگ کی اجازت دینے والا سرور بھی محدود کر سکتا ہے کہ اس کے ذریعے کون سی منزلیں دستیاب ہیں۔ جانچ سے پہلے پوچھیں، کیونکہ کسی ساتھی کے ورک اسٹیشن کو معاہدے کے بغیر جمپ پوائنٹ کے طور پر استعمال کرنا پالیسی کا مسئلہ ہے، چاہے کمانڈ بالکل ٹھیک چلے۔

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

ssh -o BatchMode=yes [email protected] 'echo ok'
sudo sshd -T | grep -E 'allowtcpforwarding|permitopen'

دوسرا مرحلہ: loopback پورٹ بائنڈ کریں اور سیشن زندہ رکھیں

کلائنٹ ایپلیکیشن چلانے والی مشین پر نجی سروس کی طرف مقامی فارورڈنگ کھولیں۔ اسے واضح طور پر loopback سے بائنڈ کریں تاکہ یہ مقامی نیٹ ورک پر شائع نہ ہو، اور ایسا بلند پورٹ چنیں جو کوئی مقامی سروس پہلے سے نہ روک رہی ہو۔ کام کرتے وقت سیشن جاری رکھیں، کیونکہ اسے بند کرنے سے سننے والا بھی بند ہو جاتا ہے۔ ExitOnForwardFailure مسترد شدہ بائنڈنگ یا قابض پورٹ کو فارورڈنگ کے بغیر رہنے والے سیشن کے بجائے فوری اخراج میں بدل دیتا ہے، اور یہی ناکامی کا طریقہ سب سے زیادہ وقت ضائع کرتا ہے۔

نجی رابطہ جمپ ہوسٹ سے قائم ہوتا ہے، اس لیے اس ہوسٹ کا DNS، راستے، VPN پالیسی اور سروس تک رسائی سب کو کام کرنا چاہیے۔ SSH سیشن وہ رسائی پیدا نہیں کرتا جو جمپ ہوسٹ کے پاس نہیں، اور وہ راستہ درست نہیں کر سکتا جو VPN نے کبھی نہیں دھکیلا۔ کمانڈ کی خاموشی پر بھروسا کرنے کے بجائے سننے والے کی تصدیق وہاں کریں جہاں وہ واقعی ہے۔

ssh -N -o ExitOnForwardFailure=yes -L 127.0.0.1:9443:portal.lab.example:443 [email protected]
ss -ltn '( sport = :9443 )'

تیسرا مرحلہ: ساکٹ مقامی ہونے پر HTTPS نام رکھیں

https://127.0.0.1:9443/ پر براؤز کرنا TLS سرور نام اور ایپلیکیشن اختیار بدل دیتا ہے۔ portal.lab.example کے لیے جاری کردہ سرٹیفکیٹ loopback پتے کے خلاف تصدیق نہیں ہوگا، اور نتیجے میں آنے والی غلطی فارورڈنگ شارٹ کٹ کے بجائے ٹوٹے سرٹیفکیٹ جیسی دکھتی ہے۔ کمانڈ لائن جانچ کے لیے اصل URL رکھیں اور صرف ساکٹ منزل بدلیں۔ --connect-to یہی کرتا ہے، اور curl دستی نیچے استعمال شدہ چار خانہ شکل کی دستاویز کرتا ہے۔

curl --noproxy portal.lab.example --connect-to portal.lab.example:443:127.0.0.1:9443 https://portal.lab.example/

نام URL میں، TLS مصافحہ میں اور Host ہیڈر میں رہتا ہے، جبکہ TCP رابطہ مقامی سننے والے کی طرف جاتا ہے۔ پراکسی کے بغیر آپشن جانچ کو اسی فارورڈنگ پر رکھتا ہے، ترتیب شدہ HTTP پراکسی کو اسے روکنے دینے کے بجائے، اور سرٹیفکیٹ تصدیق کو آن رکھنا ہی نتیجے کو بامعنی بناتا ہے۔

چوتھا مرحلہ: جانیں کہ ایک فارورڈنگ کیا ڈھانپ نہیں سکتی

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

UDP، SMB دریافت اور ڈومین سائن ان TCP فارورڈنگ سے بالکل نہیں گزرتے۔ اگر اصل ضرورت عمومی نیٹ ورک رسائی ہے تو یہ ڈیزائن غلط اوزار ہے اور معاون ریموٹ رسائی گیٹ وے درست ہے۔

پانچواں مرحلہ: صفائی کریں اور درج کریں

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

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

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