إعداد VPN العام توقف عن العمل؟ اقرأ مرحلة الفشل
الملف الذي حمّلته يصف مضيفًا واحدًا في يوم واحد. اقرأ أيّ تأكيد فشل، وافحص الشهادة التي يقدّمها الطرف الآخر، ولا تعطّل التحقق أبدًا.
عمل الملف يوم الثلاثاء، وفي يوم الجمعة يدور العميل ثلاثين ثانية ثم يستسلم. لم يتغيّر شيء على جهازك. وهذا هو المقصود بالضبط: الإعداد الذي حمّلته يصف مضيفًا واحدًا في لحظة واحدة، وليس على المشغّل في الطرف الآخر أيّ التزام بإبقاء ذلك الوصف صحيحًا. والإغراء هو أن تبدأ بتعديل إعدادات الأمان حتى يعود النفق. وهذه الغريزة هي سبب انتهاء الناس إلى تشغيل ملف مع تعطيل التحقق من الشهادة، وهو أسوأ من عدم وجود نفق على الإطلاق.
الملف يصف لحظة، لا عقدًا
ملف الإعداد هو مجموعة من التأكيدات: اسم المضيف هذا يستمع على هذا المنفذ بهذا البروتوكول، ويقدّم شهادة تطابق هذا الاسم، ويقبل بيانات الاعتماد هذه. وعندما يتوقف أيٌّ منها عن الصحة يصبح الملف قديمًا، ويكون الإصلاح في جانب المشغّل من الحدود، لا في إعداداتك.
قوائم العُقد العامة تُظهر ذلك صراحةً بطبيعتها. فالعُقد يديرها متطوعون، تظهر وتختفي، وتُعاد العناوين إلى الاستخدام، وتُحجب المنافذ من قِبل الشبكة التي تقف خلفها. والقائمة لقطة يُعاد توليدها، والنسخة الموجودة على قرصك صورة فوتوغرافية للقطة أقدم.
الخدمات التجارية تتغيّر ببطء أكبر لكن ليس أبدًا. فسلطات الشهادات تتناوب، وينتقل المستمع من عنوان مشترك إلى عنوان مخصص، ويُسحب بروتوكول قديم وتحلّ قائمة تشفير جديدة. وكل ذلك غير مرئي حتى يحاول عميلك الاتصال فيحصل على جواب مختلف عن الذي يتوقعه الملف.
اقرأ مرحلة الفشل قبل أن تلمس أيّ إعداد
تخبرك رسالة الخطأ أيّ تأكيد فشل، ولكل تأكيد إصلاح مختلف تمامًا. وتعديل التشفير عندما لا يُحلّ اسم المضيف يضيع بعد الظهر ولا يعلّم أحدًا شيئًا.
| What happens | The assertion that broke | Supported response |
|---|---|---|
| Name never resolves | The host still exists under that name | Get a current endpoint from the operator |
| TCP connect times out | The listener is on that port and reachable | Check the current published port, then the local network |
| TLS or key exchange fails | The peer presents the expected identity | Compare the certificate, not the cipher list |
| Authentication rejected | The account is still valid | Get credentials reissued or stop using the service |
dig +short vpn.example.net
curl -sS -o /dev/null -w 'connect=%{time_connect} tls=%{time_appconnect}\n' --max-time 8 https://vpn.example.net:443/
openssl s_client -connect vpn.example.net:443 -servername vpn.example.net -brief </dev/nullالسطر الأوسط يفصل المسار المحجوب عن المصافحة المعطوبة، والثالث يعرض المُصدر وتواريخ الصلاحية للشهادة المقدَّمة فعليًا. وإن لم يكن ذلك المُصدر هو الذي ثبّته الملف، فقد تغيّرت الشهادة، ولن يجعل أيّ خيار من جانب العميل التثبيت القديم صحيحًا مرة أخرى.
تغييرات الشهادة والهوية هي الهادئة
معظم الأعطال تعلن عن نفسها. أما تغييرات الهوية فلا، لأن العميل الذي يثبّت اسم شهادة سيرفض شهادة جديدة سليمة تمامًا برسالة يقرأها كثيرون على أنها خطأ برمجي. النفق سليم. والتثبيت قديم.
ابحث عن خيارات الهوية قبل أن تستنتج أيّ شيء:
grep -nE '^(remote|proto|auth|verify-x509-name|tls-crypt|key-direction|ca) ' profile.ovpn
openssl x509 -in profile-ca.crt -noout -subject -datesإذا كان الملف يحمل CA مضمّنة وقد انتقل المشغّل إلى سلطة جديدة، فالملف القديم لا يستطيع التحقق من الخادم الجديد. واستبدال كتلة CA بالكتلة المنشورة من المشغّل إصلاح مشروع. أما حذف توجيه التحقق فليس كذلك، وهو نفس ضغطات المفاتيح بنتيجة مختلفة تمامًا.
ترقية العميل قد تُنتج العَرَض نفسه دون أيّ تغيير من المشغّل. فالخيارات التي كانت تُتحمّل بصمت تُرفض، أو يُزال بروتوكول مهجور. وهذا حدّ توافق في برنامجك، ويستحق أن تجرّب ملفًا ثانيًا على العميل نفسه قبل أن تلوم الخادم.
المشغّل وحده يستطيع نشر بديل صالح
عندما تختفي عقدة، يجب أن يأتي البديل من المصدر نفسه الذي نشر الأصل. والملف الذي يصل في رسالة مباشرة لأنه «يستخدم اسم الخادم نفسه» إعداد غير مُتحقَّق منه من طرف مجهول، واستيراده يمنح ذلك الطرف التحكم في توجيهك.
الفحص رخيص. اجلب الملف الحالي من الموقع المنشور، وقارن نقطة الطرف والبروتوكول بالقائمة، وتأكد من بصمة مادة CA بدلًا من الوثوق باسم الملف:
curl -sS -o current.ovpn https://example.org/nodes/current.ovpn
sha256sum current.ovpn profile.ovpn
grep -nE '^(remote|proto) ' current.ovpnإذا اختلف التجزئان في المسافات فقط، فلديك تغيير في التنسيق. وإذا اختلفا في نقاط الطرف، فقد نقل المشغّل شيئًا والملف المنشور هو المرجع. وإذا كان الملف المنشور أقدم من الذي بحوزتك، فأنت على الأرجح تنظر إلى ذاكرة مؤقتة، والجواب القديم سيرسل في الاتجاه الخاطئ.
اسحب الإدخال القديم وسجّل ما حدث
بعد التحقق من بديل عامل، احذف الملف القديم بدلًا من إبقائه احتياطًا. فالإدخال القديم الذي يتصل نصف اتصال فخّ: سيُختار أثناء انقطاع، وسيفشل ببطء، وسيقضي من يحقق في أول عشر دقائق على الملف الخطأ.
احتفظ بسجل قصير خارج الإعداد: التاريخ، ونقطة الطرف القديمة، ومرحلة الفشل، وما حلّ محلها. العُقد العامة تتغيّر، وبعد ستة أسابيع يصل السؤال نفسه بشخص آخر. وسطر واحد في ملف ملاحظات يجيبه في ثوانٍ.
إذا فشلت كل عقدة بالطريقة نفسها من شبكة واحدة ولم تفشل أيّ عقدة من شبكة أخرى، فتوقف عن تعديل الملفات وانظر إلى المسار المحلي. فبوابة أسيرة أو نطاق منافذ مُرشَّح أو وكيل يعترض ستُنتج أخطاء متطابقة لدى مزوّدين غير مرتبطين، وهذا النمط هو الإشارة الوحيدة إلى أن المشكلة لم تكن الملف يومًا.