يُظهر ZeroTier العضو بحالة OK، والشبكة منضمَّة، ومع ذلك لا يوجد عنوان يمكن اختباره. هذه التركيبة تبدو كخطأ برمجي وهي في الغالب انقسام في الإعداد: الموافقة على عضو مفتاح، ومنحه عنوانًا مفتاح آخر. يمكن للشبكة أن تقبل جهازًا وألّا تسنده شيئًا أبدًا، لأن تجمع العناوين أو وضع الإسناد لم يُضبط قط.

اقرأ الجانبين قبل أن تغيّر أيًّا منهما. الجواب ظاهر في مكانين، وواحد فقط منهما على المتحكّم.

التصريح والإسناد مفتاحان مختلفان

يجيب التصريح عن سؤال هل يجوز لهذه العقدة أن تشارك في الشبكة. ويجيب إسناد العناوين عن سؤال ماذا تمنحها الشبكة بعد مشاركتها، ويأتي هذا الجواب من تجمع عناوين مضافًا إليه وضع إسناد. لا يستلزم أيٌّ من الإعدادين الآخر. أحدهما إذن والآخر تخصيص.

يحمل إعداد المتحكّم عادةً مسارًا مُدارًا ونطاق عناوين والوضع الذي يحدّد ما إذا كان الإسناد التلقائي مستخدمًا. نسخ معرّف شبكة من بيئة أخرى يجلب العضوية ولا يجلب شيئًا من ذلك الإعداد.

لهذا قد يبدو الجهاز سليمًا في قائمة الأعضاء بينما يبقى عمود العنوان المُسند فارغًا. لقد قبله المتحكّم وليس لديه ما يمنحه. العبارتان صحيحتان في الوقت نفسه.

LayerWhat it decidesWhere it is configured
MembershipWhether the node may joinMember authorization on the network
PoolWhich addresses exist to hand outNetwork address range
Assignment modeWhether they are handed out automaticallyNetwork v4/v6 assignment settings

قراءة الحالة الفعّالة للعضو

اسأل العميل عمّا تلقّاه فعلًا لا عمّا قصده المتحكّم. تعرض القائمة العادية عمودي الحالة والعنوان، ويعرض صيغة JSON إعداد الشبكة الذي طبّقه العميل، بما في ذلك العناوين والمسارات المُدارة.

zerotier-cli listnetworks
zerotier-cli -j listnetworks | jq '.networks[] | {nwid, status, assignedAddresses}'

قارن المخرَجين لمعرّف الشبكة نفسه، لا للمحولات الفيزيائية التي تظهر في قائمة نظام التشغيل نفسه. الصف الذي يعلن OK مع مجموعة عناوين فارغة يؤكد فجوة الإسناد لا عطل اتصال. وقراءة الصف الخطأ هي النصف الآخر من هذا الخطأ.

حالة ACCESS_DENIED تشير رجوعًا إلى التصريح، وذلك إصلاح مختلف. وإذا تعذّر على الأمر قراءة رمز المصادقة المحلي كليًّا، فالمشكلة في الأذونات المحلية لا في رفض المتحكّم، والإصلاح على الجهاز الذي تجلس أمامه.

حين يتجاهل العميل ما يرسله المتحكّم

للعميل إعداداته الخاصة التي تحدّد ما إذا كان الإعداد المُدار يُطبَّق. الملف الشخصي الذي يعطّل العناوين المُدارة أو المسارات المُدارة أو التعامل مع المسار الافتراضي سيتجاهل ما ترسله الشبكة، وستبقى قائمة الأعضاء صحيحة من جهة المتحكّم.

تلك الأعلام تخصّ العقدة المحلية وحدها. تغييرها لا يغيّر ما يتلقاه الأعضاء الآخرون، ولا يصلح تجمعًا لم يُعرَّف قط.

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

ما ينبغي إصلاحه بدل اختراع عنوان

كتابة عنوان ثابت عشوائي هو الخيار الثالث المُغري وأسوأها. العنوان العشوائي قد يتعارض مع عقدة أخرى، أو يقع خارج المسارات التي تنشرها الشبكة، أو يدخل نطاقًا تتعامل معه قواعد جدار الحماية بشكل مختلف. كما أنه يخفي التجمع الغائب عن كل من ينظر إلى الشبكة لاحقًا. أصلح الإسناد بدلًا من ذلك، ودع المتحكّم والعميل يتفقان على النتيجة.

اسأل المدير عمّا يُفترض أن تمنحه الشبكة، ثم تحقّق من أن التجمع يغطي النطاق المقصود وأن وضع الإسناد مُفعَّل. أعد الانضمام بعد التغيير بدل أن تتوقع أن يصل العميل بنفسه إلى إعداد جديد فورًا.

بمجرد ظهور عنوان، اختبر ما كنت تحتاجه فعلًا: قرينًا أو خدمة أو شبكة فرعية خلف بوابة. الوصول إلى LAN خلف عضو يحتاج توجيهًا وتحويلًا يتجاوز العضوية، والوصول العام إلى الإنترنت يحتاج عقدة خروج، لذا فالعنوان العامل بداية ذلك الاختبار لا نهايته.

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