اختبر توجيه VPN داخل فضاءات الأسماء دون لمس مسارات المضيف
ثلاثة أدوار محاكاة، وثلاثة سياقات معزولة، وواجهة veth واحدة لكل رابط. قارن مختبر فضاءات الأسماء بمختبر مسارات المضيف قبل أن تلمس المضيف.
يمكن لمختبرين أن يحاكيا البنية نفسها لشبكة VPN ويفشلا بطرق مختلفة تماماً: أحدهما يعيش في فضاءات أسماء الشبكة، والآخر على مسارات المضيف نفسه. يحتفظ إصدار فضاءات الأسماء بكل واجهة ومسار ومقبس داخل سياق يمكنك حذفه، بينما يبدأ إصدار المضيف أسرع ويترك حالة خلفه. تلك الحالة المتبقية هي سبب صعوبة تكرار المختبر الثاني بعد شهر. قارن التنظيف أولاً، لأنه يحدد ما إذا كان بإمكانك تشغيل التجربة مرتين.
طريقتان لبناء المختبر نفسه، ومتى تتفوق كل منهما
في مختبر مسارات المضيف تضيف واجهة نفق ومسارات إلى الآلة التي تعمل عليها، فتتقاسم التجربة المصير مع صدفتك ومدير حزمك وكل اتصال آخر. في مختبر فضاءات الأسماء يحصل كل دور على مكدسه الخاص من الواجهات والعناوين والمسارات والمقابس، وحذف فضاء الأسماء يزيل كل ذلك. لا أحد النموذجين أصح من الآخر، لأنهما يجيبان عن سؤالين مختلفين. اختر فضاءات الأسماء عندما يكون الموضوع التوجيه وإعادة التوجيه، ومختبر المضيف عندما يكون الموضوع كيفية تكامل عميل سطح مكتب واحد.
| Aspect | Namespace lab | Host-route lab |
|---|---|---|
| Isolation | Full stack per role | Shares the host stack |
| Cleanup | Delete named namespaces | Manual route and rule removal |
| Realism | Strong for routing | Needed for GUI clients |
خلط الاثنين هو الخطأ المعتاد: مختبر فضاءات أسماء يُختبر مقابل عميل مضيف فقط لا يثبت شيئاً عن أي من الترتيبين. قرر أي سؤال تطرح قبل إنشاء أول رابط.
سياق واحد لكل دور، متصل عن قصد
أنشئ فضاء أسماء واحداً لكل دور وانقل كل طرف من كل زوج veth إلى السياق الذي يملكه. الأوامر الأربعة الأولى تكفي لرؤية الشكل:
ip netns add client
ip netns add gateway
ip link add veth-c type veth peer name veth-g
ip link set veth-c netns clientأعط المختبر نطاقات لا تتقاطع مع أي شيء على المضيف، واكتب قبل البدء أي فضاء أسماء يملك أي عنوان. يحتاج المختبر العامل إلى مسارين منفصلين: مسار خارجي ليصل طرف VPN إلى نظيره، ومسار عودة للمورد الذي تجري حمايته. صممهما كقرارين، لأن المختبر الذي يبني النصف الصادر فقط ينجح في اختبار مصافحة ويفشل في اختبار تطبيق.
دور إعادة التوجيه هو حيث تصبح المختبرات مثيرة للاهتمام
على أحد الأدوار أن يعيد التوجيه، وهذا يعني تمكين إعادة التوجيه داخل فضاء الأسماء ذلك وإضافة القاعدة التي يحتاجها التصميم. حالة إعادة التوجيه لكل فضاء أسماء، لذا فإن إعداد المضيف لا علاقة له بالمختبر وإعداد المختبر لا يتسرب إلى الخارج، كما تصف وثائق فضاءات أسماء الشبكة. توثق WireGuard أن واجهة ومقبسها الخارجي يمكن أن يعيشا في فضاءي أسماء مختلفين، وهذا حيلة مفيدة وطريقة ممتازة لإرباك نفسك. لا تفترض أن نقل واجهة ينقل كل جزء من الاتصال بالطريقة نفسها.
افحص عداد إعادة التوجيه بعد حزمة اختبار، لأن قاعدة لم تطابق قط وقاعدة أسقطت الحزمة تبدوان متطابقتين في جدول المسارات. العدادات وحدها تفصلهما.
سجل خط أساس، ثم اكسر مساراً واحداً
ابدأ بتسجيل ما هو موجود، مع كتابة السياق بجانب كل سطر. اقرأ فضاءات الأسماء، ثم المسار الذي ستسلكه وجهة اختبار داخل أحدها، ثم العدادات على الرابط الذي يحملها:
ip netns list
ip -n client route get 10.0.0.5
ip -n gateway -s link show veth-gالأمر الثالث هو الذي يتخطاه الناس، وهناك تكمن الأدلة: عدادات الإسقاط والأخطاء تخبرك هل وصلت الحزمة إلى دور إعادة التوجيه أصلاً. سجل المشاهد الثلاثة نفسها بعد تغيير، ودع الفرق يكون الدليل بدلاً من ذاكرتك عنه. ثم اكسر شيئاً واحداً بالضبط، إما بحذف مسار أو بإضافة قاعدة رفض على مسار إعادة التوجيه، وتأكد من العَرَض الذي توقعته: مصافحة مكتملة بلا رد، أو فشل في حل الاسم بدلاً من انتهاء المهلة. المختبر الذي يبرهن على النجاح فقط يعلم القليل جداً.
التنظيف هو ما يجعل التشغيل التالي قابلاً للتكرار
أبقِ التنظيف محصوراً في الموارد التي سميتها، لأن إعادة ضبط جدار حماية شامل أو إزالة مسار مضيف ليست قابلية تكرار، بل حادثة ثانية. احفظ الطوبولوجيا والأوامر الدقيقة والملاحظات التي توقعتها، كي يعيد التشغيل التالي إنتاج الفشل نفسه بدلاً من تخمين أي سياق حمل الحالة السابقة. بدون ذلك السجل يصبح المختبر حكاية لا إجراء.
استخدم بيانات اعتماد مولدة محلياً للمختبر، وأبعد حسابات الإنتاج عن الأمثلة المشتركة. ثم احذف كل فضاء أسماء وتأكد من أن منظر المضيف لم يتغير، وهذا هو السبب الكامل لاختيار هذا النموذج. المختبر الذي لا يمكنك إزالته بنظافة هو تغيير في المضيف بخطوات إضافية.