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

ইচ্ছাকৃতভাবে একবার পুনরুৎপাদন করুন

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

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

ইন্টারফেসের মালিক কে?

WireGuard-এর নিজের কোনো ডেমন বা কনফিগারেশন ফাইল নেই। এর উপরে কিছু একটা বুটের সময় wg ডাকে, আর সেই কিছুটাই সত্যের উৎস। সাধারণ প্রার্থীরা হলো [email protected], একটি NetworkManager কানেকশন প্রোফাইল, ডিস্ট্রিবিউশন-নির্দিষ্ট নেটওয়ার্ক ইউনিট, অথবা এমন একটি ম্যানেজমেন্ট প্যানেল যা নিজের ডেটাবেস লেখে।

আপনার ডিস্ট্রিবিউশনের ডকুমেন্টেশন নয়, সিস্টেমকেই জিজ্ঞাসা করুন। systemctl status wg-quick@wg0 এবং nmcli connection show সাধারণত এক-একটি কমান্ডেই বিষয়টি নিষ্পত্তি করে। দুটোই যদি ইন্টারফেসের দাবি করে, তাহলে কিছু সম্পাদনার আগেই আপনি বাগটি খুঁজে পেয়েছেন: দুই মালিক প্রতিটি স্টার্টে একই ডিভাইস পুনর্লিখন করে, আর শেষে চলাটিই জেতে।

systemctl status wg-quick@wg0 --no-pager
grep -R "Address\|SaveConfig\|PostUp" /etc/wireguard/wg0.conf
nmcli -g NAME,TYPE connection show
wg show wg0 peers

রানটাইম অবস্থা আর স্টার্টআপ অবস্থা একই ফাইল নয়

wg set netlink-এর মাধ্যমে লাইভ ডিভাইসটি পরিচালনা করে। এটি /etc/wireguard/wg0.conf, কোনো NetworkManager প্রোফাইল বা প্যানেলের ডেটাবেস লেখে না। এরপর সফল wg show প্রমাণ করে কার্নেল পিয়ারটি গ্রহণ করেছে, কেউ এটি পুনরুদ্ধার করবে তা নয়।

বিপরীত দিকেও দ্বিতীয় একটি ফাঁদ আছে। ইন্টারফেস নামানোর সময় wg-quick-এর SaveConfig অপশনটি বর্তমান ইন্টারফেস অবস্থা কনফিগারেশন ফাইলে ফিরিয়ে লেখে। এটি চালু থাকলে ইন্টারফেস ওপরে থাকাকালীন ফাইলে করা সম্পাদনা পরের শাটডাউনে চাপা পড়তে পারে, আর আপনি শপথ করবেন যে লাইনটি সেখানে ছিল। পিয়ার যদি বারবার ফিরে আসে, তাহলে স্টপের পরে ফাইলটি পড়ুন, আগে নয়।

NetworkManager আবার ভিন্নভাবে আচরণ করে: প্রোফাইলটির মালিক সে-ই এবং অ্যাক্টিভেশনে তা প্রয়োগ করে, তাই সক্রিয় NetworkManager কানেকশনের পাশে হাতে সম্পাদিত .conf শুধুই সাজসজ্জা। ইন্টারফেসের জন্য একজন মালিক বেছে নিন আর অন্য ম্যানেজারকে এটি ছেড়ে দিতে দিন।

সম্পাদনাটি যেন দুই জায়গাতেই পৌঁছায়

আগে স্থায়ী অবস্থা সম্পাদনা করুন, তারপর মালিককে তা প্রয়োগ করতে দিন, তারপর লাইভ অবস্থা যাচাই করুন। এই ক্রম মানে যেকোনো ধাপে ব্যর্থতা তিনটি নয়, একটি জিনিসের দিকে ইঙ্গিত করে।

# 1. persistent state (wg-quick owner)
sudo vi /etc/wireguard/wg0.conf

# 2. apply through the owner, not by hand
sudo systemctl restart wg-quick@wg0

# 3. verify runtime matches the file
sudo wg show wg0
sudo wg showconf wg0

wg showconf লাইভ কনফিগারেশনটি ফাইলের ব্যবহৃত সিনট্যাক্সেই ছাপে, ফলে দুটোকে সরাসরি তুলনা করা যায়। ওই আউটপুটকে গোপন হিসেবে গণ্য করুন: তাতে ব্যক্তিগত কী থাকে, তাই টিকিট বা চ্যাট চ্যানেলে আটকাবেন না। পিয়ারের পাবলিক কী ও অনুমোদিত IP মিলিয়ে দেখুন, আর যাচাই করুন যে ইচ্ছাকৃতভাবে সরানো পিয়ারটি ফিরে আসেনি।

প্রমাণ করুন এটি জীবনচক্রের ঘটনাটি পার করে

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

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

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