WireGuard হ্যান্ডশেকের বয়স সেশন টাইমআউট নয়
কী নবায়নের টাইমার কী-গুলো নিয়ন্ত্রণ করে, ব্যবহারকারীর প্রবেশাধিকার নয়। latest-handshakes পড়া এক পিয়ারের প্রোটোকল অবস্থা জানায়, তার অনুমোদন মেয়াদোত্তীর্ণ হয়েছে কি না তা নয়।
যে পিয়ার ট্রাফিক পাঠানো বন্ধ করে দেয় সে এর ফলে তার কী হারায় না, আর নতুন হ্যান্ডশেক প্রমাণ করে না যে কেউ তার ব্যবহারের অনুমতি নবায়ন করেছে। WireGuard-এর টাইমার কী-গুলো তাজা আর প্যাকেটগুলো চলমান রাখে; তারা এমন ব্যবহারকারীকে মডেল করে না যে নির্দিষ্ট মিনিট পরে লগ আউট করে। এখানে তিনটি প্রশ্ন মিশে যায়, আর প্রতিটির প্রমাণ আলাদা। এই পার্থক্যই ঠিক করে কোন যন্ত্র ব্যবহার করবেন।
তিন প্রশ্ন, একটি কমান্ডের আউটপুট
অপারেটররা জিজ্ঞেস করেন পিয়ারটি পৌঁছানোর যোগ্য কি না, সক্রিয় ছিল কি না, এবং এখনো অনুমোদিত কি না। প্রথমটি প্রোটোকল অবস্থা, দ্বিতীয়টি ট্রাফিক কাউন্টার আর তৃতীয়টি অনুমোদন। কেবল প্রথম দুটি WireGuard ইন্টারফেস থেকে পড়া যায়, এবং তিনটিরই উত্তর দিতে এগুলো নিয়মিত ব্যবহৃত হয়।
| Question | Evidence it needs | What does not answer it |
|---|---|---|
| Is the peer reachable now? | A recent handshake and a working return path | An interface that exists |
| Has it been active? | Transfer counters moving over time | A handshake timestamp alone |
| Is access still granted? | The configuration or controller that authorizes it | Any protocol timer |
সারিগুলোকে তিনটি আলাদা তদন্ত হিসেবে পড়ুন। প্রথম দুটি সস্তা এবং ইন্টারফেসের নিজস্ব কাউন্টার দিয়েই উত্তর দেওয়া যায়। তৃতীয়টির জন্য যে কনফিগারেশন প্রবেশাধিকার দেয় তা দরকার, আর তা অন্য ফাইল বা অন্য সিস্টেমে থাকে। ভুল সারি বাছা মানে প্রোটোকল টাইমারের কাছে নীতির কাজ চাওয়া।
টাইমার আসলে কী নিয়ন্ত্রণ করে
প্রোটোকল হ্যান্ডশেক পুনরায় চেষ্টা, ট্রান্সপোর্ট কী ঘোরানো এবং পুরোনো কী দিয়ে সুরক্ষিত প্যাকেট প্রত্যাখ্যানের জন্য ধ্রুবক নির্ধারণ করে। এগুলো ট্রাফিক ও অবস্থায় সাড়া দেয়, কোনো ক্যালেন্ডার বা এমন নীতিতে নয় যা বলে কেউ 17:00 পর্যন্ত সংযুক্ত থাকতে পারে। এজন্যই নিষ্ক্রিয় পিয়ার ঘণ্টার পর ঘণ্টা নিষ্ক্রিয় দেখাতে পারে এবং তবুও অনুমোদিত থাকে।
PersistentKeepalive কে প্রায়ই অনুপস্থিত টাইমআউট ভাবা হয়। এটি NAT ম্যাপিং জীবিত রাখতে প্রমাণিত খালি প্যাকেট পাঠায়, এবং এটিকে শূন্যে সেট করলে কিছু বাতিল না করেই সেই প্যাকেটগুলো থেমে যায়।
প্রতি পিয়ারের রানটাইম অবস্থা পড়ুন, মন্তব্যের বদলে পাবলিক কী ব্যবহার করে:
wg show wg0 latest-handshakes
wg show wg0 transfer
সাম্প্রতিক হ্যান্ডশেক বলে একটি হ্যান্ডশেক সম্পন্ন হয়েছে। এটি বলে না যে টানেলের পেছনের ব্যক্তিগত সেবাটি পৌঁছানোর যোগ্য, আর পুরোনো টাইমস্ট্যাম্প এমন পিয়ারের হতে পারে যে কেবল চুপ আছে।
কেন নিষ্ক্রিয় পিয়ার লগ আউট করা পিয়ার নয়
WireGuard-এ শুরু ও শেষসহ কোনো সেশন অবজেক্ট নেই। পিয়ার হলো অনুমোদিত ঠিকানাসহ একটি পাবলিক কী, আর তার ট্রাফিক রক্ষাকারী হ্যান্ডশেক প্রয়োজনমতো বদলে দেওয়া হয়, ব্যবহারকারীর কাছে দৃশ্যমান কোনো লগইন ছাড়াই। সাম্প্রতিক ট্রাফিকের অনুপস্থিতিকে লগ আউট ভাবা মডেলটিকে উল্টে দেয়।
যদি আসল অভিযোগ হয় যে নিষ্ক্রিয় থাকার পর সংযোগ ব্যর্থ হয়, কারণ সাধারণত অন্য জায়গায়: মেয়াদোত্তীর্ণ NAT ম্যাপিং, ঘুমিয়ে পড়া ডিভাইস, বা এমন ফায়ারওয়াল যা অবস্থা হারিয়েছে। অন্য প্রান্ত থেকে ট্রাফিক পাঠিয়ে ও নতুন প্রবাহ শুরু করে পরীক্ষা করুন, এবং কী বদলায় তা তুলনা করুন।
সময়সীমা সেখানেই রাখুন যেখানে অনুমোদন থাকে
যদি প্রবেশাধিকার নির্দিষ্ট সময়ে শেষ হতে হয়, সময়সীমা তারই যার প্রবেশাধিকার দেয়। পিয়ার কনফিগারেশন ইস্যু করা কন্ট্রোলার নতুন দেওয়ার আগে নবায়নকৃত অনুমোদন চাইতে পারে, আর এটি কন্ট্রোলারের বৈশিষ্ট্য, ইন্টারফেসের গোপন প্যারামিটার নয়।
হাতে পরিচালিত পিয়ারের জন্য অপসারণকে দুই জায়গায় পৌঁছাতে হবে: চলমান ইন্টারফেস ও সংরক্ষিত কনফিগারেশন। পিয়ারকে কেবল রানটাইমে অপসারণ করলে তা রিস্টার্ট বা মিলন লুপে বাতিল হয়ে যায়, যা সেই পরিচয় ফিরিয়ে আনে যা আপনি মেয়াদোত্তীর্ণ ভেবেছিলেন:
sudo wg set wg0 peer <public-key> remove
sudo wg-quick save wg0
তারপর লেবেল নয়, সীমা পরীক্ষা করুন। নিশ্চিত করুন পিয়ার সময়সীমার পরে প্রত্যাখ্যাত হয়, নবায়ন পথ কাজ করে, এবং অবস্থা ম্যানেজারের পুনরায় লোডেও টিকে থাকে। হ্যান্ডশেকের বয়স একটি উপকারী পরিচালন সংকেত, এবং এটি প্রবেশাধিকারের রেকর্ড নয়।