حذف key-method من ملف OpenVPN لا يغيّر شيئًا
اختفى التوجيه من المحلّل، لا من البروتوكول. افصل الخيار القديم عن صيغة تبادل المفاتيح قبل تعديل الملف.
ملف عمل لسنوات يرفض الآن بدء التشغيل فجأة، وتردّ الرسالة اسم توجيه لا يتذكّر أحد أنه أضافه: key-method. تقترح نتيجة البحث التالية إضافة key-method 2 للتوافق، وهي نصيحة من زمن آخر. المحلّل الذي رفض السطر محلّل حديث، ولا يملك هذا الخيار إطلاقًا. إزالة السطر تصلح بدء التشغيل، ولا تغيّر شيئًا في كيفية حماية الطرفين للجلسة.
تلك الفجوة بين ما يحتويه الملف وما يفعله البروتوكول فعليًا هي موضوع هذا كله، وهي تفسّر عدة تعديلات أخرى يجريها الناس في الوقت نفسه. وتفسّر أيضًا لماذا تصل هذه التعديلات عادةً في حزمة واحدة.
العرض خطأ تحليل، لا فشل مصافحة
تُقرأ الخيارات قبل إرسال أي حزمة. الملف الذي يحتوي توجيهًا غير معروف يفشل في تلك المرحلة، فلا تصل العملية إلى الشبكة أبدًا ولا تنتج خطأ مصافحة. الصياغة تحدّد عادةً الخيار والملف، ما يجعل هذا واحدًا من أسهل الأعطال إسنادًا إلى سببه. لا حزمة ولا مسار ولا جدار حماية له علاقة به.
openvpn --config /etc/openvpn/client/office.ovpn --verb 3 --log /tmp/parse.log
grep -n 'Options error' /tmp/parse.log
إذا ذكرت الرسالة التوجيه، فقد انتهى التشخيص: الملف يحتوي شيئًا لا يقبله هذا البناء. وإذا ذكرت مسار ملف بدلًا من ذلك، فالمشكلة إدراج أو مفتاح مفقود، وهو قسم مختلف من المرحلة نفسها لبدء التشغيل.
ما لا ينبغي أن تستنتجه هو أن العميل أو الخادم يحتاج وضع بروتوكول أقدم. فشل التحليل مشكلة مفردات بين ملفك والبرنامج الثنائي، والبرنامج الثنائي في هذه الحالة أسقط كلمة من مفرداته فقط.
التوجيه وصيغة الإرسال أمران مختلفان
الخيار القديم key-method كان يحدّد كيفية تأطير تبادل مفاتيح TLS، والتبادل الحديث هو طريقة الحزم المتعددة التي كان ذلك الخيار يطلبها. اختفى الخيار لأنه لم يعد يحدّد شيئًا؛ فالصيغة التي كان يسمّيها أصبحت الوحيدة. لذلك فإن إزالة السطر تترك الجلسة تستخدم التأطير نفسه كما كان. ولا يمكن لتعديل نصي أن يغيّر ذلك في أي اتجاه.
لهذا فإن إعادة برنامج ثنائي قديم “لاستعادة” الطريقة 2 هي الإصلاح الخاطئ. فهي لا تستعيد شيئًا سوى محلّل أقدم بإعدادات افتراضية أقدم، وتكلّفك الإصلاحات التي جاءت بعده. وينطبق المنطق نفسه على إضعاف فحص شهادة أو قائمة تشفير أملًا في عودة الاتصال.
الفحص المفيد هو الإصدار والتكوين المحلّل، لا وجود الكلمة في الملف:
openvpn --version | head -n 1
grep -rn 'key-method' /etc/openvpn/ 2>/dev/null
ما الذي تحذفه، ومن أي ملف
عدّل الملف الذي تقرأه العملية الجارية فعلًا، وهذا الملف وحده. في الأنظمة المحزومة يكون ذلك عادةً الملف الموجود في دليل العميل أو الخادم الذي تسمّيه الوحدة، لا نسخة في دليلك الرئيسي تحتفظ بها للمراجعة. وقد يُعاد بناء الملف المولّد من قالب، لذا فإن تعديلًا أُجري على النسخة المنشورة فقط سيعود بعد تشغيل التزويد التالي.
احذف السطر القديم واترك نقطة النهاية والشهادات وسياسة التشفير وإعدادات قناة التحكم كما هي. فهذه خيارات مدعومة تحتاجها العملية، وليست متورطة في خطأ التحليل. وإذا كان الملف نفسه يحتوي توجيهات أخرى لا تعرفها، فافحص كل واحد منها مقابل الإصدار الذي تشغّله بدلًا من حذف مجموعة منها حتى تبدأ العملية.
ثم شغّل النسخة المقصودة واقرأ مخرجات بدء تشغيلها. بدء نظيف مع وجود المستمع هو التأكيد على انتهاء هذه المرحلة؛ واختبار العميل بعد ذلك يجيب على سؤال مختلف.
الملف المرفوض والعميل المرفوض يتشابهان
ينتج الفشلان خيوط دعم متشابهة ويحتاجان أدلة مختلفة. الخادم الذي يرفض تكوينه لا يبدأ أبدًا، فلا يمكن لأي عميل الاتصال به. والخادم الذي يبدأ جيدًا ويرفض عميلًا واحدًا يعمل، ويحتوي سجله على السبب: مشكلة شهادة، أو خيار مدفوع لا يقبله العميل، أو عدم تطابق تشفير.
الخيار المحذوف ليس تشخيصًا للحالة الثانية، والوصول إليه يهدر الساعة نفسها مرتين. إذا أظهر سجل العميل رفض الخادم، فاقرأ ذلك الرفض؛ وإذا أظهر خطأ محليًا، فالملف الذي يجب فحصه هو ملف العميل. والوصول إلى توجيه لم يعد موجودًا يؤخر التحقيقين بالمقدار نفسه.
أسئلة التوافق التي لم يجب عنها السطر قط
الملفات التي تنتشر مع هذا التوجيه تحمل عادةً حكاية عن منصة معينة، والحكاية تبقى بعد انتهاء السبب التقني. ولا يزال العميل المحمول أو المكتبي يحتاج إلى ملف كامل مدعوم: سلسلة شهادات موثوقة، وتشفير بيانات يقبله الطرفان، ووضع قناة تحكم ينفّذه الطرفان، ولا توجيهات يرفضها بناء العميل. ولا شيء من ذلك يُحدَّد بوجود سطر key-method القديم أو غيابه.
الضغط مسألة سياسة منفصلة بالشكل نفسه. إزالة سطر key-method لا تقول شيئًا عمّا إذا كان توجيه ضغط مدعومًا أو مقبولًا في نشرك، والقراران ينبغي أن يُتخذا بشكل مستقل. وحذف عدة إعدادات متعلقة بالأمان دفعةً واحدة حتى يتصل شيء ما هو الطريق الذي يحوّل ملفًا عاملًا إلى ملف غير مفسّر.
احتفظ بسجل قصير لما حذفته ولماذا: الخيار، والإصدار الذي رفضه، والأمر الذي أظهر الخطأ. سيحتاج من يرث الملف لاحقًا هذه الحقائق الثلاث بالضبط، وتدوينها الآن أرخص من إعادة بنائها لاحقًا.