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

তথ্যের মালিক কে তা দিয়ে সিদ্ধান্ত নিন

SettingWhere it livesBest for
static_host_mapEvery peer that needs the entryBootstrap endpoints, deliberately fixed paths
advertise_addrsThe host's own configEndpoints the host cannot otherwise discover

প্রতিটি পিয়ারের স্ট্যাটিক ফাইলে প্রতিটি পরিবর্তনশীল পিয়ার হলো একটি রক্ষণাবেক্ষণের কাজ যা ফ্লিটের বর্গের সাথে বাড়ে। হোস্ট নিজেই উত্তর জানলে অন্য সেটিংসের দিকে হাত বাড়ানোর ব্যবহারিক কারণ এটাই।

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

বুটস্ট্র্যাপের এখনও স্ট্যাটিক এন্ট্রি দরকার

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

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

হোস্ট এন্ডপয়েন্ট জানলে বিজ্ঞাপন দিন

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

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

বিজ্ঞাপন পৌঁছানোযোগ্যতা নয়

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

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

ওভারলে ঠিকানাকে এন্ডপয়েন্ট থেকে আলাদা রাখুন

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

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

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