OpenVPN لا يبدأ، ورسالة الفشل تشير إلى سطر يبدو سليمًا: Unrecognized option or missing or extra parameter(s) in office.ovpn:42: ca. لم تتغير الشهادة، والملف يُفتح في محرر، ولا شيء في المسار يبدو خطأً. المحلل لا يعترض على اسم الخيار؛ بل يعترض على عدد الوسائط التي وصلت معه. أربع عمليات فحص تحل تقريبًا كل حالة من هذا النوع، ويستحق تنفيذها بترتيب التكلفة.

لماذا يلوم المحلل اسم الخيار

يُقسَّم كل سطر إعداد إلى مسافات وإلى علامات اقتباس قبل أن يصل إلى أي خيار. لذلك تصل أي قيمة تحتوي على مسافة على هيئة عدة وسائط ما لم تُحاط بعلامات اقتباس، ويبلّغ الخيار صاحب السطر عن عدم التطابق. على Windows يجعل دليل التثبيت الافتراضي ذلك مؤكدًا، لأن C:\Program Files يقع في منتصف المسار بحكم البنية. الشهادة لا تُفتح أبدًا في هذا الفشل، لذا لا يثبت فحص وجود الملف شيئًا مفيدًا.

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

ca C:\Program Files\OpenVPN\config\office-ca.crt

ضع علامات اقتباس حول كل مسار يحتوي على مسافة

زوج واحد من علامات الاقتباس المزدوجة حول القيمة هو الإصلاح كله، والشرطات المائلة الأمامية مقبولة على Windows، لذا لا يصبح التهريب جزءًا من المشكلة أبدًا. أصلح كل خيار مسار في الجولة نفسها، لأن المحلل يتوقف عند أول فشل ويكون التالي في انتظار إعادة التشغيل القادمة. تشمل المجموعة عادةً ca، cert، key، tls-auth، auth-user-pass.

ca "C:/Program Files/OpenVPN/config/office-ca.crt"
cert "C:/Program Files/OpenVPN/config/office.crt"
key "C:/Program Files/OpenVPN/config/office.key"

البحث عن اسم الدليل يجد كل تكرار أسرع من قراءة الملف. شغّله قبل تحرير أي شيء، حتى تكون القائمة كاملة:

Select-String -Path .\office.ovpn -Pattern 'Program Files'

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

استعد إعلان الوضع قبل الشهادات

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

client
dev tun
proto udp
remote vpn.example.net 1194

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

تلف الترميز يبدو كاسم خيار

الملف الذي خُزّن بترميز UTF-16 مع علامة ترتيب البايتات يخفي خياره الأول عن المحلل، وقد تلتصق بايتات شاردة باسم الخيار في الرسالة. احفظ الملف بترميز UTF-8 بلا علامة ترتيب البايتات، ثم أعد فتحه وتأكد من أن الحرف الأول حرف عادي. المحررات وإعادة توجيه PowerShell والنص الملصوق من نافذة محادثة كلها تغيّر الترميز دون سؤال.

Format-Hex .\office.ovpn | Select-Object -First 1

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

أي فحص يُنفَّذ أولًا، ولماذا

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

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

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