VPN على Mac عالق على «قطع الاتصال»: ما الذي يعمل فعلاً
قطع الاتصال انتقال، لا نفق متوقف. تحقّق من المكوّن الذي يملك تفكيك النفق، واقرأ المسارات وDNS، وتجنّب قتل العمليات قتلاً عشوائياً.
«قطع الاتصال» حالة يبلّغ عنها العميل أثناء تفكيكه لنفق، وليست حكماً بأن حركة المرور توقفت. على Mac يجري ذلك التفكيك كتسلسل قصير، ولا يتغيّر العنوان إلا بعد أن يعود المكوّن الذي يملك الاتصال بالتقرير. وعندما تنتظر خطوةٌ ما مساعداً أو إضافة أو قراراً سياسياً، فقد يبقى العنوان كما هو بعد زوال الواجهة، أو يواصل النفق تمرير الحزم بينما تعرضه القائمة بعد. تعامل مع النص على أنه «تفكيك جارٍ، والنتيجة غير معلومة» وحدّد أي الشقّين صحيح.
فشلان يبدوان متطابقين من شريط القوائم ويحتاجان إلى استجابتين متعاكستين. في الأول، لا يزال النفق يحمل الحزم والمشكلة في العرض فقط. وفي الثاني، زال النفق لكن سياسة منفصلة تُبقي حركة المرور محجوبة، وهو أمر متعمد في الغالب. المسارات وحالة DNS تفصل بينهما أسرع من أي تفاعل مع القائمة.
ماذا يتتبّع العنوان
يحتفظ عميل VPN بآلة حالة صغيرة، وشريط القوائم إسقاط لها. في الاتصال الذي يديره macOS نفسه، تقع تلك الآلة في إطار VPN الخاص بالنظام. وفي النفق الذي يديره تطبيق، تقع في التطبيق ومساعده ذي الصلاحيات. الخطوة الأخيرة في الإيقاف ليست إغلاق مقبس. إنها تحرير ما جعل النفق يعمل: واجهة utun، والمسارات التي كانت تشير إليها، وإدخالات المُحلِّل التي أدخلها العميل، وأي قاعدة جدار حماية أو سياسة كانت تحجب حركة المرور أثناء الاتصال.
هذه الخطوات منفصلة، لذا قد يتعطّل الإيقاف عند أيٍّ منها. مساعد يتوقف عن الردّ، أو مسار تطالب به واجهة ثانية أيضاً، أو إدخال مُحلِّل يملكه ملف تعريف آخر، كلها قد تترك العميل منتظراً. والعنوان تقرير عن تقدّم العميل نفسه، وهذا يجعله حجة في النية وغير موثوق في شأن الشبكة.
حدّد المكوّن الذي يملك الاتصال
في التكوينات الأصلية، يطبع scutil --nc list الخدمات التي يعرفها النظام وحالتها، ويعطي scutil --nc status "Work VPN" تفاصيل خدمة واحدة. قد لا يظهر النفق الذي يحتفظ به تطبيق خارجي في تلك القائمة إطلاقاً، لذا فإن النتيجة الفارغة ليست دليلاً على أن شيئاً غير متصل.
عندما ينتمي ملف التعريف إلى تطبيق، اعتمد على عرض الحالة في ذلك التطبيق وعلى عنصر «قطع الاتصال» الموثّق فيه. إغلاق النافذة ليس طلب إيقاف إذا كان مساعد في الخلفية يملك النفق؛ فتختفي الأيقونة ويُبقي المساعد الواجهة حيّة. أما مرجع إعدادات VPN فيغطّي عناصر التحكم الأصلية ومصدر الإعدادات المُدارة.
اقرأ الواجهات والمسارات وDNS
ثلاثة فحوص تجيب عن معظم السؤال دون لمس الاتصال. والمهم هو تفسيرها معاً، لأن أي واحد منها منفرداً مضلّل.
scutil --nc list
netstat -rn -f inet | head -20
ifconfig | grep -A 3 '^utun'
scutil --dns | head -30
- واجهة utun موجودة، ومسار افتراضي أو منقسم يمرّ عبرها، والمُحلِّل يشير إلى المزوّد: النفق ما زال قائماً والعنوان قديم.
- لا utun، ومسار افتراضي عادي، وDNS من DHCP، ولا إنترنت: سياسة الحجب عند قطع الاتصال تؤدي عملها.
- لا utun، ولا مسار، والمُحلِّل ما زال يشير إلى المزوّد: توقف التفكيك في منتصفه، وDNS هو ما تبقّى لتنظيفه.
بعد ذلك أرسل طلباً واحداً إلى مضيف داخلي ينبغي ألا يجيب إلا عبر النفق، وطلباً آخر إلى مضيف عام. قابلية الوصول تفصل السياسة عن الحالة المتبقية دون تحويل الفحص إلى تمرين قياس. احفظ العمل عن بُعد أولاً إن كان المسار ما زال يستجيب، ورتّب طريق دخول ثانياً قبل أن تغيّر إعدادات الشبكة على جهاز تديره عن بُعد.
لماذا يضلّل القتل العشوائي وحذف ملف التعريف
أسماء العمليات مثل pppd و racoon و configd تنتمي إلى تطبيقات معيّنة. وقتلها قد يؤثر في اتصالات أخرى، ويترك المسارات وواجهات utun خلفه، ولا يمنحك سجلاً للخطوة التي تعطّلت. كما أن اسم عملية قديم ليس دليلاً على أنه يملك ملف التعريف الحالي.
حذف ملف التعريف وإعادة إنشائه تغيير أكبر من إزالة انتقال متعطّل. فقد يتخلّص من إعدادات مُدارة ومواد هوية محلية دون تفسير ما فشل، وعلى Mac خاضع للإشراف قد يُستعاد ببساطة. أبقِ الحذف لتكوين أصبح فعلاً قديماً، وشخّص الانتقال بدلاً من ذلك.
تسلسل إيقاف يحفظ أثراً
الترتيب أدناه يترك عناصر تحكم الاتصال نفسها مسؤولة، وينتج سجلاً إذا عاد التعطّل. كما يمنعك من تحويل مشكلة عرض إلى تغيير في الشبكة.
- احفظ العمل عن بُعد، وتأكد من قدرتك على الوصول إلى Mac بطريقة أخرى إن كان بعيداً.
- دوّن اسم العميل وإصداره وملف التعريف. والتقط نافذة قصيرة باستخدام
log show --last 5m --predicate 'subsystem == "com.apple.networkextension"'؛ فالإصدارات الأقدم تحتفظ بتاريخ أقل، لذا شغّله سريعاً بعد التعطّل. - استخدم عنصر «قطع الاتصال» الموثّق، وانتظر، ثم كرّر فحوص الواجهة والمسار.
- إذا كان العنوان قديماً لكن النفق متوقف، فاتركه ودع العميل يحدّث حالته بدلاً من إجبار العمليات.
- إذا تعطّل التفكيك فعلاً، فأعد تشغيل العميل، ثم خطّط لإعادة تشغيل Mac بعد حفظ العمل. والأجهزة المُدارة تحتاج إجراء المسؤول.
بعد التعافي، تأكد من عودة المسار الافتراضي العادي ومُحلِّل DHCP، ومن أن حركة المرور المحجوبة إما استُعيدت أو ما زالت محجوبة عن قصد. سجّل ملف التعريف وإصدار العميل مع العَرَض، ليبدأ الحدوث التالي من دليل بدل تخمين من شريط القوائم.