দুটি /1 প্রিফিক্স ঠিক একই IPv4 ঠিকানা ঢেকে রাখে যেটি একটি /0 ঢাকে, এবং এই সমতা কেবল পিয়ারের অনুমোদিত প্রিফিক্স তালিকার ভেতরেই প্রযোজ্য। সেটআপ টুল যখন রাউটিংয়ের সিদ্ধান্ত নেয়, ঠিক তখনই তা আর প্রযোজ্য থাকে না, কারণ লিনাক্সে wg-quick ডিফল্ট প্রিফিক্সকে পাটিগণিত নয়, বিশেষ কেস হিসেবে সামলায়। বিশেষ শাখাটি একটি নিবেদিত টেবিল, দুটি পলিসি রুল, একটি সকেট মার্ক এবং রিভার্স-পাথ সেটিংস বসায়, যা অর্ধেক রুটের জোড়া কখনো পায় না। তাই সম্পাদনার পরে প্রক্সি বা ব্রাউজার কাজ করা বন্ধ করলে, প্রিফিক্সগুলোই পরিবর্তনের সবচেয়ে কম আকর্ষণীয় অংশ।

প্রিফিক্স তালিকা পুরো কনফিগারেশন নয়

AllowedIPs একসাথে দুটি কাজ করে, এবং তার মধ্যে কেবল একটি কভারেজ নিয়ে। WireGuard নিজের জন্য তালিকাটি হলো ক্রিপ্টোকি রাউটিং: এটি ঠিক করে কোন গন্তব্যগুলো পিয়ারের দিকে এনক্রিপ্ট হবে এবং সেই পিয়ার কোন সোর্স ঠিকানা ব্যবহার করতে পারবে। wg-quick-এর জন্য একই তালিকা একইসাথে একটি রুট স্পেসিফিকেশনও, এবং এটি যে রুট তৈরি করে তা নির্ভর করে তালিকাটি কোন শাখার সাথে মেলে তার উপর। তাই দুটি ভিন্ন তালিকা আকৃতিতে অভিন্ন কভারেজ থাকলেও তা অভিন্ন হোস্ট অবস্থা সম্পর্কে কিছুই বলে না।

ডিফল্ট কনফিগারেশন সেই সিদ্ধান্ত আপনার হাত থেকে নিয়ে নেয়, কারণ Table ডিফল্টভাবে স্বয়ংক্রিয় এবং টুলটিই বেছে নেয় রুটগুলো কোথায় বসবে। ভিন্ন নেটওয়ার্ক ম্যানেজার, ডিস্ট্রিবিউশন র্যাপার বা কাস্টম Table মান ফলাফল আবার বদলে দেয়, তাই এক হোস্টের জন্য লেখা পরামর্শ পরের হোস্টে ভুল দেখাতে পারে।

ডিফল্ট শাখা রুটের বাইরে কী যোগ করে

/0 এন্ট্রি wg-quick-কে তার ডিফল্ট-রুট পথে পাঠায়: একটি আলাদা রাউটিং টেবিল ডিফল্টটি গ্রহণ করে, একটি পলিসি রুল আনমার্কড ট্র্যাফিক সেখানে পাঠায়, দ্বিতীয় রুল আরও নির্দিষ্ট মেইন-টেবিল রুটগুলোকে কর্তৃত্বপূর্ণ রাখে, এবং ইন্টারফেস তার নিজের সকেটে একটি ফায়ারওয়াল মার্ক পায়। সেই মার্কটিই লুপ গার্ড। টানেল ট্র্যাফিক বহনকারী এনক্রিপ্টেড ডেটাগ্রামগুলো মার্ক বসিয়ে বের হয়, যাতে বাকি সবকিছু টানেলে চালানো রুলটি টানেলের নিজের ট্রান্সপোর্ট প্যাকেট গিলে না ফেলে।

বরং /1 এন্ট্রির একটি জোড়া সাধারণ রুট পথ নেয়। কনফিগার করা টেবিলে দুটি রুট পড়ে, এবং আশপাশের কোনো যন্ত্রাংশ দেখা যায় না, কারণ তা অপ্রয়োজনীয় নয়, বরং সেই কোড পথে কখনো প্রবেশ করা হয়নি।

দুটি বিন্যাস কোথায় আলাদা হয়

বিভাজন প্রথমে রিকার্শন হিসেবে দেখা দেয়। মেইন টেবিলে অর্ধেক রুটগুলো থাকলে, পিয়ারের নিজের ট্রান্সপোর্ট ঠিকানা টানেল প্রিফিক্সের ভেতরে পড়ে, ফলে যে প্যাকেট টানেল বহন করার কথা সেই প্যাকেট টানেলের ভেতরের দিকে নির্দেশ করা রুটের সাথে মেলে। কিছু একটা এটিকে ছাড় দিতে হবে: বর্তমান এন্ডপয়েন্টের জন্য একটি হোস্ট রুট, হাতে বসানো একটি মার্ক, বা ইন্টারফেস-নির্দিষ্ট একটি রুল। হোস্ট রুট কাজ করে যতক্ষণ এন্ডপয়েন্ট ঠিকানা বদলায় না, যা DNS-ভিত্তিক এন্ডপয়েন্ট, রোমিং ক্লায়েন্ট এবং বহু-পিয়ার কনফিগারেশনে ঘটে।

দ্বিতীয়ত, মার্ক নিয়ে যুক্তি করে এমন সবকিছুর আচরণ বদলে যায়। যে ট্রান্সপারেন্ট প্রক্সি সংযোগগুলো লোকালি রিডাইরেক্ট করে, সে নতুন সকেট তৈরি করে যাদের মার্ক ও সোর্স মূল ক্লায়েন্ট প্রবাহ থেকে আলাদা, এবং ডিফল্ট শাখার তৈরি পলিসি রুলগুলোই সেই প্রবাহগুলোকে আলাদা করতে সাহায্য করেছিল। প্রক্সির নিজের আউটবাউন্ড সংযোগ পড়া আর মূল গন্তব্যে পৌঁছানো যায় কি না পরীক্ষা করা, দুটি ভিন্ন ব্যাপার।

সম্পাদনার আগে রুল ও মার্ক পড়ুন

টানেল সুস্থ থাকার সময় বর্তমান অবস্থা ধরে রাখুন, তারপর পরিবর্তনের পরে আবার, এবং কনফিগারেশন ফাইল থেকে যুক্তি না করে দুটি ডাম্প তুলনা করুন। পলিসি রুল, প্রতিটি টেবিল, ইন্টারফেসের মার্ক এবং রেকর্ড করা এন্ডপয়েন্ট অন্তর্ভুক্ত করুন।

ip rule show
ip -4 route show table all | grep -E 'default|wg1'
wg show wg1 fwmark
wg show wg1 endpoints

যদি আউটপুটের প্রথম লাইন আনমার্কড-ট্র্যাফিক রুলটি হারিয়ে থাকে এবং নিবেদিত টেবিলটি খালি থাকে, তাহলে ডিফল্ট শাখা চলছে না এবং কোনো প্রিফিক্স পাটিগণিতই তার প্রভাব ফিরিয়ে আনবে না। আগে মার্ক বহন করা একটি ইন্টারফেসে শূন্য মার্ক একই সংকেত, একটা মাত্র মানের মধ্যে দেখা যায়।

মোতায়েনের আগে টানেল হারানো অনুশীলন করুন

যদি অর্ধ-রুট বিন্যাসটিই সচেতন পছন্দ হয়, তাহলে তাকে অনুপস্থিত অংশগুলো স্পষ্টভাবে জোগাতে হবে: ঠিকানা বদলেও টিকে থাকে এমন এন্ডপয়েন্ট পথ, টানেল পড়ে গেলে কাঙ্ক্ষিত আচরণ, এবং IPv6-এর জন্য সমতুল্য ব্যবস্থা। এগুলো বিঘ্নের সময় আবিষ্কার না করে চাহিদা হিসেবে লিখে রাখুন। তারপর ব্যর্থতাটি অনুশীলন করুন, কারণ যে পূর্ণ টানেল চুপচাপ ফিজিক্যাল আপলিংকে ফিরে যায়, সেটি কাজ বন্ধ করা টানেলের চেয়েও খারাপ।

sudo ip -4 route add 198.51.100.20/32 via 192.0.2.1 dev eth0
ip -4 route get 198.51.100.20
sudo wg-quick down wg1

রুট লুকআপের উচিত টানেল না পার হয়ে ফিজিক্যাল ইন্টারফেস থেকে এন্ডপয়েন্টটি সমাধান করা, এবং ইন্টারফেস নামালে হোস্টকে ডিজাইন যে অবস্থার প্রতিশ্রুতি দিয়েছিল সেখানেই রাখা উচিত। প্রতিস্থাপনের পরে কাজ করা একটি প্রক্সি প্রমাণ করে যে উৎপন্ন হোস্ট অবস্থাটি গুরুত্বপূর্ণ ছিল; কিন্তু এটি প্রমাণ করে না যে লুপ প্রতিরোধ ও ডাউন-অবস্থার আচরণ সম্পাদনা থেকে বেঁচে গেছে।

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