ডিফল্ট রুট, LAN প্রিফিক্স, DNS এবং ফায়ারওয়াল ব্যতিক্রম বহন করা একটি WireGuard পরীক্ষা আপনাকে বলতে পারে না এগুলোর কোনটি ভেঙেছে। এটিকে দুই পিয়ার, এক জোড়া ঠিকানা এবং একটি অনুমোদিত সেবায় নামিয়ে আনুন, তাহলে ব্যর্থতার লুকানোর জায়গা থাকবে না। একঘেয়ে ভিত্তিটাই ডায়াগনস্টিক। এটি আগে তৈরি করুন; এতে পনেরো মিনিট লাগে এবং অনুমানের পেছনে নষ্ট হওয়া বিকেলটা বাঁচায়।

ভিত্তিটি যা প্রমাণ করে তা বেশিরভাগ মানুষের প্রত্যাশার চেয়ে সংকীর্ণ। এটি প্রমাণ করে যে দুটি পরিচয় একমত, UDP শোনার পোর্টে পৌঁছায় এবং একটি অনুমোদিত গন্তব্য একটি অনুরোধ বহন করে। ফরওয়ার্ডিং, NAT, LAN রুট এবং DNS পরে যোগ করার আলাদা বৈশিষ্ট্য, একবারে একটি।

কী, ঠিকানা এবং একক এন্ডপয়েন্ট

প্রতিটি সিস্টেমে একটি কী জোড়া তৈরি করুন এবং তাদের মধ্যে কেবল পাবলিক অর্ধেকগুলো সরান। wg genkey | tee privatekey | wg pubkey > publickey হলো নথিভুক্ত এক-লাইন কমান্ড, এবং এটি ব্যক্তিগত কী-টি এমন ফাইলে রেখে যায় যা আপনি পরে সুরক্ষিত করতে পারেন। আপনার অন্য কোনো কনফিগারেশনে না থাকা একটি রেঞ্জ থেকে টানেল ঠিকানা বেছে নিন, যেমন 10.99.0.1/24 এবং 10.99.0.2/24। কোন ঠিকানা কোন মেশিনের, তা লিখে রাখুন, কারণ পরের প্রতিটি যাচাই ওই মিলের ওপর নির্ভর করে।

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

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

wg-এর অন্তর্গত ফিল্ড এবং যেগুলো নয়

মূল ফিল্ড সেটটি ছোট: Interface-এর অধীনে PrivateKey ও ListenPort, Peer-এর অধীনে PublicKey, AllowedIPs ও Endpoint। Address ও DNS wg-এর নিজের নয়, wg-quick-এর, এবং একই কনফিগারেশন অন্য টুলে যাওয়ার মুহূর্তেই এই পার্থক্য কামড় দেয়।

[Interface]
PrivateKey = <peer-a-private>
Address = 10.99.0.1/24
ListenPort = 51820

[Peer]
PublicKey = <peer-b-public>
AllowedIPs = 10.99.0.2/32
Endpoint = 203.0.113.10:51820

AllowedIPs একসঙ্গে দুটি কাজ করে। এটি বেছে নেয় কোন গন্তব্যগুলো টানেলে যাবে, এবং এটি পিয়ারকে আগমনের সময় ওই উৎস ঠিকানাগুলো ব্যবহার করার অনুমতি দেয়। সেই কারণে অন্যপাশের আয়না এন্ট্রিকে আপনার টানেল ঠিকানাটি হুবহু নামতে হবে; ভুল পিয়ারের জন্য /32 রাউটিং সমস্যা হিসেবে পড়া যায় এবং অনুমোদন সমস্যার মতো আচরণ করে। WireGuard দ্রুত শুরু ফিল্ডের নাম তুলনা করতে চাইলে প্রামাণ্য ভাষায় একই দুই-পিয়ার আকৃতি দেখায়।

আইকনের বদলে হ্যান্ডশেক পড়া

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

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

একটি অনুমোদিত সেবা প্রমাণ করা, তারপর উল্টো দিক

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

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

ভিত্তিকে রেফারেন্স হিসেবে রাখা

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

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

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