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

على macOS، هذا الشيء عادةً هو خادم IKE.

النمط: اتصال واحد ثم انتهاء المهلة

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

هذا يضيّق التحقيق قبل أن تفتح سجلًا واحدًا. يصبح السؤال: أي عملية تملك منفذ IKE وماذا تظن أنها تفعل.

خادمان، منفذ واحد

يشغّل النظام racoon عندما يتحدث الاتصال بـ IKE الإصدار 1. الإصدارات الحالية تجلب أيضًا iked من أجل IKEv2 ومكدس IPsec الأحدث. كلاهما يمكنه ربط UDP 500 و UDP 4500، وكلاهما يمكنه الاحتفاظ بارتباط أمني نصف مفتوح بعد إلغاء محاولة اتصال عند موجه كلمة المرور أو مقاطعتها بتغير الشبكة.

عندما يحدث ذلك، لا تبدأ المحاولة التالية نظيفة. تحاول التفاوض بينما الارتباط القديم ما زال يشغل حالة النظير، فيتوقف التبادل بدلًا من أن يفشل بخطأ واضح. يرى المستخدم مؤشر انتظار، ثم انتهاء المهلة.

اعثر على المالك قبل أن تقتل أي شيء، لأن الجواب يحدد أي خدمة تعيد تشغيلها وأي سجل تقرأ بعده.

sudo lsof -i :500 -i :4500
ps -ef | grep -E "racoon|iked"

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

أعد تشغيل المهمة بدلًا من العملية

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

sudo launchctl stop com.apple.racoon
sudo launchctl start com.apple.racoon

إذا لم يكن لدى launchd سجل للمهمة، فإن قتل العملية بالاسم ما زال يفرض تفاوضًا جديدًا في المحاولة التالية. الاختبار هو نفسه في الحالتين: لا يجب أن تحتفظ أي عملية بالمنفذ عند محاولة الاتصال مرة أخرى. أكد ذلك بالأمر نفسه lsof بدلًا من افتراض أن إعادة التشغيل نجحت.

ثم اتصل مرة واحدة واقرأ سجل العميل من البداية. التفاوض الذي يتجاوز المرحلة 1 ثم يبلغ عن فشل إرسال يكرر مشكلة المقبس المحلية؛ تفاوض يرفضه النظير هو تذكرة مختلفة تمامًا.

عندما يكون الخادم هو الرافض

ليس كل اتصال ثانٍ يفشل محليًا. يمكن للخادم أن يرفض تسجيل دخول جديد لفترة ثابتة بعد قطع الاتصال، وتبدو مهلة العميل مطابقة لخادم عالق. الفارق رخيص: إذا لم تساعد إعادة تشغيل الخادم لكن حسابًا آخر يتصل فورًا، فالفترة من جهة الخادم ولم يكن الـ Mac هو المشكلة أبدًا.

سياسة النفق المنقسم تنتج الشكل نفسه من الاتجاه الآخر. الخادم الذي يتطلب كل الحركة في النفق سيسقط عميلًا مُهيأ للنفق المنقسم أثناء التفاوض، ويبلغ العميل عن انتهاء مهلة بدلًا من رفض سياسة. تغيير الملف الشخصي لإرسال كل شيء عبر النفق قد يجعله يتصل، لكن ذلك قرار سياسة يُتخذ مع مالك الشبكة، وليس إصلاحًا يُطبق بهدوء.

اقرأ سجل النظير قبل تغيير العميل مرة أخرى. الرفض وعدم تطابق السياسة والإسقاط الصامت ثلاثة أسباب مختلفة تبدو كلها كـ“جارٍ الاتصال” على شاشة الـ Mac.

العملاء الأقدم ونواة 64 بت

عميل Cisco IPSec القديم يحمّل امتداد نواة مبنيًا لأنظمة 32 بت و PowerPC. على جهاز Mac يعمل بنواة 64 بت، لا يمكن لهذا الامتداد أن يُحمّل، ويفشل العميل مبكرًا بالخطأ 51 لأنه لا يستطيع الوصول إلى نظام VPN الفرعي إطلاقًا. لا عدد من إعادات تشغيل الخادم يصلح امتداد نواة ذا معمارية خاطئة.

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

  • أعد إنتاج المشكلة مرة واحدة، ثم افحص أي خادم يملك UDP 500 قبل لمس الملف الشخصي.
  • اقرأ أول فشل بعد المرحلة 1: خطأ الإرسال يشير إلى المقبس المحلي.
  • أعد تشغيل مهمة launchd، لا العملية فقط، وتأكد من أن المنفذ حر.
  • جرّب حسابًا ثانيًا للفصل بين فترة إعادة مصادقة من جهة الخادم وعطل في العميل.
  • سجّل معمارية النواة قبل لوم العميل.

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

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