VPN کلائنٹ کے لیے NGINX کون سا ماخذ پتہ لاگ کرے گا؟
ایک ہی ہوسٹ پر OpenVPN کے ساتھ NGINX کیا دیکھتا ہے، طے کریں: اندرونی سرنگ کا پتہ، عوامی اخراجی پتہ یا آگے بھیجا گیا پیر، طے شدہ راستے کے مطابق۔
ایک ہی ہوسٹ پر NGINX اور OpenVPN کی تشکیل میں کلائنٹ کے تین پتے نظر آتے ہیں، ہر اس راستے کے لیے ایک جو درخواست لے سکتی ہے۔ سرنگ کے پتے تک پہنچنے والا براؤزر، عوامی پتے تک پہنچنے والا براؤزر اور گیٹ وے کے انٹرنیٹ راستے سے باہر جانے والا پروگرام، سب سننے والے ساکٹ پر مختلف نظر آتے ہیں۔ لاگ لائن کی تشریح کرنے سے پہلے طے کریں کہ آپ کون سا راستہ دیکھ رہے ہیں۔ فیصلہ اس منزل پر منحصر ہے جو کلائنٹ نے استعمال کی، بیرونی VPN آخری نقطے کے لیے اس کی استثنا پر، اور اس پر کہ راستے میں کوئی پیکٹ کا ترجمہ کرتا ہے یا نہیں۔
صارف کون ہے اس سے نہیں، منزل سے فیصلہ کریں
جس پتے پر درخواست بھیجی گئی تھی وہیں سے شروع کریں، کیونکہ وہی پتہ راستہ چنتا ہے۔ ہوسٹ کی سرنگ کے پتے کی طرف درخواست سرنگ انٹرفیس پر کلائنٹ کے اندرونی پتے کو ماخذ بنا کر آتی ہے۔ ہوسٹ کے عوامی پتے کی طرف درخواست عام طور پر انٹرنیٹ کی طرف والے انٹرفیس پر کلائنٹ کے عوامی پتے کے ساتھ آتی ہے، یہاں تک کہ جب اسی لیپ ٹاپ پر اس لمحے سرنگ قائم ہو۔ اس لیے VPN پول میں رکنیت پیکٹ کے راستے کی خصوصیت ہے، صارف کے پیچھے چلنے والی خصوصیت نہیں۔
| Path the request took | Source the site normally records |
|---|---|
| Client reaches the site at its tunnel address, 10.24.0.1 | Client inner address, 10.24.0.20 |
| Client reaches another internet site through the gateway | Gateway public egress address, 192.0.2.44 |
| Client reaches the gateway's public address through the endpoint exception | Client'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 جوابات کا موازنہ کریں۔