ZeroTier إلى شبكة محلية: قواعد توجيه UFW لا السماح بمنفذ
السماح بمنفذ على البوابة ليس كإعادة التوجيه إلى مضيف خلفها. اضبط المسار المُدار وفعّل العبور واختر مسار العودة.
الوصول إلى طابعة على شبكة المكتب المحلية عبر عضو ZeroTier يبدو قاعدة واحدة، لكنه في الحقيقة ثلاثة قرارات في ثلاثة مواضع مختلفة. يجب أن تعرف الشبكة المتراكبة أين تقع الشبكة المحلية، ويجب أن يقبل مضيف Linux تمرير الحزم، ويجب أن تعرف الشبكة المحلية كيف ترسل الرد إلى الخلف. القاعدة الواردة التي تفتح منفذًا على البوابة لا تمس أيًّا من ذلك. إنها الأداة الخطأ على المضيف الصحيح.
ثلاث مهمات وثلاثة أصحاب
المسار المُدار يخص إعداد شبكة ZeroTier. وهو يخبر الأعضاء بأن بادئة معينة يمكن الوصول إليها عبر عنوان عضو محدد.
التمرير يخص نواة Linux ومن يملك سياسة الجدار الناري الخاصة بها. وهو يقرر ما إذا كانت الحزمة الواصلة على الشبكة المتراكبة ستغادر مرة أخرى عبر الواجهة الفيزيائية. والمضيف الذي لا يمرر سيسقط الحزمة بصمت بعد قبولها. ويرى المرسل مهلة ولا يظهر شيء في سجل الخدمة.
مسار العودة يخص الشبكة المحلية. يجب أن يعرف مضيفوها وموجّهها أن بادئة الشبكة المتراكبة يمكن الوصول إليها عبر عنوان الشبكة المحلية لبوابتك، وإلا وجب على شيء ما ترجمة حركة البيانات حتى لا تُطرح المسألة أصلًا.
يمكن أن يكون كل واحد من هذه صحيحًا بينما تفشل الأخرى، ولهذا فإن اختبارًا يكتفي ببينغ البوابة لا يثبت شيئًا عن الخدمة التي خلفها.
وجّه المسار المُدار إلى العضو
أضف مسارًا للبادئة المحلية المطلوبة عبر عنوان الشبكة المتراكبة للبوابة، لا عبر عنوانها المحلي. عنوان الشبكة المتراكبة هو ما يمكن لبقية الأعضاء الوصول إليه؛ أما العنوان المحلي فمعناه على السلك فقط.
يجب أن تقبل الأعضاء المسارات المُدارة ليعمل التصميم، ويجب ألا تستخدم شبكاتها المحلية البادئة التي تعلنها بالفعل. الحاسوب المحمول البعيد الموجود في المنزل على 192.168.60.0/24 لا يمكنه أيضًا توجيه 192.168.60.0/24 عبر الشبكة المتراكبة.
أبقِ البادئة المعلنة أضيق ما تسمح به المهمة. فإعلان تجميعة أكبر للتأثير على الأفضلية قد يطالب أيضًا بفضاء عناوين لا تملكه، ويظهر التعارض الناتج على الأجهزة المتصلة بالشبكتين معًا. وقد يجعل أيضًا عضوًا يفضّل مسارًا لا يؤدي إلى أي مكان. أبقِ المسار صادقًا واترك الباقي للسياسة.
اكتب البادئة وعنوان العضو في الملاحظة نفسها التي تحوي قواعد الجدار الناري، لأن الفشل الأكثر شيوعًا هو مسار يشير إلى عضو خاطئ.
فعّل العبور في النواة
اقرأ قيمة التمرير الجارية قبل تغيير أي شيء، ثم اجعل الإعداد دائمًا عبر الآلية التي يستخدمها نظامك بالفعل، لا عبر أمر لمرة واحدة يختفي عند إعادة التشغيل.
إذا كانت UFW تملك السياسة، فإن قواعد التوجيه الخاصة بها تعبّر عن التمرير لزوج من المصدر والوجهة والواجهة. وهي منفصلة عن القواعد الواردة التي تفتح خدمة على البوابة نفسها:
sysctl net.ipv4.ip_forward
sudo ufw route allow in on zt3f2a1c9d out on eth0 proto tcp to 192.168.60.20 port 443
sudo ufw status verbose
اسم الواجهة هو جهاز الشبكة المتراكبة الفعلي على ذلك المضيف، ويمكنك قراءته من ip link؛ وهو ليس نصًّا ثابتًا في كل التثبيتات. وإذا كان المضيف يمرر افتراضيًا و UFW ليست في المسار، فسيُهمل حكم التوجيه وتكون إعدادات النواة هي المهمة.
اختر كيف تعود الردود
مع الحفاظ على المصدر، ترى خدمة الشبكة المحلية عنوان الشبكة المتراكبة الحقيقي وترد عليه. وهذا يتطلب مسارًا على مضيف الشبكة المحلية أو على موجّهها يوجّه بادئة الشبكة المتراكبة إلى بوابتك، وهو تغيير خارج صندوق Linux.
عندما لا يمكن إضافة ذلك المسار، تجعل ترجمة المصدر المحدودة النطاق الطلب يبدو وكأنه جاء من البوابة على الشبكة المحلية. عندها تعود الردود محليًا ولا حاجة إلى تغيير توجيه الشبكة المحلية، بثمن فقدان المصدر الأصلي في سجلات الخدمة.
احصر الترجمة في مصدر الشبكة المتراكبة وفي وجهة الشبكة المحلية المحددة. أما ترجمة كل ما يغادر واجهة الشبكة المحلية فهي النسخة الواسعة التي تفاجئ لاحقًا كل من يقرأ القواعد، وهي تخفي أيضًا حركة كان يجب حجبها.
لا يمنح أي من الخيارين وصولًا غير مطلوب من الشبكة المحلية إلى أعضاء الشبكة المتراكبة كيفما اتفق. فإن أُريد ذلك فهو قاعدة منفصلة لها مراجعتها الخاصة.
اختبر من عضو حقيقي
اتصل من عضو آخر، لا من البوابة، واطلب خدمة واحدة مسموحًا بها. ثم جرّب خدمة يجب أن تبقى مغلقة، وأعد الاختبارين بعد إعادة الاتصال وبعد إعادة تشغيل البوابة.
العضو الذي يبلّغ عن حالة ONLINE، أو بينغ ناجح إلى عنوان الشبكة المتراكبة للبوابة، لا يتحقق من المسار ولا من قاعدة التمرير ولا من مسار العودة:
zerotier-cli listnetworks
ip -4 route get 192.168.60.20
sudo ufw status numbered
الأمر الثاني يبيّن الواجهة التي ستستخدمها الحزمة نحو مضيف الشبكة المحلية، والثالث يبيّن ما إذا كانت قاعدة التوجيه موجودة بالشكل الذي قصدته. فإن بدا الاثنان صحيحين وما زالت الخدمة تنتهي بمهلة، فمسار العودة هو المشتبه المتبقي.