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

দুটি কী, দুটি দিক

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

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

wg show
wg show interfaces

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

কী শেয়ার করবেন আর কী কখনোই করবেন না

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

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

এক ডিভাইস, এক পিয়ার এন্ট্রি

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

ডিভাইস থেকে পাবলিক কী-এর মিলটি ঠিকানা তালিকার পাশেই রাখুন। সেই তালিকাই বাতিল করাকে এক বিকেলের বদলে দুই মিনিটের কাজ বানায়।

হ্যান্ডশেকের পরেও কী কী ব্যর্থ হয়

কী জোড়া পিয়ারদের চিহ্নিত করে, নেটওয়ার্কের আচরণ ঠিক করে না। AllowedIPs ঠিকানা পরিসরকে একটি পিয়ারের সঙ্গে যুক্ত করে, আর তার চারপাশের রুটগুলো ক্লায়েন্ট বা সেটআপ টুল সামলায়। উপসর্গ সাধারণত বলে দেয় এরপর কোন স্তর খুলতে হবে:

What you seeWhich key problem it usually meansWhere to look first
Handshake age stays at never on both endsPeer public key missing, or an endpoint pointing at nothingwg show, then the endpoint value
Handshake completes on one side onlyThe two ends hold different public keys for each otherwg show on both hosts
Handshake works, then no trafficAllowedIPs or routes rather than keyswg show and the route table
Worked until a key was regeneratedThe peer entry still holds the old public keyCompare both public keys, then update the peer

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

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