আপনি VPN-কে সম্পূর্ণ টানেলে বদলান, বেশিরভাগ ট্রাফিক মেনে চলে, তারপর একটি ঠিকানা সরাসরি উত্তর দেয় — একটি প্রিন্টার, NAS, 10.x-এ একটি জাম্প হোস্ট। স্পষ্ট ব্যাখ্যা হলো টানেলে লিক হচ্ছে, তাই আপনি ডিফল্ট রুটের মেট্রিক কমান, কিন্তু কিছুই বদলায় না। ওই ব্যর্থ চেষ্টাই সূত্র: ডিফল্ট রুট একটি ফলব্যাক, রায় নয়। রাউটিং লুকআপ মেট্রিক তুলনা করার আগেই সবচেয়ে দীর্ঘ মিলে যাওয়া প্রিফিক্স নেয়, তাই /24-এর সঙ্গে যে-ই সংখ্যা যুক্ত করুন না কেন, তা /0-এর বিরুদ্ধে জিতে থাকে। এই ক্রম স্পষ্ট হলে, লিক সাধারণত কেউ ইচ্ছাকৃতভাবে বসানো একটি রুট, বা এমন প্রিফিক্স যা ক্লায়েন্ট কখনো ঢাকতে চায়নি।

ডিফল্ট রুট আসলে কী প্রতিশ্রুতি দেয়

0.0.0.0/0 শূন্য বিট নির্দিষ্টতা নিয়ে প্রতিটি IPv4 গন্তব্যের সঙ্গে মেলে। এটি আছে যাতে হোস্ট তার টেবিল যা ভালোভাবে বর্ণনা করে না তা-ও পৌঁছাতে পারে। 192.168.1.0/24-এ একটি রুট 24টি মিলে যাওয়া বিট বহন করে, তাই 192.168.1.40-এর জন্য কেউ মেট্রিক, প্রশাসনিক দূরত্ব বা ক্লায়েন্ট যাকে অগ্রাধিকার ক্ষেত্র বলে তা তুলনা করার আগেই এটি জেতে। একই নিয়ম Linux FIB, Windows রাউটিং টেবিল এবং macOS-এর পিছনের BSD স্ট্যাকেও প্রযোজ্য।

সাধারণ LAN-এ এই আচরণ একটি বৈশিষ্ট্য। স্থানীয় সাবনেট সরাসরি সংযুক্ত, টানেল আপনার ব্রাউজিং বহন করার সময় প্রিন্টার কাজ করতে থাকে, এবং কিছুই ভুল কনফিগার করা নেই। জিজ্ঞাসা করার মতো প্রশ্ন হলো কেন ওই ঠিকানাটি সরাসরি যায় তা নয়, বরং কোন টেবিলে কোন প্রিফিক্স এর সঙ্গে মেলে এবং কে সেটি সেখানে রেখেছে।

হাফ-ডিফল্ট, বা ডিফল্ট এন্ট্রি কেন অক্ষত দেখায়

OpenVPN-এর redirect-gateway def1 সবচেয়ে পরিচ্ছন্ন উদাহরণ। আপনার ডিফল্ট মুছে প্রতিস্থাপন করার বদলে এটি 0.0.0.0/1 এবং 128.0.0.0/1 যোগ করে। একসঙ্গে জোড়াটি পুরো IPv4 ঢাকে, প্রতিটি প্রিফিক্স /0-এর চেয়ে দীর্ঘ, এবং দুটিই রাউটারের ডিফল্টকে জায়গায় রেখেই তাকে হারায়। এরপর রুট তালিকা চালান — মূল ডিফল্ট এখনও আছে, এখনও আপনার গেটওয়ের দিকে ইঙ্গিত করে; শুধু ইন্টারনেট গন্তব্যের জন্য এটি কখনো নির্বাচিত হয় না।

WireGuard-এর wg-quick পলিসি রাউটিংয়ের মাধ্যমে একই ফলাফলে পৌঁছায়। AllowedIPs 0.0.0.0/0 ঢাকলে এটি নিজের একটি টেবিল তৈরি করে, চিহ্নিত প্যাকেট সেখানে পাঠায় এবং এমন একটি রুল যোগ করে যা মূল টেবিলের শূন্যদৈর্ঘ্যের প্রিফিক্স উপেক্ষা করে। মূল টেবিল তার ডিফল্ট এন্ট্রি রাখে, আর রুলগুলো ঠিক করে যে ইন্টারফেসের মালিকানাধীন ট্রাফিকের জন্য আগে টানেল টেবিল দেখা হয়।

দুই নকশারই টানেলের বাইরে ঠিক একটি রুট দরকার: মূল গেটওয়ে দিয়ে VPN সার্ভারের নিজস্ব ঠিকানায় একটি হোস্ট রুট। এটি ছাড়া ক্লায়েন্ট টানেল তৈরি করা প্যাকেটগুলো টানেলের ভেতরে বহন করতে চাইত, এবং সংযোগ কখনো সম্পূর্ণ হতো না। তাই কঠোর ফুল-টানেল প্রোফাইলেও আপনার টেবিলে একটি নন-টানেল রুট স্বাভাবিক। প্রশ্ন করার যোগ্য রুট হলো যেগুলো আপনার সত্যিই গুরুত্বপূর্ণ গন্তব্যগুলো ঢাকে।

মেট্রিক টাই নির্ধারণ করে, প্রিফিক্স বিজয়ী নির্ধারণ করে

মেট্রিক শুধু সেই প্রার্থীদের মধ্যে তুলনা করা হয় যারা গন্তব্যের সঙ্গে সমানভাবে মেলে। Linux-এ, ip route get 10.20.5.9 বিজয়ীকে তার টেবিলসহ দেখায়, এবং ip route show table all প্রার্থীদের তালিকা দেয়, যেকোনো হাফ-ডিফল্ট ও কোনো রুল যে টেবিলের দিকে ইশারা করে তা সহ। Windows-এ, Find-NetRoute -RemoteIPAddress 10.20.5.9 নির্বাচিত রুট ও সোর্স ঠিকানা ফেরত দেয়, আর Get-NetRoute কাঁচা টেবিল দেখায় — কিন্তু কার্যকর খরচ হলো রুট মেট্রিক যোগ ইন্টারফেস মেট্রিক, তাই ধীর অ্যাডাপ্টার যে টাই জিতছে মনে হয় তা হারাতে পারে।

আপনি যা দেখবেন তার বেশিরভাগ তিনটি ক্ষেত্রে ধরা পড়ে:

  • একই গন্তব্য, /24 বনাম /0: প্রিফিক্স দৈর্ঘ্যে /24 জেতে, মেট্রিক যা-ই বলুক।
  • একই গন্তব্য, ভিন্ন মেট্রিকের দুই /24: কম কার্যকর মেট্রিক জেতে।
  • একই গন্তব্য, দুই টেবিল, একটি পলিসি রুলে নির্বাচিত: রুল আগে টেবিল বেছে নেয়, আর প্রিফিক্স তুলনা তার ভেতরে হয়।

তৃতীয় ক্ষেত্রেই এসব রিপোর্টের বেশিরভাগ শেষ হয়। Linux-এর একটি ip rule বা Windows VPN ট্রাফিক ফিল্টার ট্রাফিক এমন টেবিলে পাঠাতে পারে যেখানে কখনো টানেল ডিফল্ট ছিল না, অথচ মূল টেবিল সারাক্ষণ নিখুঁত দেখায়।

বাইপাসটির মালিক সাধারণত কে

টেবিল নয়, প্রোফাইল দিয়ে শুরু করুন। split-tunnel কনফিগারেশন ও অ্যাপ-ভিত্তিক VPN সেটিংস ইচ্ছাকৃতভাবে নামকরণ করা প্রিফিক্স টানেলের বাইরে রাখে; একটি কাজের প্রোফাইল যা একটি প্রাইভেট সাবনেট রক্ষা করে এবং সাধারণ ব্রাউজিং সরাসরি যেতে দেয়, তা যেমন ডিজাইন করা তেমনই আচরণ করে, আর তা অমান্য করা যে পলিসি প্রয়োগ করার জন্য এটি তৈরি সেই পলিসি ভাঙে। Microsoft-এর VPN রাউটিং নির্দেশিকা জোরপূর্বক টানেল করা ট্রাফিক ও স্পষ্ট ব্যতিক্রমের মধ্যে একই রেখা টানে, যা কিছু সম্পাদনার আগে এটিকে দরকারি ক্রস-চেক করে তোলে।

এরপর অবশিষ্ট খুঁজুন। এমন ইন্টারফেসের দিকে ইশারা করা রুট যা আর নেই, বা আগের নেটওয়ার্কের ঠিকানা, ডকিং স্টেশন, USB অ্যাডাপ্টার ও কনটেইনার ব্রিজ আসা-যাওয়ার পর দেখা যায়। একবার মুছে ফেলাই শেষ নয়: NetworkManager সংযোগ প্রোফাইল, netplan ফাইল ও Windows স্থায়ী রুট পরের সংযোগ বা বুটে এটি পুনরায় ইনস্টল করে, তাই কিছু সম্পাদনার আগে যে ফাইল বা প্রোফাইল এটির মালিক তা খুঁজে বের করুন।

তারপর IPv6 আলাদাভাবে পরীক্ষা করুন। ip -6 route ও Get-NetRoute -AddressFamily IPv6 আলাদা অবস্থা, আলাদা ডিফল্ট ও আলাদা ক্লায়েন্ট আচরণ ধরে রাখে। শুধু IPv4-এর অডিট দ্বৈত-স্ট্যাক হোস্ট সম্পর্কে কিছুই বলে না যা চুপচাপ নেটিভ IPv6 পথ পছন্দ করে, আর কেবল তা-ই একটি ক্লায়েন্টকে split-tunnel দেখাতে পারে।

অ্যাপ্লিকেশনের নিজের প্রবাহ দিয়ে নিশ্চিত করুন

অ্যাপ্লিকেশনটি আসলে যে গন্তব্য ব্যবহার করে তা লিখে রাখুন, তারপর সিস্টেমকে জিজ্ঞাসা করুন সেই অ্যাপ্লিকেশন যে সোর্স ঠিকানায় বাঁধে সেখান থেকে কোন পথ নেবে। ip route get 10.20.5.9 from 192.168.1.40 Linux-এ এর উত্তর দেয়; Find-NetRoute -RemoteIPAddress 10.20.5.9 প্লাস স্থানীয় ঠিকানা Windows-এ তা করে। ফলাফল প্রোফাইল যা দাবি করে তার সঙ্গে তুলনা করুন। ব্রাউজারের পাবলিক-IP পৃষ্ঠা একটি প্রোটোকলে একটি গন্তব্য পরীক্ষা করে, আর অভিযোগ শুরু করা প্রাইভেট ঠিকানা সম্পর্কে কিছুই বলে না।

পার্থক্য ব্যাখ্যা করে এমন সংকীর্ণতম বস্তুটি ঠিক করুন। ব্যতিক্রম অনুমোদিত হলে প্রিফিক্সটি লিখে রাখুন এবং ছেড়ে দিন; না হলে রুটটি সরান বা ডিফল্টের মেট্রিক কমানোর বদলে টানেল দিয়ে স্পষ্ট আরও সংকীর্ণ রুট যোগ করুন। মেট্রিক কমানো দীর্ঘতর প্রিফিক্সকে ছাড়িয়ে যেতে পারে না, আর দুই /1 রুট ইন্টারনেট পথের মালিক থাকা অবস্থায় ডিফল্ট সম্পাদনা করেও কিছু বদলায় না।

তারপর টানেল পুনরায় সংযুক্ত করুন এবং একই কোয়েরি পুনরাবৃত্তি করুন। ক্লায়েন্টরা প্রতিটি সংযোগে রুট পুনরায় ইনস্টল করে, তাই যে পরিবর্তন কেবল পরের হ্যান্ডশেক পর্যন্ত টেকে তা পরীক্ষিত নয়। পথ এখনও ভিন্ন হলে অবশিষ্ট সন্দেহভাজন হলো একটি পলিসি রুল, দ্বিতীয় টেবিল বা ক্লায়েন্ট-সাইড ফিল্টার — ডিফল্ট রুট নয়।

  • অ্যাপটি সত্যিই যে গন্তব্য ও সোর্স ঠিকানা ব্যবহার করে তা নাম দিন।
  • বিজয়ী রুট দেখান ip route get বা Find-NetRoute দিয়ে।
  • ইন্টারনেট পথের মালিক /1 জোড়া না পলিসি টেবিল, তা পরীক্ষা করুন।
  • /0-এর চেয়ে দীর্ঘ যে প্রতিটি প্রিফিক্স গন্তব্যের সঙ্গে মেলে তা তালিকা করুন।
  • IPv6 পরীক্ষা আলাদাভাবে পুনরাবৃত্তি করুন।
  • যে রুট টিকে আছে তা যে ফাইল, প্রোফাইল বা ফিল্টার এটি ইনস্টল করে সেখানে সনাক্ত করুন।
  • ঠিক হয়েছে বলার আগে পুনরায় সংযুক্ত হয়ে কোয়েরিটি আবার চালান।

সাতটিই প্রোফাইলের সঙ্গে মিললে টানেল ঠিক যা করার জন্য কনফিগার করা হয়েছিল তা করছে, আর সমাধান মেট্রিকে নয়, প্রোফাইলে।

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