أوقف اتصال OpenVPN الصحيح: الواجهة الأمامية أو systemd أو NM
يعتمد الأمر الذي يقطع النفق على من بدأه. قارن مالكي الواجهة الأمامية وsystemd وNetworkManager وOpenVPN 3 قبل إرسال الإشارة.
إغلاق نافذة الطرفية ليس مثل إغلاق نفق، وقتل عملية ليس مثل إيقاف خدمة. على Linux يعتمد الأمر الذي يقطع الاتصال فعلاً على المكوّن الذي بدأ الاتصال وبالتالي يملك دورة حياته. تغطي المقارنة أدناه الترتيبات الأربعة التي يُرجَّح أن تصادفها، والمعرّف الذي يحتاجه كل منها.
العملاء في الواجهة الأمامية والعملاء الخفيّون
العميل الذي يبدأ يدويًا في طرفية ينتمي إلى تلك الطرفية. يرسل Ctrl+C مقاطعة، فيفكّ العميل واجهته وينتهي النفق. لا حاجة لإبلاغ أي شيء آخر.
العميل الذي يبدأ عبر غلاف صدفة ويُترك في الخلفية لا ينتمي إلى أحد بعينه، وهذه هي الحالة التي يلجأ فيها الناس إلى killall. ابحث عن العملية أولًا، وتأكد من أن سطر أوامرها يذكر الملف الشخصي المقصود، ثم أرسل إشارة الإنهاء العادية. العملية الخاضعة لإشراف إذا قُتلت من تحت مشرفها فستُعاد ببساطة، ولهذا فإن تحديد المالك أهم من اختيار الإشارة. لا ترسل الإشارة إلى مجموعة العمليات إلا بعد التأكد من عدم مشاركة أي نفق آخر لها.
SIGUSR1 ليس قطعًا للاتصال؛ بل يطلب من العميل إعادة تشغيل النفق.
نسخ systemd
عندما تملك وحدة الاتصال، تكون الوحدة هي الكائن الذي يجب إيقافه. تحمل نسخ القوالب مثل openvpn-client@office اسم الملف الشخصي، وإيقاف هدف القالب بدلًا من النسخة قد يؤثر على كل عميل على المضيف.
systemctl list-units 'openvpn-client@*'
systemctl stop [email protected]
اقرأ ExecStart الخاص بالوحدة عندما لا تكون متأكدًا من الملف الشخصي الذي حمّلته النسخة.
الوحدة الممكّنة ستعود عند الإقلاع التالي، وهذا قرار منفصل عن إيقافها الآن. عطّلها فقط بعد أن تقرر أن الاتصال لا يجب أن يعود، وسجّل ذلك القرار حيث يجده المسؤول التالي.
ملفات NetworkManager الشخصية
الملف الشخصي الذي يديره NetworkManager ليس عملية يمكنك إرسال إشارة إليها. المدير يملك دورة الحياة، والكائن الذي يجب التصرف عليه هو الاتصال النشط، ويُعرَّف بـ UUID لا بالاسم المعروض. قراءة القائمة النشطة أولًا تُظهر أيضًا ما إذا كان نفق ثانٍ يعمل باسم لم تتوقعه.
nmcli connection show --active
nmcli connection down uuid actual-uuid
تتكرر الأسماء المعروضة، واسم ملف الملف الشخصي ليس معرّفه، لذا انسخ UUID من القائمة. إذا عاد الاتصال فورًا، فشيء ما يعيد تنشيطه: إدخال secondaries على اتصال أساسي، أو سكربت موزّع، أو علامة اتصال تلقائي. إيقاف اتصال المدير هو الخطوة الأولى الصحيحة، وإعادة التنشيط هي السؤال التالي. لا تحذف الملف الشخصي لإيقاف إعادة التنشيط، لأن ذلك يزيل أيضًا بيانات الاعتماد التي قد تحتاجها غدًا.
تشرح وثائق أوامر المدير كيف يُختار هدف الإيقاف.
جلسات OpenVPN 3
يستخدم OpenVPN 3 Linux نموذج جلسات بدلًا من عملية لكل نفق. تفحص الجلسات التي تعرفها الخدمة، ثم تتصرف على مسار جلسة واحد. المسار هو المعرّف، وهو ليس قابلًا للتبادل مع اسم إعداد.
openvpn3 sessions-list
openvpn3 session-manage --path /net/openvpn/v3/sessions/... --disconnect
قطع كل الجلسات إجراء مختلف، وينبغي أن يكون متعمدًا.
يمكن أن يستضيف المضيف نفسه جلسات لعدة مستخدمين، لذا اسرد قبل التصرف وتأكد من مالك الجلسة التي أنت على وشك إنهائها.
ما يجب التحقق منه بعد ذلك
تحقق من ثلاثة أشياء بعد أي من هذه الإيقافات: قائمة الاتصالات النشطة لم تعد تحتوي على النفق، والواجهة اختفت، واستعلام المسار لعنوان داخلي لم يعد يختار جهاز نفق. ثم قرر ما سيحدث عند الإقلاع التالي.
ip -brief address
ip route get 10.8.0.1
إزالة واجهة يدويًا لا توقف المالك، وتترك التنظيف نصف مكتمل.
قطع الاتصال الآن، ومنع البدء التلقائي التالي، والسماح بحركة مرور غير VPN بعد ذلك ثلاثة خيارات منفصلة. اجعل كل واحد منها صريحًا.