পুনরাবৃত্তিমূলক রাউটিং: যখন টানেল নিজের প্যাকেট ধরে ফেলে
একটি টানেল নিজেকে তৈরি করে এমন প্যাকেট ধরে ফেলতে পারে। ডিফল্ট রুট বদলানোর আগে ও পরে সার্ভারের পথ তুলনা করুন, তারপর সেই পথের মালিক ঠিক করুন।
টানেল উঠে আসে, লগ একটি সম্পূর্ণ হ্যান্ডশেক দেখায়, আর এক সেকেন্ড পরেই সেই সেশনটি মরে গিয়ে লুপে আবার সংযোগ করে। এই ধরনের ঘটনার একটি নির্দিষ্ট কারণ আছে: সার্ভারের পথটি এখন টানেলের ভেতরের দিকে দেখায়, তাই টানেল বহনকারী প্যাকেটগুলো টানেলের ভেতর দিয়েই পাঠানো হয়। প্রমাণীকরণে কিছুই বদলায়নি, তাই ক্রেডেনশিয়াল আবার দিলে কোনো পার্থক্য হয় না। রুট বদলানোর আগে ও পরে বাইরের পথ তুলনা করুন, পুনরাবৃত্তিটি তখন দেখা যাবে।
প্রথমে বাইরের পথ দেখুন
খেলায় দুটি প্যাকেট আছে, একটি নয়। ভেতরের প্যাকেটটি অ্যাপ্লিকেশনের এবং তা এনক্রিপ্ট হওয়া উচিত, আর বাইরের প্যাকেটটি সার্ভারের ঠিকানায় যায় এবং টানেলের উপর নির্ভর করে না এমন পথে সেখানে পৌঁছাতে হবে।
ip route get 198.51.100.7
ip rule show
ip route show table all | grep -F 198.51.100.7
wg show wg0 endpoints
টানেল ওঠার পর কার্নেলকে সার্ভারের ঠিকানার পথ জিজ্ঞাসা করুন, আবার ডিফল্ট রুট বদলানোর পরেও। পরের হপ যদি টানেলের ডিভাইসে গিয়ে পড়ে, সেটাই পুনরাবৃত্তি, এবং কোনো প্যাকেট ক্যাপচার ছাড়াই তা দেখা যায়। ইন্টারফেস বাইন্ডিং, মার্ক বা নেটওয়ার্ক নেমস্পেস সাধারণ লুকআপকে অসম্পূর্ণ করতে পারে, তাই ক্লায়েন্ট নিজে যে প্রসঙ্গ ব্যবহার করে সেটিই ব্যবহার করুন। উত্তর ঠিক মনে হলেও সেশন যদি লুপেই থাকে, শুধু মূল টেবিল নয়, রাউটিং নীতির নিয়মগুলো পড়ুন।
সেশন কেন এক মুহূর্ত টিকে থাকে
নতুন রুট বসানোর আগেই হ্যান্ডশেক শেষ হয়ে যায়, তাই প্রথম কয়েক সেকেন্ড সুস্থ দেখায়। ক্লায়েন্ট ডিফল্ট রুট যোগ করার সঙ্গে সঙ্গে পরের বাইরের প্যাকেটটি সেটির পিছু নিয়ে সেই ইন্টারফেসে ঢোকে, যে ইন্টারফেস দিয়ে ওই বাইরের প্যাকেটকে যেতে হবে। সার্ভার কিছুই দেখে না, ক্লায়েন্ট আবার পাঠায়, আর সেই চেষ্টা হয় সময় শেষ হয়ে যায় নয়তো সেশন মেরে নতুন করে শুরু করে।
এই ক্রমটাই ব্যাখ্যা করে কেন একটি টানেল ল্যাপটপে কাজ করে অথচ রাউটারে ব্যর্থ হয়, এবং কেন ব্যর্থতা প্রায়ই সংযোগের সময়ে নয়, ট্রাফিক শুরু হলে দেখা দেয়। এটি লুপটিও ব্যাখ্যা করে: প্রতিটি পুনরারম্ভ সেই সেশন আবার প্রতিষ্ঠা করে, যাকে রুটটি ততক্ষণে অসম্ভব করে তুলেছে।
এন্ডপয়েন্ট ব্যতিক্রমের মালিক কে, খুঁজুন
সমর্থিত ক্লায়েন্টরা নিজেরাই তাদের ব্যতিক্রম ঠিক করে: মূল গেটওয়ে দিয়ে সার্ভারে একটি হোস্ট রুট, বা এমন একটি মার্ক যা বাইরের সকেটকে টানেলের বাইরে রাখে। প্রশ্ন হলো, অন্য কিছু তা মুছে বা অতিক্রম করেছে কি না।
রুট-ভিত্তিক IPsec-এ কোন প্যাকেট টানেলে ঢোকে তা নির্ধারণ করা পলিসি সিলেক্টরগুলো দেখুন এবং পিয়ার ঠিকানাটি সেগুলো থেকে বাদ আছে কি না নিশ্চিত করুন। WireGuard-এ ইন্টারফেসের ফায়ারওয়াল মার্ক ও তার পলিসি নিয়ম পরিবহন প্যাকেটগুলোকে টানেলের বাইরে রাখে, তাই হাতে যোগ করা ডিফল্ট রুট সেই ব্যবস্থা ভেঙে দিতে পারে। দ্বিতীয় একটি VPN প্রোফাইল বা ডিফল্ট রুট পুনরায় লেখা একটি ব্যবস্থাপনা স্ক্রিপ্ট সাধারণত দায়ী। একটির পর একটি যোগ করা বিস্তৃত বাইপাস নিয়মই স্বাভাবিক ফল, আর সেগুলো একটি রাউটিং বাগকে এমন টেবিলে পরিণত করে যা কেউ রক্ষণাবেক্ষণ করতে পারে না।
নেটওয়ার্ক বদলানোর পর আবার যাচাই করুন
Wi-Fi গেটওয়ে দিয়ে একটি হোস্ট রুট ততক্ষণ সঠিক, যতক্ষণ মেশিনটি অন্য নেটওয়ার্কে না যায়। তখন কোনো কনফিগারেশন না বদলেই একই উপসর্গ ফিরে আসে।
এন্ডপয়েন্টের ঠিকানা, সংযোগের আগে ও পরে রুট, এবং প্রত্যেকে যে ইন্টারফেস ব্যবহার করেছে তা লিখে রাখুন। এই তিনটি তথ্য সাধারণত ক্লায়েন্টের বাগের সঙ্গে ওভাররাইডের পার্থক্য করে দেয়, আর যিনি সেগুলো সংগ্রহ করেছেন তিনি চলে গেলেও টিকে থাকে।
নতুন নেটওয়ার্কে আবার সংযোগ করুন এবং পাঠটি পুনরাবৃত্তি করুন। ব্যতিক্রমটি আবার অনুপস্থিত থাকলে, সমাধানটি তার মালিক যে প্রোফাইলে তার ভেতরেই, বিঘ্নের সময় লেখা এক-বারের কমান্ডে নয়।