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

ما يحمله ملف .ovpn فعليًا

ملف .ovpn هو تكوين يتضمن كتلًا مضمّنة اختيارية. قد يحمل شهادة CA وشهادة عميل ومفتاحًا خاصًا ومفتاح tls-auth أو tls-crypt، وتوجيهات تشير إلى ملفات خارجية أو تطلب بيانات اعتماد. قد يبدو ملفان متطابقين تقريبًا ويختلفان فقط داخل كتلة، أو يختلفان في توجيه واحد يغيّر النقل كليًا. عدد الأسطر لا يخبرك بشيء عن أيّ ذلك حدث.

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

قارِن حسب الدور، لا حسب السطر

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

تمريرة تراعي الحقول تنظر في هذه العناصر بهذا الترتيب. وكل ما يطلبه العميل تفاعليًا ينتمي إلى صف المصادقة لا إلى صفوف الثقة.

  • remote، proto والمنفذ، بما في ذلك كل كتلة اتصال.
  • ca وcert: الجهة المُصدرة والموضوع وتاريخ انتهاء الصلاحية.
  • هل المفتاح الخاص موجود أصلًا، لا ما يحتويه أبدًا.
  • tls-auth أو tls-crypt واتجاه المفتاح.
  • توجيهات المصادقة، بما في ذلك أي إشارة إلى ملف بيانات اعتماد.
  • المسارات وخيارات DNS وخطافات النصوص التي تعمل عند الاتصال.

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

لماذا فروق النص العادية أداة خاطئة

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

openssl x509 -in ca.crt -noout -subject -issuer -enddate
openssl x509 -in client.crt -noout -subject -issuer -enddate
grep -E '^(remote|proto|port|tls-auth|tls-crypt|route|dhcp-option)' profile.ovpn

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

ابنِ نسخة منقّحة للتذكرة

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

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

أبقِ المقارنة مرتبطة بفشل

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

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

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