يغطي بادئتان /1 عناوين IPv4 نفسها التي يغطيها بادئة واحدة /0، وهذا التطابق لا يصح إلا داخل قائمة البادئات المسموح بها للنظير. وهو يتوقف عن الصحة لحظة أن يقرر أداة الإعداد كيفية التوجيه، لأن wg-quick في لينكس يتعامل مع البادئة الافتراضية كحالة خاصة لا كعملية حسابية. فالفرع الخاص يثبّت جدولاً مخصصاً وقاعدتَي سياسة وعلامة مقبس وإعدادات المسار العكسي لا يحصل عليها زوج من المسارات النصفية أبداً. لذلك عندما يتوقف وكيل أو متصفح عن العمل بعد التعديل، تكون البادئات أقل أجزاء التغيير إثارة للاهتمام.

قائمة البادئات ليست كل الإعداد

AllowedIPs يؤدي وظيفتين في وقت واحد، وواحدة فقط منهما تتعلق بالتغطية. بالنسبة إلى WireGuard نفسه، القائمة هي توجيه مفاتيح التشفير: فهي تحدد الوجهات التي تُشفَّر نحو نظير، وعناوين المصدر التي يجوز لذلك النظير استخدامها. وبالنسبة إلى wg-quick تعمل القائمة نفسها كمواصفة توجيه، والمسار الذي تنتجه يعتمد على الفرع الذي تصادفه القائمة. لذا فإن التغطية المتطابقة عبر شكلين مختلفين للقائمة لا تقول شيئاً عن تطابق حالة المضيف.

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

ما يضيفه الفرع الافتراضي فوق المسار

يُدخل إدخال /0 أداة wg-quick في مسار المسار الافتراضي: يستقبل جدول توجيه منفصل الافتراضي، وقاعدة سياسة واحدة ترسل الحركة غير المعلَّمة إلى هناك، وقاعدة ثانية تُبقي مسارات الجدول الرئيسي الأكثر تحديداً هي المرجع، ويحصل الواجهة على علامة جدار حماية مطبَّقة على مقبسها الخاص. تلك العلامة هي حارس الحلقة. فحزم البيانات المشفرة التي تحمل حركة النفق تغادر والعلامة مضبوطة، حتى لا تبتلع القاعدة التي توجّه كل شيء آخر إلى النفق حزم النقل الخاصة بالنفق نفسه.

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

أين يفترق الترتيبان

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

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

اقرأ القواعد والعلامات قبل التعديل

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

ip rule show
ip -4 route show table all | grep -E 'default|wg1'
wg show wg1 fwmark
wg show wg1 endpoints

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

تدرّب على فقدان النفق قبل النشر

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

sudo ip -4 route add 198.51.100.20/32 via 192.0.2.1 dev eth0
ip -4 route get 198.51.100.20
sudo wg-quick down wg1

ينبغي أن يحسم بحث المسار نقطة النهاية من الواجهة الفيزيائية دون عبور النفق، وأن يترك إنزال الواجهة المضيف في الحالة التي وعد بها التصميم. والوكيل الذي يعمل بعد الاستبدال يثبت أن حالة المضيف المولَّدة كانت مهمة؛ لكنه لا يثبت أن منع الحلقات والسلوك في حالة الإيقاف نجوا من التعديل.

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