لديك common name وعنوان في ملاحظاتك، وثلاثة أوامر تبدو جميعها كأنها تزيل عميلًا. واحد فقط يفعل ما تريد، ويعتمد الاختيار على ما إذا كنت تحتاج إلى إنهاء الجلسة التي تعمل الآن، أو رفض الدخول التالي، أو سلب حق الاتصال أصلًا. اقرأ الهوية التي تملكها فعلًا قبل أن تلمس أي شيء، لأن مجمّع OpenVPN يمنح العنوان نفسه للنفق لجلسة أخرى لاحقًا.

أي هوية تملكها فعليًا

ملف الحالة من الإصدار 3 هو نقطة البداية المعتادة. يحمل قسم CLIENT_LIST الـ common name والعنوان الحقيقي وعدّادات البايتات ووقت الاتصال؛ ويطابق قسم ROUTING TABLE عنوانًا افتراضيًا مع common name مع طابع زمني لآخر إشارة. الـ common name هو الهوية الثابتة. العنوان الافتراضي تخصيص، وقد يتغير العنوان الحقيقي خلف NAT بين الجلسات دون أن يتغير شيء على الخادم.

تعرض واجهة الإدارة صورة مشابهة عبر أمرها status وتضيف معرّف عميل لكل جلسة. هذا المعرّف هو ما يتوقعه client-kill، وليس عنوان النفق. إذا كنت تحتاج إلى معرفة أي common name تلقّى أي عنوان عند الاتصال، فإن بيئة سكربت client-connect تحوي الاثنين مع العنوان الخارجي الموثوق، لكن ذلك السكربت يعمل بمستخدم OpenVPN ويحتاج إلى مسار سجل قابل للكتابة.

What you holdWhere it came fromWhat it can act on
Common nameCLIENT_LIST, or the auth hookkill, and credential revocation
Client IDstatus on the management socketclient-kill, that one session
Tunnel addressROUTING TABLE, client-connect environmentNothing durable, the address is recycled

اقتل الآن، ارفض عند الدخول، ألغِ نهائيًا

أمرا الإزالة في واجهة الإدارة هما إجراءان على الجلسة. يأخذ kill اسم common name أو عنوانًا حقيقيًا ومنفذًا؛ ويأخذ client-kill معرّف العميل وينهي تلك النسخة فورًا. لا أحد منهما حجب: العميل المطرود بشهادة وكلمة مرور صالحتين يعيد الاتصال خلال ثوانٍ، وهذا جيد عند إعادة استخدام peer للاختبار ولا يفيد عند سرقة حاسوب محمول.

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

الإزالة الدائمة تقع تحت كل هذا. ألغِ الشهادة وتأكد أن crl-verify يشير إلى قائمة يعيد الخادم تحميلها فعلًا، أو عطّل ملف التهيئة الخاص بالعميل في دليل ccd، أو عطّل الحساب في أي خادم خلفي يستعلم منه خطاف المصادقة. والإلغاء ليس فوريًا أيضًا: مع الإعدادات الافتراضية لـ reneg-sec قد تستمر جلسة قائمة حتى تعيد التفاوض، لذا فإن إجراء الجلسة وإجراء بيانات الاعتماد متكاملان لا بديلان.

هل مقبس الإدارة حرّ؟

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

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

التسلسل الذي أنفذه على خادم حيّ

اتصل، واقرأ الحالة الحالية، وتصرّف بناءً على المعرّف الذي قرأته للتو، ثم اقرأه مرة أخرى. القيم المنسوخة من وثيقة هي أكثر طريقة شيوعًا لقتل الشخص الخطأ.

status                     # note the client ID and common name
client-kill 3              # end that session now
kill Test-Client           # alternative: by common name
status                     # confirm the session is gone

الاسم والرقم أعلاه عنصران نائبان، ويُعاد استخدام المعرّفات بعد انقطاع عملاء آخرين. تأكد من غياب السطر قبل أن تكتب أي شيء كمنجز، وتحقق من أن عدد العملاء المتصلين تحرّك بمقدار واحد لا بعدة أعداد.

تأكد من أنه بقي بعيدًا

سجّل الـ common name وعنوان النفق والعنوان الخارجي ودقيقة الإزالة. إذا ظهر الـ common name نفسه مرة أخرى بعد دقيقة، فقد نجح إجراء الجلسة ولم تنجح طبقة بيانات الاعتماد، وهذا إصلاح مختلف تمامًا عن إصلاح أمر لم يدخل حيز التنفيذ أبدًا.

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

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