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

تابع جلسة واحدة من الخيارات إلى الخطاف

ابدأ من حيث تُنشأ الجلسة. يشغّل xl2tpd البرنامج pppd بملف الخيارات الذي يحدده pppoptfile لذلك النفق، لذا تُحدَّد هناك الإضافة ورقم الوحدة وأي علامة ملف تعريف بدلًا من ملف عام. قد يولّد مدير الاتصال خياراته الخاصة، ما يعني أن تحرير /etc/ppp/options ليس دليلًا على أن النفق الذي يهمك قد تغيّر. عندما يرتفع الرابط، يشغّل pppd سكربتات الإشعار من موزّع التوزيعة. تتلقى تلك السكربتات اسم الواجهة كوسيطة أولى، وعلامة ملف التعريف كوسيطة سادسة.

تحمل البيئة الوقائع نفسها بأسماء مثل IFNAME وكذلك PPP_IPPARAM، لكن توافرها يعتمد على الموزّع المثبَّت. اقرأ الموزّع قبل الاعتماد على متغير: بعض التوزيعات تحتفظ بترتيب الوسائط الأصلي، وأخرى تصفّي البيئة قبل استدعاء سكربتك. السكربت الذي يستخدم $1 والوسيطة السادسة فقط يعمل في الحالتين.

اقرأ الواجهة من الاستدعاء

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

ipparam office-vpn

أرفق علامة ملف تعريف حيث تُعرَّف الخيارات، لا في السكربت. بهذا السطر في ملف خيارات النفق، تحمل كل جلسة تُنشأ من ذلك الملف office-vpn كوسيطة سادسة لها. يمكن للسكربت أن يتفرّع حسب العلامة بينما يعمل على الواجهة الحقيقية. أبقِ الاثنين منفصلين في الشيفرة، لأن العلامة ثابتة والواجهة تُخصَّص لكل جلسة.

اطلب اسمًا فقط عندما يكون الرفض صحيحًا

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

ifname ppp-office

يتصرف خيار ifname بشكل مختلف: إذا كان الاسم المطلوب مستخدمًا بالفعل أو تعذّر تعيينه، يخرج pppd بدلًا من اختيار اسم آخر. ذلك اختيار سياسة، لا إعادة تسمية تجميلية. استخدمه عندما يجب رفض نسخة ثانية متزامنة من ملف التعريف نفسه، وتأكد من أن pppd المثبَّت ومدير الاتصال يمرّران الخيار.

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

اجعل التفكيك مطابقًا للجلسة التي هيّأتها

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

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

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

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