يضع الإعدادان 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 علوي مختلف عملية مختلفة، ولها عواقبها على كل علاقة ثقة ثبّتت القديمة. أبقِ التغييرين منفصلين في دليل التشغيل، وإلا سيُسجَّل نقل نقطة النهاية كإعادة إصدار.

عندما يتوقف الفرز، افصل الطبقتين صراحةً: هل يُرجع الاكتشاف نقطة النهاية المتوقعة، وهل تصل المصافحة إليها؟ إذا كان الاكتشاف صحيحًا وفشلت الحزم، فالمشكلة تحت الشبكة العلوية. وإذا كان الاكتشاف خاطئًا، فالمشكلة في الخريطة أو الإعلان، والإصلاح ينتمي هناك.

مقالات ذات صلة