يثبّت Homebrew برنامج OpenVPN؛ ويثبّت Tunnelblick مديرًا يشغّل محرّكًا واحدًا أو أكثر. هاتان طبقتان مختلفتان، والسؤال المفيد ليس ما إذا كنت تحب استخدام الطرفية. بل من يملك الإعداد وتغييرات DNS وطلب بيانات الاعتماد والتنظيف عند انتهاء الجلسة. المالك الواحد لهذه الطبقات هو ما يجعل الإعداد قابلًا للتوقّع.

اعمل على الفحوص الخمسة أدناه بالترتيب. أول فحص له مالكَان هو الذي ينتج الحالات الغريبة نصف المتصلة التي يلوم الناس عليها OpenVPN نفسه. كل فحص يسمّي الدليل الذي يحسمه.

الفحص الأول: أي برنامج OpenVPN التنفيذي يعمل فعلًا

نفّذ pgrep -fl openvpn أثناء الاتصال واقرأ سطر الأوامر كاملًا. المسار الأول هو المحرّك الذي يعمل فعلًا. على Apple Silicon يعيش تثبيت Homebrew عادةً تحت /opt/homebrew، بينما تستخدم أجهزة Mac المبنية على Intel المسار /usr/local، ويشغّل Tunnelblick محرّكًا من داخل حزمة تطبيقه الخاصة.

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

يمكن لملف تعريف منسوخ أن يجعل محرّكين يبدوان متطابقين وهما يقرآن ملفين مختلفين. مسار ملف التعريف في سطر الأوامر يخبرك أي إعداد حمّله العملية الجارية؛ وملف التعريف المفتوح في محرّر ليس دليلًا. قارن ذلك المسار قبل مقارنة السلوك.

الفحص الثاني: من يغيّر DNS والمسارات

يستطيع المحرّك تنفيذ توجيهات up و down الخاصة بـ OpenVPN، لكن المدير قد يملك دورة الحياة نفسها. تتحكّم إعدادات خادم الأسماء في Tunnelblick بنصوص الاتصال والقطع القياسية، وعند تفعيل ذلك التكامل يمكن تجاهل التوجيهات المنافسة في ملف التعريف.

هذا مهم لأن DNS هو المكان الذي يبدو فيه النفق العامل معطّلًا في أغلب الأحيان. افحص scutil --dns أثناء الاتصال، ولاحظ أي محلّل يأتي أولًا، وتأكّد من عودته بعد القطع. إذا كان ملف التعريف يتوقع ضبط DNS بنفسه بينما يديره المدير أيضًا، فسيخسر أحدهما.

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

الفحص الثالث: من أين تأتي بيانات الاعتماد

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

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

الفحص الرابع: من يبدأ العملية ويشرف عليها ويوقفها

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

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

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

الفحص الخامس: كيف يتم التحقّق من التسليم

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

عند التسليم إلى محرّك مستقل، سجّل مسار ملف التعريف ومسار الملف التنفيذي والمشرف ومالك DNS ومصدر بيانات الاعتماد. ثم تحقّق من المورد الخاص ومسار الإنترنت العام وقطع نظيف بهذا الترتيب. إذا بقيت DNS أو المسارات بعد القطع، فالمالك الجديد لم ينتهِ بعد.

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

التغليف لا يحسم توافق الخادم. افحص متطلبات العميل الخاصة بالخدمة، واختر المحرّك وحده فقط عندما تنوي توفير إدارته.

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