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

সেগুলোকে একটাই স্ট্যাটাস হিসেবে পড়াই দুই মিনিটের রোগনির্ণয়কে সারা বিকেলের সার্ভিস রিস্টার্টে পরিণত করে।

হ্যান্ডশেক পিয়ারের ঘটনা, ঠিকানা দেওয়ার ঘটনা নয়

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

সেজন্যই wg show এমন ইন্টারফেসে কয়েক সেকেন্ড পুরোনো হ্যান্ডশেক দেখাতে পারে যা কোনো অ্যাপ্লিকেশন থেকে একটি প্যাকেটও নিতে পারে না।

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

ObservationWhich layer it belongs toWrong conclusion it invites
Handshake a few seconds oldPeer and keysThe tunnel is usable for application traffic
Address present on wg0Interface configurationTraffic actually egresses through it
Route points at wg0Forwarding tableThe outer packet uses the intended uplink

ইন্টারফেসের ঠিকানার নিজের মালিক আছে

টানেল ডিভাইসের ঠিকানা আসতে পারে সাহায্যকারীর Address লাইন থেকে, ইন্টারফেসে চলা DHCP ক্লায়েন্ট থেকে, বা সংযোগের সময় তা তৈরি করা ব্যবস্থাপনা ডেমন থেকে। যেটাই হোক, ওই উপাদানটিই ঠিকানার মালিক এবং নিজের যুক্তি অনুযায়ী তা ফিরিয়ে দেবে বা দেবে না। মালিকের নাম না নিয়ে ঠিকানা পড়লে কেন এটি উবে গেল তা ব্যাখ্যা করতে পারবেন না।

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

একজন মালিক বাছুন এবং অন্য টুলটিকে পরিচালনার বদলে কেবল পর্যবেক্ষণ করতে দিন। সেই সিদ্ধান্ত লিখে রাখা উচিত, কারণ উপসর্গটি সপ্তাহখানেক পরে দেখা দেয় এবং এলোমেলো ঠিকানা হারানোর মতো দেখায়।

রুট আপলিংক বাছে, ইন্টারফেস নয়

wg0-এর দিকে নির্দেশ করা ভেতরের রুট ঠিক করে যে ট্র্যাফিক টানেলে ঢোকে। আলাদা একটি সিদ্ধান্ত এনক্রিপ্ট করা বাইরের প্যাকেটগুলো পিয়ারের দিকে পাঠায়, আর একাধিক আপলিংকযুক্ত হোস্টে সেই সিদ্ধান্ত আসে ফরওয়ার্ডিং টেবিল ও পলিসি নিয়ম থেকে। Wi-Fi রোমিং ভেতরের ঠিকানায় হাত না দিয়েই বাইরের পথ বদলাতে পারে।

তাই কাজ করা টানেল আর পৌঁছানো যায় না এমন পিয়ার সহাবস্থানযোগ্য অবস্থা, ঠিক তেমনি সঠিক পিয়ার আর ভাঙা ভেতরের রুটও। তিনটি পর্যবেক্ষণ একসাথে, একই মুহূর্তে নিতে হবে, নইলে তুলনাটি অর্থহীন।

তিনটি অবস্থা এক পাসে তুলনা করুন

তিনটি কেবল-পঠনযোগ্য কমান্ড তিনটি প্রশ্নের উত্তর দেয় এমন ক্রমে যা ব্যর্থতা দ্রুততম আলাদা করে। তাদের মধ্যে কিছু না বদলে সেগুলো চালান।

ip address show dev wg0
ip route get 10.80.0.1
wg show wg0 latest-handshakes transfer

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

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

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

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