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

ایک انسٹالر، بہت سے عمل

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

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

لہٰذا علامت “تقسیم شدہ ٹنل ٹوٹا ہوا ہے” نہیں ہے۔ یہ “اصول ایسے عمل کو ڈھانپتا ہے جو میرے لیے اہم ٹریفک لے جانے والا عمل نہیں” ہے، جو بہت زیادہ تنگ اور بہت زیادہ قابلِ اصلاح بیان ہے۔ ایک بار ایسا کہہ دیں تو اگلا قدم اندازہ نہیں رہتا۔

وہ عمل تلاش کریں جس کے پاس میچ کا کنکشن ہے

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

Get-Process | Where-Object { $_.ProcessName -match 'launcher|game|client' } | Select-Object Id,ProcessName,Path
Get-NetTCPConnection -State Established | Select-Object OwningProcess,RemoteAddress,RemotePort | Sort-Object OwningProcess

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

Linux پر اسی سوال کے لیے ہر ساکٹ قسم کی ایک کمانڈ درکار ہے، اور دونوں جانچنا مناسب ہے، کیونکہ میچ کا کنکشن UDP ہو سکتا ہے جبکہ باقی سب TCP ہوں:

ss -tunp state established | grep -i game
ss -tunp | awk 'NR==1 || /udp/'

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

وہ شناخت کنندہ ملائیں جسے آپ کا کلائنٹ سپورٹ کرتا ہے

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

IdentifierHow it behavesFailure mode
Executable pathMatches exactly the file at that pathBreaks when an update moves the binary
Process nameMatches any binary with that nameToo broad; catches unrelated software
Package or bundle idMatches a signed application groupMay include services you did not intend

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

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

میچ پر جانچیں، ڈاؤن لوڈ پر نہیں

لانچر کی ڈاؤن لوڈ رفتار بدترین ممکنہ جانچ ہے، کیونکہ یہ بالکل اسی عمل کو مشق کراتی ہے جو پہلے ہی خارج کیا جا چکا تھا۔ جو ناکام ہو رہا تھا اسے استعمال کریں، اور گیم کے اپنے کارکردگی ڈسپلے کے بجائے راستہ چیک کریں:

ip route get 203.0.113.55
Get-NetTCPConnection -State Established | Where-Object RemotePort -eq 27015

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

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

اگلی اپڈیٹ کے بعد دوبارہ جانچیں

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

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

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

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