ডিস্ট্রোর ভিতর থেকে অভ্যন্তরীণ সার্ভারে 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 লাইনগুলি ক্যারেজ রিটার্ন দিয়ে শেষ করে, আর স্ট্রিপ না করলে শেষ ফিল্ডে একটি লুকানো অক্ষর থাকে যা রুট কমান্ডকে বিভ্রান্তিকর পার্স ত্রুটিতে ব্যর্থ করে।

ডিস্ট্রোর ভিতরে ঠিকানা ও রুট প্রয়োগ করুন

টানেলের ঠিকানাটি ডিস্ট্রোর ইন্টারফেসে প্রিফিক্সযুক্ত ঠিকানা হিসেবে ইনস্টল করুন, তারপর হোস্টের গেটওয়ে দিয়ে কর্পোরেট ব্লক রাউট করুন:

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 ক্লায়েন্টের নিজস্ব ফিল্টারিং পরীক্ষা করুন, কারণ আরেকটি রুট সম্পাদনা এমন প্যাকেট ঠিক করবে না যা ইতিমধ্যে হোস্টে পৌঁছাচ্ছে।

সম্পর্কিত নিবন্ধ