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

صارف کون ہے اس سے نہیں، منزل سے فیصلہ کریں

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

Path the request tookSource the site normally records
Client reaches the site at its tunnel address, 10.24.0.1Client inner address, 10.24.0.20
Client reaches another internet site through the gatewayGateway public egress address, 192.0.2.44
Client reaches the gateway's public address through the endpoint exceptionClient's own public access address

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

بیرونی آخری نقطہ دوسرا عوامی راستہ کیوں بناتا ہے

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

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

ساکٹ، جدول اور لاگ کی ساخت ایک ساتھ پڑھیں

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

ss -lntp 'sport = :443'
ip route get 10.24.0.20
ip route get 192.0.2.44

پھر قطار نہیں، ساخت پڑھیں۔ آگے بھیجے گئے ہیڈر سے بھرنے والا خانہ ساکٹ کا پیر نہیں بلکہ دعویٰ ریکارڈ کرتا ہے، اور دعویٰ تبھی اہم ہے جب فوری پیر قابلِ اعتماد پراکسی ہو۔ دونوں قدریں لاگ میں لکھنے سے بعد کے جھگڑے طے ہو جاتے ہیں، کیونکہ فوری پیر اور بدلا گیا پتہ الگ حقائق ہیں اور ان میں سے ایک ہی نیٹ ورک سے آیا ہے۔

log_format tunneled '$remote_addr $realip_remote_addr $request $status';
grep -n 'log_format' /etc/nginx/nginx.conf

اپنا مطلوبہ دخول نقطہ چنیں اور DNS کو متفق کریں

اگر سائٹ صرف سرنگ سے ہونی چاہیے تو اسے ایسا نام دیں جو VPN کلائنٹس کے لیے سرنگ کے پتے پر حل ہو اور سننے والے ساکٹ پر پالیسی نافذ کریں۔ اندرونی نام کے لیے 10.24.0.1 واپس کرنے والا منقسم DNS جواب نام حل کرنے کی تفصیل کے بھیس میں راستے کا فیصلہ ہے۔ اگر سائٹ عوامی بھی ہونی چاہیے تو دو نام یا دو پورٹ رکھیں اور لاگ کو بتانے دیں کہ کس نے درخواست کی خدمت کی۔

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

راستہ جانچیں، پھر پالیسی

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

tcpdump -ni tun0 port 443 -c 5
tcpdump -ni eth0 port 443 -c 5

پھر دونوں سمتوں میں رسائی جانچیں: مطلوبہ نام والا دخول نقطہ مطلوبہ کلائنٹ کے لیے کام کرتا ہے، اور غیر منظور شدہ عوامی راستہ صرف سست ہونے کی بجائے مسترد ہوتا ہے۔ ایک عام IP گونج سائٹ گیٹ وے کے انٹرنیٹ اخراج کے بارے میں کچھ ثابت کرتی ہے اور اسی ہوسٹ پر اس سائٹ کے بارے میں کچھ نہیں۔ جب صفحہ اور WebSocket متفق نہ ہوں تو سرور کی تشکیل چھونے سے پہلے ان کے URL، پتہ خاندان اور DNS جوابات کا موازنہ کریں۔

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