عقدة خروج ZeroTier لا تعمل؟ تحقّق من المسار وNAT والعميل
مسار 0.0.0.0/0 في العميل ليس خروجًا. يجب أن تمرّر العقدة الحزم وتترجمها، وأن تعلن الشبكة المسار، وأن يقبله العميل.
يعرض جدول المسارات مسارًا افتراضيًا عبر واجهة ZeroTier، وتقول الشبكة إنها متصلة، ومع ذلك ما زال المتصفح يخرج من عنوان مزوّد الخدمة المحلي. هذا المزيج شائع وليس خطأً في العميل. المسار الافتراضي يحدّد فقط إلى أين تُوجَّه الحزم؛ ولا بد من جهة تمرّرها وتترجمها في الطرف الآخر. يجب أن تتحقق ثلاثة أجزاء منفصلة قبل أن تعمل عقدة الخروج.
المسار موجود لكن لا شيء يخرج
افحص جدول مسارات العميل أولًا. سطر مثل default via 10.147.20.5 dev zt0 يثبت أن المسار ثُبّت، لا أن الوجهة ستقبل الحركة. يجب أن تكون القفزة التالية عضوًا مستعدًا وقادرًا على تمريرها.
إذا كان الطلب نفسه ما زال يخرج عبر الواجهة الفيزيائية، فالعميل لم يثبّت المسار، أو ثبّته بمقياس خسر أمام المسار الافتراضي المحلي. وإذا اختفى الطلب بعد تثبيت المسار، فعضو الخروج يتلقى الحزم ويفشل في تمريرها أو ترجمتها. والعميل الذي يحتفظ بالمسار الافتراضي الفيزيائي لا يرسل أي حزمة إلى الخروج إطلاقًا.
هذا التمييز يحدّد أين تعمل. مقارنة عنوان عام قبل التغيير وبعده تفصل بين مسار لم يُستخدم قط ومسار استُخدم ثم أُسقط، وتتطلب أمرًا واحدًا بدل مراجعة الإعداد كله. أجرِ المقارنة قبل تغيير أي شيء آخر، حتى تكون النتيجتان من حالة بداية واحدة.
ثلاثة أجزاء يجب أن تتحقق جميعها
الخروج سلسلة، والحلقة الأضعف تحدّد العَرَض. يسرد الجدول أدناه الحلقات بالترتيب الذي تفشل فيه عادة.
| Part | Where it lives | What a failure looks like |
|---|---|---|
| Forwarding and NAT | Exit node kernel and firewall | Traffic arrives, no reply |
| Managed default route | ZeroTier network controller | No default via the tunnel on the member |
| Client acceptance | Member's per-network setting | Route offered but not installed |
| DNS behavior | Client resolver configuration | Pages fail by name, IP works |
الصف الأول هو ما يخفيه اسم الخيار. لا يصبح العضو خروجًا إلا عندما تمرّر نواته الحزم بين واجهة ZeroTier والواجهة المتصلة بالإنترنت، وعندما يُترجم مسار الرد عائدًا إلى النفق. بدون هذا التمرير، يكون العضو نظيرًا لا بوابة.
صف المتحكّم إذن لا إعداد. إعلان 0.0.0.0/0 عبر عضو يخبر كل عميل أين الخروج؛ لكنه لا يجعل ذلك العضو قادرًا على حمل الحركة. ولا يتحقق من أن لدى العضو مسارًا عاملًا إلى الإنترنت. وتغطي وثائق عقدة الخروج من ZeroTier هذا الفصل نفسه بين العقدة والمسار والعميل.
اضبط عقدة الخروج للتمرير والترجمة
فعّل تمرير IPv4 بشكل دائم، ثم أضف ترجمة عنوان المصدر NAT للحركة الخارجة من واجهة WAN. يجب أن تسمح قواعد التصفية بالتدفق الممرَّر في الاتجاهين، لأن التمرير والترجمة منفصلان عن الإذن:
sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i zt0 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o zt0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPTاستبدل zt0 و eth0 بالأسماء على المضيف؛ فالقاعدة المحفوظة لواجهة مثال لا تتبع الحزم على واجهة حقيقية. اجعل التغييرات دائمة عبر مدير الجدار الناري الذي يملك القواعد، لأن أمرًا في صدفة تفاعلية يختفي عند إعادة التشغيل التالية.
إذا كان المضيف يشغّل مدير جدار ناري مثل UFW أو firewalld، أضف القواعد عبر ذلك المدير بدل تكديس أسطر iptables إلى جانبه. مالكَان يعدّلان السلاسل نفسها ينتجان سياسة تعتمد على ترتيب الإقلاع. الترتيب مهم عندما يولّد المدير سلاسله الخاصة. اختبر من عميل بعد إعادة تحميل المدير، لا قبل ذلك.
أعلن المسار واقبله على العميل
على متحكّم الشبكة، أضف مسارًا مُدارًا لـ 0.0.0.0/0 تكون قفزته التالية عنوان ZeroTier لعضو الخروج. ثم على العضو الذي ينبغي أن يستخدمه، اسمح بالتجاوز لتلك الشبكة. الإذن محلي: لا يعيد تهيئة الأعضاء الآخرين ولا يغيّر المتحكّم.
zerotier-cli listnetworks
zerotier-cli set <network-id> allowDefault=1
ip route get 1.1.1.1ينبغي أن يُبلّغ الأمر الأخير عن واجهة ZeroTier وعنوان عضو الخروج. إذا كان ما زال يُبلّغ عن الواجهة الفيزيائية، فالمسار مفقود أو أن مسارًا افتراضيًا منافسًا له مقياس أفضل.
أبقِ الإعداد محصورًا في الشبكة التي تحتاجه. فالسماح بقبول المسار الافتراضي عالميًا، أو على شبكة ينبغي أن توفّر شبكة فرعية خاصة فقط، يمرّر الحركة عبر خروج لم يُصمَّم لها قط.
تحقّق من الخروج وافحص عائلات العناوين الأخرى
اطلب عنوانًا عامًا من خدمة تبلّغ عن المصدر، وقارنه بعنوان WAN لعقدة الخروج. ثم حمّل موقعًا باسمه للتأكد من أن DNS ما زال يُحلّ، واختبر تطبيقًا مهمًا بدل المتصفح فقط.
يمكن لعميل ثنائي المكدّس أن يواصل استخدام مسار IPv6 الأصلي بينما يخرج IPv4 عبر ZeroTier. وإذا كان الهدف إخفاء كل الحركة أو التحكم بها، فيلزم مسار ::/0 منفصل وتمرير IPv6 على الخروج، واختبار IPv4 لا يقول شيئًا عنهما.
يمكن لتصفية المسار العكسي في Linux أن تُسقط أيضًا حركة خروج صحيحة على العميل. توثّق ZeroTier اعتبارًا بشأن rp_filter للأعضاء المشاركين؛ غيّر ذلك الإعداد عن قصد وبعد تأكيد المسار وNAT فقط، لا كأول تجربة.
إذا كانت الحاجة هي الوصول إلى NAS أو شبكة فرعية لمكتب واحد، فالمسار المُدار لذلك البادئة تغيير أصغر وأكثر أمانًا من خروج كامل. تمرير كل التصفح عبر جهاز آخر قرار مختلف عن الوصول إلى مورد خاص واحد، ويستحق مراجعة منفصلة.