ڈسٹرو کے اندر سے اندرونی سرور کو ping وقت ختم ہونے پر رک جاتا ہے، جبکہ وہی پتہ Windows سے جواب دیتا ہے۔ VPN منسلک ہے اور Windows کا راستہ درست ہے، اس لیے خلا WSL کی حد ہے۔ ناکام کمانڈ سے ہوسٹ انٹرفیس تک راستہ چلیں۔ حل کنفگ فائل میں مقررہ CIDR نہیں ہے؛ یہ موجودہ پتہ پڑھ کر اس جگہ شامل کرنا ہے جہاں ڈسٹرو اسے استعمال کر سکے۔

تصدیق کریں کہ راستہ کہاں رکتا ہے

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

ڈسٹرو کے اندر، ip -4 addr WSL NAT رینج سے پتہ رکھنے والا مجازی اڈاپٹر دکھاتا ہے، اور ip route WSL گیٹ وے کی طرف اشارہ کرنے والا طے شدہ راستہ دکھاتا ہے۔ کارپوریٹ سابقہ کے لیے کوئی راستہ نہیں، کیونکہ ہوسٹ کے ٹنل اڈاپٹر کا ڈسٹرو کے اندر کوئی ہم منصب نہیں۔ طے شدہ گیٹ وے WSL NAT کی طرف جاتا ہے، کارپوریٹ نیٹ ورک کی طرف نہیں۔

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

آئینہ نیٹ ورکنگ یا اسکرپٹ راستہ منتخب کریں

آئینہ نیٹ ورکنگ ڈسٹرو کو ہوسٹ کے اپنے انٹرفیس دیتی ہے، اس لیے ٹنل اور اس کے راستے نقل کیے بغیر ظاہر ہوتے ہیں۔ یہ خصوصیت نئے Windows بلڈ اور .wslconfig میں networkingMode=mirrored پر منحصر ہے، اور اسے فعال کرنے سے غیر متعلق رویہ جیسے localhost فارورڈنگ بدل جاتا ہے۔ اسے راستے کی باریک ترتیب نہیں، پلیٹ فارم تبدیلی سمجھیں۔ اگر بلڈ اسے سپورٹ کرتا ہے اور ضمنی اثرات قابل قبول ہیں، تو یہ سب سے چھوٹا راستہ ہے۔

تنگ تر طریقہ طے شدہ NAT رکھتا ہے اور جب بھی ٹنل اوپر آئے، ٹنل کا پتہ اور راستہ ڈسٹرو میں نقل کرتا ہے۔ یہ زیادہ بلڈز پر کام کرتا ہے، localhost رویہ نہیں بدلتا، اور VPN بند ہونے پر واضح طور پر ناکام ہوتا ہے۔ قیمت ایک چھوٹی اسکرپٹ ہے جو ہر کنکشن پر چلانی پڑتی ہے۔

ایک منتخب کریں اور لکھ لیں۔ آئینہ کنفیگریشن کو دستی راستوں کے ساتھ ملانے سے ایک ہی سابقہ کے دو راستے رکھنے والا اور کسی کا واضح مالک نہ ہونے والا ڈسٹرو بنتا ہے۔ ایک دستاویزی طریقہ دو ادھوری کنفیگر شدہ طریقوں سے ڈیبگ کرنا آسان ہے۔

ہوسٹ سے موجودہ ٹنل تفصیلات حاصل کریں

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

powershell.exe 'Get-NetAdapter | Where-Object { $_.MacAddress -eq "3C-52-82-0A-1B-7C" } | Get-NetIPAddress -AddressFamily IPv4 | Select-Object IPAddress, PrefixLength'

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

powershell.exe '(Get-NetAdapter | Where-Object { $_.MacAddress -eq "3C-52-82-0A-1B-7C" }).InterfaceIndex'
powershell.exe '(Get-NetIPConfiguration -InterfaceIndex 27).IPv4DefaultGateway.NextHop'

آؤٹ پٹ کو متغیر میں دینے سے پہلے tr -d '\r' سے گزاریں۔ PowerShell سطروں کو carriage return سے ختم کرتا ہے، اور صاف نہ کرنے پر آخری فیلڈ میں چھپا ہوا حرف رہتا ہے جو راستے کی کمانڈ کو الجھنے والی پارس خرابی کے ساتھ ناکام کرتا ہے۔

ڈسٹرو کے اندر پتہ اور راستہ نافذ کریں

ٹنل کا پتہ ڈسٹرو کے انٹرفیس پر سابقہ والے پتے کے طور پر نصب کریں، پھر کارپوریٹ بلاک کو ہوسٹ کے گیٹ وے سے گزاریں:

sudo ip addr add 172.20.14.37/22 dev vpn
sudo ip route add 172.20.0.0/16 via 172.20.12.1 dev vpn

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

nmcli con show vpn
sudo nmcli con mod vpn ipv4.method auto
sudo nmcli con up vpn

دونوں مراحل VPN شروع کرنے والے ہک سے چلائیں، انٹرایکٹو شیل سے نہیں۔ پتہ پڑھنے، شامل کرنے، راستہ شامل کرنے اور اقدار لاگ کرنے والی اسکرپٹ بار بار دستی مرمت کو دہرانے کے قابل بناتی ہے، اور سابقہ بدلنے پر سب سے پہلے لاگ پڑھنا چاہیے۔

نام پن کریں اور راستہ ثابت کریں

نیٹ ورک سوئچ کے بعد کرنل ڈسٹرو کے انٹرفیس کا نام eth1 اور eth2 کے درمیان بدل سکتا ہے، اور نام پر لکھی اسکرپٹ پھر غلط ڈیوائس میں ترمیم کرتی ہے۔ MAC سے بندھا udev قاعدہ انٹرفیس کو مستحکم لیبل دیتا ہے:

SUBSYSTEM=="net", ACTION=="add", ATTRS{address}=="3c:52:82:0a:1b:7c", NAME="vpn"

پھر پتہ، راستہ اور حقیقی TCP کنکشن سے تصدیق کریں: ip -4 addr show dev vpn، ip route get 172.20.4.10 اور معلوم اندرونی پورٹ سے کنکشن۔ راستہ تلاش میں vpn ڈیوائس اور آپ کا شامل کردہ ماخذ پتہ ظاہر ہونا چاہیے۔

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

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