Nebula static_host_map: العنوان الذي لا تستطيع المنارة تقديمه
تقرن الخريطة عنوانًا فوقيًا بنقاط نهاية يمكن الوصول إليها على الشبكة العادية. هذا الاقتران هو ما يجعل المصافحة الأولى ممكنة.
تستطيع كل منارة أن تخبر مضيفًا عن كل نظير آخر، إلا عن المكان الذي تقيم فيه المنارة نفسها. لا بد أن يكون شيء ما معروفًا قبل أن يوجد التداخل الشبكي، وتضع Nebula ذلك الشيء في خريطة صغيرة واحدة. تقرن الخريطة هوية فوقية بعنوان يعمل على الشبكة العادية. كل ما يُتعلم لاحقًا يتوقف على صحة ذلك الاقتران.
عنوانان بمهمتين
يملك كل مضيف في Nebula عنوانًا فوقيًا يبقى ثابتًا بينما ينتقل الجهاز بين الشبكات. هذا العنوان هو الهوية التي تستخدمها الشهادات وقواعد جدار الحماية وعلاقات النظير، وهو في حد ذاته لا يوجّه إلى أي مكان. نقطة النهاية القابلة للوصول شيء مختلف: اسم مضيف أو عنوان على الشبكة الأساسية مع منفذ UDP، ويتغير كلما غيّر الجهاز موقعه. الخريطة الساكنة هي الوصل بين الاثنين.
لا يدخل الخريطة إلا المضيفات التي يجب طلبها على البارد، وهذا يعني عادة المنارات وربما مرحّلًا. إبقاء تلك القائمة قصيرة هدف تصميمي، لأن كل إدخال يدوي يصبح حقيقة يجب على أحدهم صيانتها. الخلط بين نوعي العنوان هو خطأ الإعداد المعتاد: عنوان عام موضوع في قائمة المنارات لا يجعل الاكتشاف يبدأ.
الهوية توضع حيث تُتوقع الهوية. قابلية الوصول توضع في الخريطة.
static_host_map:
"10.42.0.1": ["lighthouse-01.example.net:4242"]
lighthouse:
am_lighthouse: false
hosts:
- "10.42.0.1"
تشريح إدخال في الخريطة
المفتاح هو العنوان الفوقي مكتوبًا كسلسلة بين علامتي اقتباس، والقيمة قائمة بنقاط النهاية، لذا يمكن لهوية واحدة أن تملك عدة نقاط دخول. تحمل كل نقطة نهاية اسم مضيف ومنفذًا، ويجب أن يطابق المنفذ ما يستمع إليه الطرف الآخر فعليًا. القيمة الافتراضية في Nebula هي UDP 4242، وهي نقطة بداية لا وعد بشأن نشرك.
تكون نقاط النهاية المتعددة مفيدة عندما تملك المنارة أكثر من مسار للدخول، مثل عنوان عام وعنوان خاص للمضيفات على نفس المقطع. يجرّبها العميل بالترتيب، لذا ضع الأكثر موثوقية أولًا. مع IPv6، ضع العنوان بين قوسين قبل إضافة المنفذ؛ الخطأ في ذلك ينتج خطأ تحليل يشير إلى السطر الخطأ.
المنفذ الخاطئ ينتج صمتًا بدلًا من خطأ، لأن UDP لا يملك مصافحة يرفض بها. لذلك يستحق تنسيق الإدخال أن يُفحص مقابل مرجع static_host_map في Nebula بدلًا من الذاكرة. يغطي المرجع أيضًا قوائم نقاط النهاية وسلوك تحديث DNS.
يجب أن يعمل الإقلاع قبل التداخل الشبكي
يجب أن يُحل اسم DNS في الخريطة عبر المحلل الذي يملكه المضيف قبل وجود أي نفق، وهو محلل النظام العادي. اختبره من الجهاز نفسه، عند الإقلاع، مع إيقاف التداخل الشبكي. الاسم الذي لا يُحل إلا عبر DNS الخاص بالتداخل الشبكي لا يمكن أن يقلع التداخل الشبكي. ينطبق الاختبار نفسه على المسار: قاعدة جدار حماية تسمح بالتداخل الشبكي لكن ليس بالتبادل الأول لـ UDP تحجب الحزمة الأولية.
افحص المنفذ بأداة UDP بدلًا من افتراض أنه مفتوح. تأكد من أن أي إعادة توجيه منفذ على المسار تستهدف المضيف الداخلي الصحيح وأن مسار عودة موجود. إذا حُلّ اسم المضيف إلى عدة عناوين، اختبر كل واحد، لأن العميل قد يختار عنوانًا لم تفحصه قط.
تُطلب الإدخالات الساكنة مباشرة ولا تستشير منارة أبدًا. لهذا يبدو الفشل هنا كمهلة عادية دون أي نظير.
ما يحدث بعد المصافحة الأولى
بمجرد أن يصل مضيف إلى منارة، يتعلم عن النظائر وعناوينهم القابلة للوصول دون مزيد من الإدخالات اليدوية. المضيفات التي تحركت منذ الاتصال الأخير تصبح قابلة للاكتشاف عبر تلك القناة. هذا هو عائد إبقاء الخريطة اليدوية صغيرة.
يمكن للمضيفات أيضًا الإعلان عن عناوين إضافية قابلة للوصول خاصة بها، وهكذا يساعد نظير خلف عنوان عام معروف الآخرين على إيجاده. تلك الإعلانات تُتعلم ولا تُكتب في الخريطة الساكنة.
يهم سلوك التحديث لنقاط النهاية المكتوبة كأسماء DNS، لأن العنوان المحلول قد يتغير بينما تستمر العملية في العمل. تتحكم إعدادات Nebula في كيفية حدوث تلك الاستعلامات، بما في ذلك أي محلل يُستخدم، فاقرأها بدلًا من افتراض الافتراضي في النظام. على مضيف يتغير محلله عند ظهور نفق، قد يحوّل الإعداد الخاطئ إقلاعًا ناجحًا إلى اسم يتوقف عن الحل في منتصف الجلسة. تثبيت الاستعلام على محلل مستقر هو غالبًا الفرق بين تداخل شبكي موثوق وآخر متقطع.
عندما يعمل الاكتشاف ولا يعمل نظير واحد
إذا كانت المنارات قابلة للوصول ويتصل معظم النظائر، فالإقلاع ليس المشكلة. الزوج المتبقي إما لا يستطيع إيجاد مسار صالح بينهما أو يفشل فوق مستوى قابلية الوصول. إضافة تهجئة أخرى لعنوان المنارة لا يمكن أن تصلح أيًا من الحالتين.
افحص الزوج قبل تعديل الخريطة التي يعتمد عليها كل شيء آخر بالفعل. تغيير الخريطة يزعج كل مضيف، لذا هو آخر ما يُلمس وليس أوله.
ابدأ بشهادات من الجهة نفسها، لأن مصافحة مرفوضة قد تبدو من بعيد كنظير غير قابل للوصول. ثم افحص ما إذا كان الزوج يستطيع إنشاء مسار مباشر وما إذا كان مرحّل مُعدًّا للشبكات التي ترفض الحركة المباشرة. يضيف المرحّل قفزة واعتمادًا، لكنه إجابة مدعومة، وإصلاح مسار النظير مهمة مختلفة عن إصلاح الاكتشاف.