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

রুট পরিবর্তন করার আগে লুপ নিশ্চিত করুন

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

sudo wg show wg1 endpoints
ip route get 198.51.100.20
ip rule show

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

এন্ডপয়েন্ট পাথ পড়ুন, টানেল পাথ নয়

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

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

একটি সুসংগত পরিবর্তনে এন্ডপয়েন্ট পাথ পুনরুদ্ধার করুন

দুটি সমর্থিত পদ্ধতি আছে, এবং সেগুলো মেশানোই একটি কাজ করা সেটআপকে অপ্রত্যাশিত করে তোলে। প্রথমটি হলো ইন্টারফেসের মালিক টুলটিকে পুরো টানেল পরিচালনা করতে দেওয়া: wg-quick ডিফল্ট পিয়ার পরিসরের জন্য নিবেদিত হ্যান্ডলিং আছে যা একটি আলাদা টেবিল, পলিসি নিয়ম এবং একটি সকেট মার্ক ইনস্টল করে, যা বাইরের প্যাকেটগুলোকে টানেলের বাইরে রাখে। অর্ধেক হাতে পুনরুৎপাদন করার বদলে সেই যন্ত্রকৌশল অক্ষত রাখুন। এমন সেটআপ যা হাতে যোগ করা ডিফল্টকে এমন ম্যানেজারের সাথে মেশায় যে ইতিমধ্যে মার্ক ও নিয়ম ইনস্টল করে, পুনঃসংযোগের পরে ব্যর্থ হতে ঝোঁক, যখন ম্যানেজার এমন অবস্থা পুনর্লিখন করে যা হাতের ধাপটি ধরে নিয়েছিল।

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

sudo ip route replace 198.51.100.20/32 via 192.0.2.1 dev eth0
ip route get 198.51.100.20
sudo ip route add default dev wg1

যাচাই করুন, তারপর ফিরে আসার পথ রাখুন

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

sudo wg show wg1 latest-handshakes
sudo wg-quick down wg1
ip route show default
ip route get 198.51.100.20

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

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