
في الأشهر الأخيرة، ظهر عيب غريب نوعاً ما في ماك على الرغم من أن هذا الأمر لا يؤثر عادةً على المستخدم العادي، إلا أنه وضع المطورين ومديري الأنظمة وأي شخص يستخدم جهاز ماك كخادم في حالة تأهب، كما هو موضح في أدلة لـ إصلاح أكثر أخطاء macOS Sequoia شيوعًابعد أقل من 50 يومًا من تشغيلها دون إعادة تشغيلها، تتوقف بعض أجهزة الكمبيوتر عن القدرة على فتح اتصالات إنترنت جديدة.
تُعرف هذه المشكلة بالعامية باسم "خلل في نظام macOS يستمر 49 يومًا في الإنترنت"ليس الأمر مجرد انقطاع بسيط في شبكة الواي فاي أو عطل مؤقت في جهاز التوجيه. بل هو خلل برمجي عميق في بروتوكول الشبكة الخاص بنظام التشغيل، مما يجعل جهاز ماك يبدو متصلاً، ولكنه في الواقع يعزله عن أي اتصال جديد.
مصدر الخلل: عداد 32 بت عند الحد الأقصى
البحث، بقيادة فريق من الفوتون كشفت شركة متخصصة في دمج وكلاء الذكاء الاصطناعي في خدمات المراسلة أن مصدر الخلل يكمن في طريقة قياس نظام macOS للوقت داخل نظام TCP الخاص به. تستخدم نواة XNU متغيرًا داخليًا يُسمى tcp_now لتتبع الوقت بالمللي ثانية منذ بدء تشغيل النظام. وقد تم توثيق خلل مماثل في نواة النظام في خطأ في تنفيذ التعليمات البرمجية في نظام macOS Big Sur والإصدارات الأقدم.
يتم تنفيذ هذا العداد على النحو التالي: عدد صحيح غير موقع 32 بتوهذا يعني قيمة قصوى تبلغ 4.294.967.295. وإذا تم التعبير عن هذا الرقم بالمللي ثانية، فإن الحساب يتطابق تمامًا تقريبًا مع السلوك الملاحظ:
4.294.967.295 مللي ثانية ≈ 49 يومًا و17 ساعة ودقيقتين و47 ثانية.
عند بلوغ هذا الحد، يصل العداد إلى أقصى سعته ويتجاوز الحد المسموح به. في التصميم المثالي، ينبغي للنظام أن يتعامل بشكل صحيح مع إعادة التعيين هذه إلى الصفر، ولكن ما لوحظ في نظام macOS هو أنه تعطل منطق التوقيت في بروتوكول TCP عند هذه النقطة، تصبح الساعة الداخلية المستخدمة لتحديد متى تنتهي صلاحية اتصالات معينة "متجمدة" أو تبدأ في إجراء مقارنات زمنية غير صحيحة.
واجه باحثو الفوتون المشكلة أثناء استخدام مزرعة من ماك ميني وماك ستوديو لمراقبة خدمات iMessage ونشر منصة OpenClaw الخاصة بهم. توقفت عدة أجهزة، بعد تشغيلها لأسابيع، فجأة عن قبول اتصالات جديدة دون سابق إنذار، على الرغم من أنها استمرت في الاستجابة لطلبات ping وبدت في حالة عمل جيدة.
ما الذي يحدث بالضبط في شبكة نظام macOS؟
أكثر ما يلفت الانتباه في هذه المشكلة هو أنها لا تُسبب انقطاعًا تامًا للشبكة كما هو معتاد، حيث يختفي رمز الواي فاي أو يُشير النظام إلى عدم وجود شبكة. في الواقع، يمكن أن تستمر الاتصالات الحالية في العمل عادةً لفترة من الوقت.
يظهر الخلل في معالجة نشاط الشبكة الجديد. فبمجرد أن يفيض العداد الداخلي، يبدأ نظام macOS في حساب أوقات اتصالات TCP المغلقة بشكل خاطئ، وخاصة تلك التي تكون في حالة [غير واضح/غير واضح]. وقت الانتظاروهي المرحلة التي ينتظر فيها النظام قليلاً قبل إنهاء الاتصال تماماً.
في الظروف العادية، يقوم نظام التشغيل بتنظيف هذه الاتصالات المنتهية بشكل دوري. منافذ مؤقتة مجانية والموارد. ومع ذلك، عندما يتوقف عداد TCP عن التقدم بشكل صحيح، يستنتج النظام مرارًا وتكرارًا أن تلك الاتصالات "لم تنتهِ صلاحيتها بعد" ولا يقوم بإزالتها.
والنتيجة هي تراكم تدريجي للإدخالات في جدول الاتصال حتى تم استنفاد المنافذ المتاحة لاتصالات TCP الجديدة.من تلك النقطة فصاعدًا، تبدأ أي محاولة لفتح اتصال جديد (صفحة ويب، واجهة برمجة تطبيقات، نفق SSH، إلخ) في الفشل، بينما قد تستمر وظائف أخرى مثل ping (ICMP) في الاستجابة، مما يعقد عملية التشخيص.
عمليًا، يبدو أن جهاز ماك يبقى متصلًا بالشبكة المحلية، ويستجيب للاختبارات الأساسية، بل ويمكنه الحفاظ على الجلسات المفتوحة الحالية، ولكنه غير قادر على بدء اتصالات جديدة. بالنسبة لخدمة إنتاجية، يُترجم هذا إلى انقطاعات صامتة، وأوقات انتظار، وأخطاء متقطعة في التطبيقات التي تعتمد على الإنترنت.
حالة كلاسيكية من حالات تجاوز السعة تذكرنا بنظام التشغيل ويندوز 95
إن النمط الذي تم اكتشافه في نظام macOS ليس جديدًا في تاريخ الحوسبة. إنه تجاوز عداد الوقت ذي 32 بت، وهي فئة معروفة من الأخطاء التي أثارت بالفعل ضجة في أنظمة أخرى.
في تسعينيات القرن الماضي، عانى نظاما التشغيل ويندوز 95 وويندوز 98 من عيب مماثل: فبعد حوالي 49,7 يومًا من التشغيل، بدأ النظام بالتصرف بشكل غير منتظم بسبب طريقة قياسه للوقت بالمللي ثانية في بعض برامج التشغيل. وكانت الحسابات الرياضية الأساسية واحدة: فاستخدام عدد صحيح 32 بت لقياس المللي ثانية يُسبب حتمًا مشاكل في تلك الفترة الزمنية تحديدًا.
يحدث شيء مشابه مع أخطاء التوقيت الأخرى، مثل الخطأ الشهير مشكلة عام 2038 في أنظمة يونكس ذات 32 بت، يتجاوز عداد الثواني الحد الأقصى منذ عام 1970 فصاعدًا، مما يؤدي إلى ظهور تواريخ غير صحيحة. أما في نظام macOS، فيتركز التأثير على... نظام TCP الفرعي، والتي لا تتعامل مع إعادة ضبط عداد tcp_now بشكل جيد وتترك اتصالات "وهمية" تشغل الموارد.
وتشير التحليلات المنشورة أيضًا إلى التنفيذ الخاطئ لمعيار TCP (بالإشارة إلى RFC 7323) من Apple، على الأقل فيما يتعلق بإدارة المؤقتات ومسح الاتصالات على فترات منتظمة. تفصيل يبدو بسيطًا في الكود، لكن له عواقب وخيمة بعد أسابيع من الاستخدام المتواصل.
من هم الأكثر تضرراً: من خوادم ماك إلى أجهزة الكمبيوتر المحمولة غير المستخدمة
في الاستخدام المنزلي المعتاد في إسبانيا أو أوروبا، حيث يتم إيقاف تشغيل الكمبيوتر بانتظام أو تثبيت تحديثات تتطلب إعادة التشغيل، ليس من الشائع الوصول إلى 49,7 يومًا من وقت التشغيل.ولهذا السبب لن يواجه العديد من المستخدمين هذه المشكلة.
لكن الوضع يتغير عندما نتحدث عن بيئات عمل احترافية وآلات تعمل باستمرارتتداخل هنا عدة عوامل خطر:
- تم استخدام جهاز Mac mini وبرنامج Mac Studio كخوادم، وهو أمر شائع جدًا في استوديوهات تطوير التطبيقات، والوكالات الإبداعية، أو الشركات التي تحتاج إلى نظام macOS لتجميع برامج Apple.
- معدات الدوائر المتكاملة/الأقراص المدمجة والأتمتةحيث تعمل برامج التكامل المستمر على أجهزة Apple لأسابيع دون إيقاف تشغيلها.
- محطات العمل التي نادراً ما يتم إعادة تشغيلهاعلى سبيل المثال، في أقسام الهندسة، تحرير الفيديو أو الصوت الاحترافي.
- أجهزة الكمبيوتر المحمولة مثل MacBook Air أو MacBook Pro والتي يتم استخدامها عن طريق إغلاق وفتح الغطاء، والدخول في وضع الراحة ولكن دون إيقاف التشغيل أبدًا.
في العديد من المنازل والمكاتب، هذا أمر شائع ببساطة قم بخفض غطاء الكمبيوتر المحمول ويستمر الجهاز بالعمل في اليوم التالي دون الحاجة إلى إعادة تشغيله. أضف إلى ذلك عادة تأجيل تحديثات النظام، ولن يكون من النادر أن يعمل جهاز ماك لأكثر من شهر ونصف دون أن يلاحظ أحد ذلك.
تشير العديد من الشهادات التي جمعها المطورون إلى هذا النمط تحديدًا: بعد أسابيع من الاستخدام، يبدأ جهاز MacBook الذي بدا وكأنه "يصبح أغرب فأغرب" في مواجهة أخطاء في الاتصال، وتفشل بعض الصفحات في التحميل، وتتجمد بعض التطبيقات عند محاولة الوصول إلى الإنترنت، ويلقي المستخدم باللوم على جهاز التوجيه أو مزود خدمة الإنترنت، بينما تكمن المشكلة في الواقع في الجهاز نفسه. عداد داخلي لنظام macOS.
الأعراض الشائعة: يبدو أن هناك شبكة، لكن لا يوجد شيء جديد يتصل بها.
عادةً ما يصف من يواجهون هذا الخطأ موقفًا محيرًا للغاية. فمن ناحية، يستمر جهاز ماك في إظهار أنه متصل عبر شبكة Wi-Fi أو Ethernetيستجيب لطلبات الاتصال، وفي كثير من الحالات، تظل بعض الاتصالات القائمة بالفعل نشطة.
لكن في الوقت نفسه، حتى العمليات الأساسية مثل فتح موقع ويب أو الاتصال عبر [غير واضح - ربما "الاتصال عن طريق" أو "الاتصال عن طريق"] تبدأ في الفشل. SSH إلى خادم آخر، أو مزامنة مع السحابة، أو إجراء استدعاءات واجهة برمجة التطبيقات. تعرض التطبيقات رسائل انتهاء المهلة، وتفشل عمليات التنزيل في البدء، وتتوقف بعض الخدمات عن استقبال البيانات دون ظهور خطأ واضح على مستوى النظام.
في الخوادم وبيئات الإنتاج، يُترجم هذا إلى انقطاع الخدمة على منصات الويب، تتوقف قوائم انتظار المهام عن المعالجة، وتصبح عمليات التكامل غير مستجيبة، وتفشل خطوط أنابيب CI/CD في الاتصال بالمستودعات الخارجية أو قواعد البيانات أو نقاط النهاية.
أتاحت لنا بعض أدوات المراقبة رؤية ما يحدث في الخفاء: فبعد مرور 49 يومًا حرجًا، يبدأ عدد الاتصالات في حالة TIME_WAIT بالنمو باطراد، بينما نطاق ميناء مؤقت (والتي تحتوي في نظام macOS على حوالي 16.000 خيار) تمتلئ تدريجياً حتى تصبح "مشغولة" تماماً باتصالات لا تنتهي صلاحيتها أبداً.
لذلك، على الرغم من أن النظام لا يُظهر تنبيهًا واضحًا، فإن ما يحدث بالفعل هو أن لم تعد المنافذ متاحة لفتح اتصالات TCP جديدة. الشبكة ليست معطلة، ولكن حزمة بروتوكول TCP مشبعة فعلياً.
الحلول الحالية: إعادة التشغيل ومنع الوصول إلى الحد الأقصى
حتى اليوم، ووفقًا لكل من شركة فوتون ومطورين آخرين قاموا بتحليل المشكلة، فإن الحل الوحيد الموثوق به حقًا هو أعد تشغيل جهاز Mac الخاص بك بالكاملتؤدي إعادة التشغيل هذه إلى إعادة ضبط عداد tcp_now، ومسح الاتصالات المتراكمة، وإعادة الشبكة إلى وضعها الطبيعي.
وهذا له تبعات واضحة على أي شخص يدير البنية التحتية على نظام macOS، سواء كان ذلك في استوديو تطوير صغير، أو شركة صغيرة أو متوسطة، أو مركز بيانات: لا يُنصح بترك جهاز ماك يعمل لأكثر من 49 يومًا متواصلة. دون إيقاف التشغيل أو إعادة التشغيل في المنتصف.
من بين تدابير التخفيف الموصى بها في الأوساط المهنية في أوروبا ما يلي:
- جدول إعادة التشغيل الدورية (على سبيل المثال، كل 30 أو 40 يومًا) على خوادم Mac mini أو Mac Studio أو عقد CI.
- تكوين تنبيهات وقت التشغيل لتلقي تنبيهات عندما يقترب الجهاز من 40 يومًا من التشغيل.
- راقب عدد اتصالات TIME_WAIT واستخدام المنافذ المؤقتة من خلال أدوات الشبكة، وخاصة على الأجهزة الحساسة.
- في البنى المختلطة، ضع في اعتبارك نقل أحمال الخادم إلى نظام لينكس عندما لا يكون استخدام نظام macOS ضروريًا، يتم حجز أجهزة Mac لمهام محددة مثل تجميع التطبيقات أو إجراء اختبارات محددة.
أما بالنسبة للمستخدمين الأفراد الذين يمتلكون جهاز كمبيوتر مكتبي من نوع MacBook أو iMac أو Mac mini، فإن النصيحة أبسط بكثير: أعد تشغيل جهاز الكمبيوتر الخاص بك من وقت لآخرإعادة التشغيل الشهرية عادة ما تكون أكثر من كافية لتجنب الوصول إلى هذا الحد، كما أنها تساعد أيضًا في تنظيف عمليات الخلفية وتسريبات الذاكرة الصغيرة التي تتراكم بمرور الوقت.
هل هي مشكلة أمنية أم مشكلة استقرار؟
في الوقت الحالي، يتفق الخبراء على أن الخلل الذي استمر 49 يومًا في نظام macOS هو في الأساس... مشكلة الاستقرار والتوافرلا تُعدّ هذه ثغرة أمنية قابلة للاستغلال بالمعنى التقليدي. لا يوجد ما يشير إلى إمكانية استغلال المهاجم لهذه الثغرة مباشرةً لتنفيذ تعليمات برمجية أو السيطرة على النظام.
هذا لا يعني أنه ليس له تأثير على استمرارية الخدمةبالنسبة للشركات التي تدير خدمات على مدار الساعة طوال أيام الأسبوع على أجهزة ماك، فإن الانقطاع الصامت في الاتصالات الجديدة يمكن أن يعني توقف الخدمة، أو فقدان البيانات أثناء النقل، أو حدوث اضطرابات في العمليات الحيوية.
من بعض النواحي، يشبه هذا السلوك حالة من رفض الخدمة عن طريق الخطأ أي، خرق أمني. يدخل النظام، من تلقاء نفسه، في حالة يتوقف فيها عن قبول الاتصالات، مما يؤدي إلى التأثير التشغيلي الناتج.
الأسئلة الشائعة حول انقطاع الإنترنت لمدة 49 يومًا
هل يفقد نظام macOS إمكانية الوصول إلى الإنترنت بعد 49 يومًا؟
ما يحدث ليس انقطاعاً تاماً، بل هو بالأحرى تبدأ اتصالات TCP الجديدة في الفشلقد يظل النظام يبدو متصلاً، ويستجيب لطلبات الاتصال، ويحافظ على بعض الجلسات، ولكنه لن يكون قادراً بعد الآن على فتح اتصالات جديدة بالخدمات أو مواقع الويب أو واجهات برمجة التطبيقات.
هل يؤثر ذلك على جميع إصدارات نظام macOS وجميع أجهزة Mac؟
يشير التحليل إلى أن الخلل موجود في جميع الإصدارات الحديثة من نظام التشغيل macOS وبالتالي، ينطبق هذا على أي جهاز كمبيوتر يعمل بنظام التشغيل: MacBook، أو iMac، أو Mac mini، أو Mac Studio. العامل الأساسي ليس الطراز، بل المدة التي ظل فيها الجهاز قيد التشغيل دون إعادة تشغيل.
هل تم تأكيد وجود خلل برمجي رسميًا من قبل شركة آبل؟
تم توثيق المشكلة من قبل المطورين ومديري الأنظمة، وتم إبلاغ شركة آبل بها، ولكن لا يوجد وصف رسمي مفصل حتى الآن. لا يوجد في الوثائق العامة للشركة المصنعة ولا في أي سجل لتحديث محدد تم إصداره لهذه الحالة.
كيف يمكنني منع جهاز ماك الخاص بي من نفاد اتصالات الشبكة الجديدة؟
الإجراء الأكثر فعالية بسيط للغاية: أعد تشغيل جهاز Mac الخاص بك بانتظامبالنسبة للخوادم أو المعدات الحيوية، يُنصح بجدولة إعادة التشغيل قبل بلوغ مدة تشغيلها 49 يومًا. أما بالنسبة للمستخدمين المنزليين، فتكفي عمليات إعادة التشغيل العرضية، على سبيل المثال، عند تثبيت تحديثات النظام.
تشير كل الدلائل إلى أن هذه المشكلة، رغم أنها بالكاد ملحوظة للمستخدم العادي، إلا أنها تؤثر بشكل واضح على البنى التحتية التي تعتمد على نظام macOS وتبقى قيد التشغيل لفترات طويلة. إلى أن تُصدر Apple حلاً نهائياً على مستوى نواة النظام، مراقبة وقت التشغيل وجدولة عمليات إعادة التشغيل الدورية لقد أصبح هذا الأمر ممارسة شبه إلزامية لأولئك الذين يستخدمون أجهزة ماك كخوادم أو أدوات عمل مستمرة.


