WireGuard AllowedIPs: যে রুটটি NetworkManager কখনো যোগ করেনি
একটি বৈধ WireGuard প্রোফাইল হ্যান্ডশেক শেষ করেও কিছুই পাঠাতে পারে না। কার্নেল টেবিলের সঙ্গে AllowedIPs মিলিয়ে দেখুন, তারপর রুট পথকে একজন মালিক দিন।
হ্যান্ডশেক কাউন্টার আপডেট হয়, ইন্টারফেস তার ঠিকানা ধরে রাখে, আর ওপাশে পাঠানো ping কোথাও পৌঁছায় না। এই সমন্বয় মানুষকে বিভ্রান্ত করে, কারণ কাজ করা হ্যান্ডশেককে টানেল প্রস্তুত হওয়ার প্রমাণ বলে মনে হয়। তা নয়: একটি টানেল পুরোপুরি নেগোশিয়েট হয়ে গিয়েও তার দিকে ট্রাফিক পাঠানোর কোনো রুট না থাকতে পারে, আর এগুলো দুটি আলাদা কাজ, যা দুটি আলাদা অবস্থার অংশ সম্পন্ন করে। সমাধান সম্পূর্ণ নির্ভর করে এই দুটির মধ্যে কোনটি অনুপস্থিত তার উপর, তাই প্রথম ধাপ হলো তা বের করা।
wg-quick দুটোই না চাওয়া সত্ত্বেও সম্পন্ন করে। NetworkManager-এর অন্তর্নির্মিত WireGuard সমর্থনও ডিফল্টভাবে পিয়ার রুট ইনস্টল করে, যা সন্দেহভাজনদের সীমাবদ্ধ করে একটি নিষ্ক্রিয় অপশন, ভিন্ন রাউটিং টেবিল বা অন্য কিছু দিয়ে আমদানি করা কনফিগারেশনে।
রুটের পেছনে ছোটার আগে টানেল নিশ্চিত করুন
wg show ইন্টারফেস, পিয়ার, এন্ডপয়েন্ট এবং সর্বশেষ হ্যান্ডশেকের বয়স দেখায়, আর ip addr show ঠিকানাটি উপস্থিত আছে তা নিশ্চিত করে। সাম্প্রতিক হ্যান্ডশেক মানে কী, এন্ডপয়েন্ট এবং UDP পথ কাজ করছে। যা কিছু নষ্ট তা তাদের নিচে অবস্থিত: রাউটিং, ফিল্টারিং বা নাম সমাধান।
তারপর কার্নেলকে জিজ্ঞাসা করুন কাল্পনিক নয়, বাস্তব একটি গন্তব্য নিয়ে সে কী করবে: ip route get 10.42.7.9। উত্তরটি বেরোনো ইন্টারফেস এবং প্যাকেট যে সোর্স ঠিকানা বহন করবে তা বলে দেয়। যখন এটি ভৌত অ্যাডাপ্টারের নাম বলে, তখন প্যাকেট কখনোই টানেলে ঢোকে না, হ্যান্ডশেক যতই সুস্থ দেখাক।
AllowedIPs একটি ফিল্টার এবং একটি রুট তালিকা
AllowedIPs-এর প্রিফিক্সগুলো দুটি কাজ করে। তারা নির্ধারণ করে কোন পিয়ার বেরোনো গন্তব্য বহন করবে, আর তারা আসা প্যাকেটের সোর্স ঠিকানা যাচাই করে, যা ক্রিপ্টোকি রাউটিং সীমা। wg-quick-এ তারা স্বয়ংক্রিয় রুট ইনস্টলেশনও চালায়, আর সেই অতিরিক্ত আচরণই একই কনফিগারেশন টার্মিনাল থেকে কাজ করে কিন্তু ডেস্কটপ ক্লায়েন্ট থেকে না করার কারণ।
এই নিবন্ধের পেছনের ঘটনায় প্রোফাইলটি অন্তর্নির্মিত সমর্থনের বদলে তৃতীয় পক্ষের প্লাগইন দিয়ে আমদানি করা হয়েছিল, এবং ইন্টারফেসটি প্রিফিক্স রুট ছাড়াই উঠে এসেছিল। টেবিলটি তালিকাবদ্ধ করলেই তা সঙ্গে সঙ্গে দেখা যায়: ip route show-এ কেবল ইন্টারফেস ঠিকানার সংযুক্ত রুট আছে, দূরবর্তী রেঞ্জের জন্য কিছুই নেই।
পিয়ার রুট আদৌ সক্রিয় কিনা জিজ্ঞাসা করুন
কিছু বদলানোর আগে সেটিংটি পড়ুন: nmcli -f wireguard.peer-routes,ipv4.route-table connection show work-wg। যখন peer-routes no দেখায়, সমর্থিত সমাধান হলো nmcli connection modify work-wg wireguard.peer-routes yes, তারপরে পুনরায় সংযোগ। এর বদলে একটি স্ট্যাটিক রুট যোগ করা পরবর্তী অ্যাক্টিভেশন পর্যন্ত কাজ করে, তারপর চুপচাপ অদৃশ্য হয়ে যায়। সেই অদৃশ্য হওয়াই ইঙ্গিত: প্রতিদিন সকালে রহস্য হিসেবে ফিরে আসা রুট প্রোফাইল ইনস্টল করছে না।
অপশনটি যদি ইতিমধ্যে সক্রিয় থাকে, তবে প্রিফিক্সটি অন্য টেবিলে আছে কিনা ip route show table all | grep 10 দিয়ে দেখুন। প্রধান নয় এমন টেবিলের রুট অনুপস্থিত নয়, এটি কেবল সেই লুকআপের কাছে অদৃশ্য যা কেবল প্রধান টেবিল দেখে। উপরে একটি নকল এন্ট্রি চাপানোর বদলে পলিসি রাউটিং ঠিক করুন।
প্রিফিক্সটি চলমান সিস্টেমে নয়, সংযোগে যোগ করুন
সংযোগ সম্পাদকে WireGuard পৃষ্ঠা পিয়ার এবং তার AllowedIPs ধরে রাখে, আর IPv4 পৃষ্ঠা অতিরিক্ত রুট ধরে রাখে। সেখানে যোগ করা রুট পুনঃসংযোগেও টিকে থাকে, কারণ এটি প্রোফাইলের অন্তর্গত। কমান্ড লাইনে সমতুল্য কাজটি হলো খালি-গেটওয়ে রূপে সংযোগে একটি রুট যুক্ত করা, তারপর পরিবর্তন প্রয়োগের জন্য সংযোগটি নামিয়ে আবার তোলা।
আপনার প্রয়োজনীয় হোস্টগুলো ঢেকে দেয় এমন সংকীর্ণতম প্রিফিক্স বেছে নিন। সরবরাহকারীর উদাহরণ /8 কপি করলে ভেতরে থাকা স্থানীয় রেঞ্জগুলো গিলে ফেলতে পারে, আর এর ফলে হওয়া ব্যর্থতা অতি-প্রশস্ত রুটের বদলে ভাঙা টানেলের মতো দেখায়।
স্প্লিট টানেলিং নির্ধারিত হয় প্রিফিক্স তালিকা দ্বারা
স্প্লিট-টানেলের কোনো সুইচ নেই; প্রিফিক্স তালিকাই সিদ্ধান্ত। অফিস LAN-এর জন্য একটি রেঞ্জ আর ল্যাব নেটওয়ার্কের জন্য একটি রেঞ্জ থাকা পিয়ার ঠিক সেই গন্তব্যগুলোই টানেল দিয়ে পাঠায় এবং বাকি সবকিছুকে একা ছেড়ে দেয়। একটি একক হোস্টের জন্য /32 দরকার, আর দুটি সাইটে ওভারল্যাপিং রেঞ্জের জন্য হোস্ট প্রিফিক্স দরকার, যতক্ষণ না কেউ একটি সাবনেট পুনঃসংখ্যায়িত করে।
টানেল দিয়ে কিছু না পাঠানোর সিদ্ধান্ত একই সিদ্ধান্তকে তার সীমায় নিয়ে যায়: একটি ন্যূনতম তালিকা লিঙ্কটি চালু রাখে, আর সাধারণ ট্রাফিক তার স্বাভাবিক পথেই থাকে। উদ্দেশ্যটি লিখে রাখুন, নইলে পরবর্তী পাঠক সংক্ষিপ্ত তালিকাটিকে অবহেলা ভেবে সহায়কভাবে বাড়িয়ে দেবে।
রুট টেবিলের জন্য একজন মালিক
wg-quick এবং NetworkManager উভয়েই বিশ্বাস করে ইন্টারফেসের রুট তাদের। wg-quick-এর জন্য লেখা একটি কনফিগ আমদানি করুন এবং তারপর wg-quick সার্ভিসও চালু করুন, তাহলে আপনি পাবেন নকল বা পরস্পরবিরোধী এন্ট্রি, যাদের আচরণ নির্ভর করে কোনটি শেষে চলেছে তার উপর। একজন মালিক বেছে নিন এবং অন্যটি সরান: NetworkManager যদি সংযোগ পরিচালনা করে, তাহলে সেই ইন্টারফেসের জন্য wg-quick ইউনিট নিষ্ক্রিয় করুন, আর একই ডিভাইসের জন্য কখনো দ্বিতীয় প্রোফাইল যোগ করবেন না।
যখন বিভাজনকে গন্তব্যের বদলে ভৌত অ্যাডাপ্টার অনুসরণ করতে হয়, তখন আপনি পলিসি রাউটিংয়ে চলে এসেছেন, আর পলিসি রাউটিংয়েও একক লেখক দরকার। ip route get পুনরাবৃত্তি করে যাচাই করুন, তারপর দূরবর্তী প্রিফিক্সের ভেতরের একটি হোস্টে পৌঁছান এমন কিছু দিয়ে যা তার বেছে নেওয়া সোর্স ঠিকানা দেখায়। প্রোফাইলে থাকলে IPv6 এবং DNS আলাদাভাবে পরীক্ষা করুন।