كيف تتحقق من خادم ملف تعريف OpenVPN قبل استيراده
اقرأ مدخلات remote وطبقة النقل ومثبتات الثقة في محرر نصوص أولاً؛ فحلّ الاسم يثبت إمكانية الوصول، لا الملكية أبداً.
يُرسل إليك أحدهم ملف تعريف، فتستورده، وبعد ثلاثين ثانية تجد عميلاً يتصل بوجهة لم يفحصها أحد. اقرأ الملف في محرر نصوص أولاً، لأن كل ما يهم يكمن في حفنة من التوجيهات: remote، وproto، وport، وca، وcert، وtls-crypt وverify-x509-name. وما عدا ذلك كله افتراضات، والافتراضات هي حيث تختبئ المفاجآت.
اسرد كل نقطة نهاية يمكن للملف استخدامها
ابدأ بنقاط النهاية، لأن ملف تعريف واحداً قد يحوي عدة نقاط. يطبع الأمر grep -nE '^[[:space:]]*(remote|proto|port|remote-random|connection)' profile.ovpn كل مرشح بترتيب وروده في الملف، بما في ذلك المرشحات المتداخلة داخل كتل <connection> المضمنة.
حين يحذف توجيه ما المنفذ، يعود العميل إلى القيمة الافتراضية للمستمع، لذا فإن remote vpn.example.com وحده يعني المنفذ 1194 مع أي proto يظهر لاحقاً في الملف. عدة أسطر remote مجردة هي بدائل: يجربها العميل بالترتيب ما لم يخلطها remote-random، وهو لا يستبدل أبداً بصمت مضيف مشغل آخر. سطرا remote على نطاقين غير مرتبطين هو الموضع الذي تتوقف فيه وتسأل أيهما كان المقصود.
لاحظ أيضاً كتابة proto. يُقبل tcp كمرادف لـ tcp-client في جانب العميل، لكن tcp-server في ملف تعريف العميل خطأ في الإعداد يغلب أن يتسبب في تعليق بدل أن يفشل بنظافة.
تحقق من الاسم، ثم من المنفذ
يخبرك الأمر dig +short vpn.example.com بما إذا كان الاسم موجوداً وبأي عناوين يعود، وقد تعيد نقطة نهاية متعددة الواجهات أو خلف وسيط عدة عناوين بشكل مشروع. حلّ الاسم شرط مسبق لا دليل على الملكية؛ فبإمكان أي شخص توجيه اسم إلى عنوان، وبإمكان عنوان واحد أن يستجيب لأسماء كثيرة.
ثم افحص المستمع على المنفذ الذي وجدته، بما يطابق طبقة النقل. عبر TCP يطبع openssl s_client -connect vpn.example.com:1194 -servername vpn.example.com السلسلة التي يقدمها الخادم. وعبر UDP تحتاج إلى DTLS: يشغّل openssl s_client -dtls1_2 -connect vpn.example.com:1194 المصافحة نفسها عبر حزم البيانات. المصافحة المكتملة تثبت أن شيئاً ما يستمع ويحمل شهادة، وهو أكثر مما يظهره ping وأقل مما تتطلبه إعدادات الثقة في ملف التعريف نفسه.
حين تفشل المصافحة ويستجيب المضيف لـ ping، فالمنفذ على الأرجح خاطئ أو مُرشّح. اعتبر ذلك سبباً لطلب المنفذ الصحيح، لا دعوة لمسح المنافذ المجاورة. كما يبلّغ nc -vzu عن نجاح على بعض الحزم البرمجية دون أن يستمع شيء، لذا لا يعني مجرد مسبار UDP شيئاً من دون مصافحة خلفه.
اقرأ مثبتات الثقة بمعزل عن العنوان
العنوان يحدد إلى أين يذهب العميل؛ وكتلة الثقة تحدد بمن يثق بعد وصوله. يثبّت verify-x509-name "vpn.example.com" name الاسم الشائع للجهة، ويشترط remote-cert-tls server استخدام المفتاح الموسّع لمصادقة الخادم. وملف التعريف الذي يسلمه إليك مشغّل يجب أن يحمل كليهما.
ابحث عن ca، أو كتلة <ca> مضمنة، وعن tls-crypt أو tls-auth. ملف التعريف الذي يستخدم tls-auth يحتاج إلى key-direction 1 على العميل حين يستخدم جانب الخادم الاتجاه 0، وعدم التطابق يُفشل المصافحة بخطأ TLS يبدو كعيب في الشهادة. أما CA مضمنة لا تنتمي إلى المشغّل الذي حللت اسمه للتو فتعني أن الملف جُمع من مصدرين، وهذه هي الحالة التي يجدر رفضها رفضاً قاطعاً.
يقبل verify-x509-name الأوضاع name أو name-prefix أو subject، ويتوقع الأخير اسماً مميزاً كاملاً بالترتيب نفسه الذي يطبعه الخادم. اختر وضعاً يطابق شكل القيمة، لأن العميل يرفض كل اتصال بدل أن ينذر بتطابق قريب. وبالنسبة إلى ملف لم تؤلفه أنت، فإن name مع اسم مضيف بسيط هو الخيار الأقل إثارة للمفاجأة.
افحص الخيارات التي تفشل بصمت
يتفاوض OpenVPN 2.6 على الأصفار عبر data-ciphers، وملف تعريف يحمل فقط سطر cipher AES-256-CBC قديم قد يكمل قناة التحكم ثم يتوقف عند البيانات. قراءة تلك القيمة تخبرك هل يسبق الملف الخادم الذي تنضم إليه؛ وتسرد صفحة الدليل لـ 2.6 ترتيب التفاوض إن احتجت إلى نقله للمشغّل.
يعني auth-user-pass بلا اسم ملف أن العميل سيسأل، فملف التعريف الذي يبدو مكتفياً بذاته لا يزال يحتاج بيانات اعتماد. ويعني auth-user-pass credentials.txt أنه يتوقع ملفاً لم يُرسل إليك على الأرجح. أما nobind وresolv-retry infinite فاعتياديان وغير ضارين، بينما explicit-exit-notify خاص بـ UDP وحده وعديم الجدوى عبر TCP.
لا يغيّر أي منها إلى أين يتصل ملف التعريف، لكن كل واحد منها يغيّر ما إذا كان سيتصل أصلاً، ولا يظهر أي منها في نافذة الاستيراد لدى العميل.
قرّر، ثم سجّل ما قررته
توجد ثلاث نتائج بعد هذه القراءة، وواحدة فقط هي الاستيراد. حين تطابق نقطة النهاية والمثبتات تعليمات وصلتك عبر قناة منفصلة، استورده. وحين تبدو نقطة النهاية صحيحة لكن المثبتات أو CA لا تطابق، اطلب ملفاً مصححاً. وحين يخلط الملف بين نقاط نهاية أو مواد CA من مصادر مختلفة، احذفه واطلب نسخة جديدة.
سجّل التجزئة التي راجعتها، ليتمكن الشخص التالي من معرفة هل تغيّر الملف: sha256sum profile.ovpn، ملصقةً بجانب نقطة النهاية في ملاحظاتك. ملف التعريف ترتيب كامل لا قائمة عناوين، فلا تدمج أبداً remote عاملاً في كتلة ثقة شخص آخر مع إبقاء بيانات اعتماده.
أبقِ المفاتيح الخاصة وكلمات المرور خارج لقطات الشاشة وخيوط المحادثة أثناء مقارنة الملاحظات. نقطة النهاية والخيارات غير السرية تكفي لطرح سؤال دقيق، والباقي مكانه الملف.
إن استوردته وفشلت المحاولة الأولى، شغّل العميل بـ --verb 3 واقرأ السطور العشرة الأولى: عنوان remote المحلول، وproto المتفاوض عليه، وخطأ TLS تظهر بهذا الترتيب، وهو ما يخبرك أي الفحوص أعلاه تخطيتها.