خدمة OpenVPN تفشل في ملف تعريف تفتحه الواجهة الرسومية: خمسة فحوص
الملف نفسه، ومشغّل مختلف. افحص مجلد العمل، وحساب الخدمة، وسمة الملف المشفّر، والمالك، ثم الغلاف.
يشغّل مُشغّلان الملف نفسه على جهاز واحد، ولا يتصل إلا الواجهة الرسومية. الملف سليم والمُثبّت على الأرجح بخير؛ ما يختلف هو السياق الذي يمنحه كل مُشغّل إلى openvpn.exe. مجلد العمل وهوية الحساب وسمات الملف كلها تنتقل مع ذلك السياق. افحصها بهذا الترتيب وتوقف عند أول واحد يفسّر الخطأ.
تأكيد أي مُشغّل يفشل
ابدأ بإثبات الانقسام. إذا اتصلت الواجهة الرسومية ولم تتصل الخدمة مع مسار الملف نفسه، فالملف مقروء لشخص ما ويصبح السؤال من يقرأه ومن أين. إذا فشل الاثنان، فالملف تالف ولا ينطبق أي من هذا. دوّن اسم الخدمة والملف الدقيق الذي طُلب منها تحميله.
قد لا تحمّل خدمة موجّهة إلى مجلد بدء التشغيل التلقائي الخاص بها الملف الذي فتحته في محرر. قارن المسار في إعدادات الخدمة بالمسار في الواجهة الرسومية، حرفًا بحرف، لأن اسم مجلد زائد أو حرف قرص مختلف يكفي ليدفعك إلى الفرع الخطأ.
أين تُحل المسارات النسبية
الملف الذي يشير إلى ca.crt أو إلى سكربت مساعد باسم مجرد يطلب بحثًا نسبيًا إلى مكان وجود العملية. تبدأ الواجهة الرسومية في مجلد الإعدادات، فتُحل تلك الأسماء. أما الخدمة التي يبدأها مدير الخدمات فليس لها نقطة بداية كهذه، ويفشل البحث قبل قراءة أي شهادة. لهذا يعمل الملف نفسه في مُشغّل ولا يعمل في الآخر.
أعطِ الغلاف مجلدًا ليبدأ فيه، أو اجعل كل إشارة مطلقة. إعادة إنتاج سياق الواجهة الرسومية على سطر أوامر تبدو هكذا:
openvpn --cd "C:\VPN\profiles\office" --config "C:\VPN\profiles\office\office.ovpn"
رفع مستوى الإسهاب في ذلك الأمر يُظهر المسار الدقيق الذي جُرّب. افعل ذلك قبل تغيير الأذونات، لأن ملفًا مفقودًا وقراءة مرفوضة يحتاجان إلى إصلاحين مختلفين. السجل الافتراضي لا يميز بينهما. علم إضافي واحد يوفر ساعة من التخمين.
عندما تعجز هوية الخدمة عن القراءة
تعمل الخدمة بهوية نظام، لا بهويتك. قائمة وصول تمنح مستخدمك تحكمًا كاملًا ولا تمنح أحدًا غيره تفشل هناك بينما تعمل تمامًا في جلستك. والملف المحفوظ على قرص معيّن أو مشاركة موثقة يفشل للسبب نفسه. أكّد أذونات الملف قبل أن تنظر إلى أي شيء آخر.
الفحص هو قراءة للأذونات الفعلية بالإضافة إلى قراءة تُجرّب بهوية الخدمة. نفّذ الجزء الأول من موجّه أوامر مرفوع:
icacls "C:\VPN\profiles\office\office.ovpn"
ثم جرّب القراءة نفسها بهوية الخدمة، مثلًا باستخدام psexec -s -i من Sysinternals، وراقب ما إذا كان الملف يُفتح. إن لم يُفتح، فلن يساعد أي إصلاح للمسار. أصلح قائمة الوصول أو انقل الملف إلى موقع تستطيع هوية الخدمة القراءة منه.
تشفير على مستوى الملف هو الحالة الثانية الأندر. الملف الموسوم بسمة نظام تشفير الملفات (Encrypting File System) يُفك تشفيره بشفافية للمستخدم الذي شفّره ويبقى غير مقروء لحساب خدمة. لهذا يُفتح الملف نفسه في محررك وليس تحت الخدمة.
السمة ظاهرة من موجّه أوامر مرفوع، والتحقق منها لا يفتح الملف. نفّذ الأمرين واقرأ الخرج:
cipher /s:"C:\VPN\profiles\office"
attrib "C:\VPN\profiles\office\office.ovpn"
إزالة السمة تجعل الملف مقروءًا، وهي تزيل أيضًا الحماية التي كان يحملها. إذا كان على الملف أن يبقى محميًا، فضع المادة السرية حيث لهوية الخدمة منح صريح بدلًا من الاعتماد على تشفير لكل مستخدم. هذا الترتيب يصمد أمام تغيير كلمة المرور، ويجعل الوصول قابلًا للمراجعة من شخص غير الذي شفّر الملف.
تحديد من يملك النفق
تستطيع الواجهة الرسومية طلب كلمة مرور وقراءة شهادة من مخزن مستخدمك. ولا تستطيع الخدمة أيًا منهما، لذا فملف يعتمد على سر تفاعلي لن يبدأ أبدًا دون إشراف، مهما أُصلحت المسارات. هذا الحد قرار تصميمي، لا عيب يُلتف حوله. اختر مالكًا واحدًا قبل تغيير أي شيء آخر.
إذا كان على النفق أن يعمل قبل تسجيل الدخول، فأعطِ الخدمة مصدر اعتماد غير تفاعلي ونسخة خاصة بها من الملف. وإذا كان يكفي أن يوجد أثناء وجودك على المكتب، فأبقه في الواجهة الرسومية واحذف نسخة الخدمة. الاثنان معًا هو الإعداد الذي ينتج تعارضات محولات ومسارات مكررة.
غالبًا يُشخَّص ذلك التعارض كخطأ في الإعداد بدلًا من مالكين يتنازعان محولًا واحدًا. سيُظهر سجل الأحداث عملية تفشل في فتح جهاز TAP، وهو ما يبدو مشكلة أذونات وليس كذلك. أحصِ المالكين أولًا.
ما الذي يطلقه غلاف الخدمة فعليًا
نقطة دخول الخدمة هي غلاف صغير يقرأ معاملاته المخزنة ثم يبدأ openvpn.exe. عندما يختلف سطر الأوامر في سجل الأحداث عن توقعك، فتلك القيم هي ما يجب فحصه. إعادة التثبيت تعيدها إلى الإعدادات الافتراضية وتدمر الدليل. اقرأها أولًا.
تعيش القيم في السجل تحت مفتاح الخدمة نفسه، ويُظهر sc qc مسار الملف الثنائي الذي سيطلقه مدير الخدمات. قارن ذلك المسار بالإعداد المخزن للغلاف قبل أن تعدّل أيًا منهما.
استبدال الغلاف بسكربت تتحكم فيه أكثر تدخلًا، لكنه يطوي سطر الأوامر الفعلي في ملف واحد قابل للقراءة. اختم بإعادة تشغيل، ثم اقرأ سجل كل ملف حتى يظهر أول سطر بدء ناجح. حالة الخدمة التي تُبلغ عنها قيد التشغيل تعني فقط أن الغلاف لم يخرج، وهذا صحيح أيضًا عندما يموت ابنه فورًا.