استكشاف الأخطاء وإصلاحها
قسّم أي مشكلة إلى سؤالين أولاً: هل تصل حركة المرور إلى Chute أصلاً (مشكلة التقاط)، وهل يستطيع Chute إعادة توجيهها (مشكلة إعادة توجيه)؟ عرض حركة المرور الحي يجيب عن هذا — افتح لوحة المعلومات (Dashboard) على iOS أو تبويب حركة المرور (Traffic) في النافذة الرئيسية على Mac وتصفّح: إذا لم يظهر شيء، فإن Chute لا يستقبل الحركة؛ وإذا ظهرت اتصالات لكنها تفشل، فإن Chute لا يستطيع إعادة توجيهها. لكل نصف إصلاحات مختلفة تماماً.
هذه الصفحة لحالة «لا يعمل». أما إن كان السؤال «ماذا يفعل» — قراءة الطلبات، والاحتفاظ بالمحتويات، وتغيير استجابة، ومحاكاة عطل — فابدأ من تنقيح الشبكة.
لا يظهر شيء: مشاكل الالتقاط
Chute iOS
- يرفض المفتاح التشغيل ويهتز شريط الإعدادات — لا توجد إعدادات مختارة. اضغط شريط الإعدادات (Config)، واضغط على إعدادات حتى تُظهر علامة اختيار، ثم تم (Done) ("Please select configuration first").
- رُفض مربع حوار إذن VPN — بدّل المفتاح مجدداً ووافق عليه. إذا علق ملف تعريف VPN (يرتد المفتاح فوراً)، فاستخدم إعادة تعيين تكوين VPN (Reset VPN Configuration) في إعدادات التطبيق؛ يعيد التشغيل التالي إنشاء ملف التعريف ويطلب الإذن مجدداً.
- تطبيق VPN آخر متصل — يشغّل iOS نفق VPN واحداً في كل مرة. افصل التطبيق الآخر (أو عطّل قواعد on-demand لديه، إذ يمكنها إعادة الاستيلاء على النفق بصمت).
Chute Mac
- بروكسي النظام مفعّل لكن تطبيقاً ما يتجاهله — كثير من الأدوات (برامج الطرفية خصوصاً) لا تحترم بروكسي النظام. وجّهها إلى مستمع Chute صراحةً (نسخ أمر تصدير Shell (Copy Shell Export Command) في القائمة يفعل ذلك لبرامج الشل (shell))، أو استخدم الوضع المحسن الذي يلتقط الحركة على مستوى طبقة الشبكة.
- بروكسي النظام أو الوضع المحسن لا يعمل — كلاهما يعتمد على المساعد ذي الامتيازات الخاص بـ Chute. يطلب تثبيته الأول منك الإذن له، بعد أن يشرح Chute السبب (Chute Needs a Helper)؛ وعلى macOS 13 وما بعده قد يلزم أيضاً السماح به في إعدادات النظام ← عام ← عناصر تسجيل الدخول والإضافات، وهو ما ينبّهك إليه Chute عبر Approval Required أو Allow Chute in Login Items. ويجب أن يكون المساعد بالإصدار الذي يتوقعه التطبيق (0.8.6 حالياً): فالمساعد غير المطابق يُعاد تثبيته تلقائياً، لذا وافق على ذلك الطلب بعد تحديث Chute.
- الوضع المحسن لا يبدأ — في نوع PacketTunnel يحتاج امتداد الشبكة إلى موافقة أيضاً؛ انظر استكشاف أخطاء الوضع المحسن لمسارات إعدادات النظام الدقيقة، وحالة "System Extension Blocked"، وإعادة تعيين VPN العالق.
- الحركة إلى عناوين الشبكة المحلية تتجاوز Chute عمداً — راجع
skip-proxyفي خيارات متنوعة قبل افتراض أن الالتقاط معطل. وليسtun-excluded-routesهو الجواب هنا: إذ لا تقرأه إلا أنفاق Chute iOS و Chute tvOS و Chute Android، ولا يفعل شيئاً على macOS. ولإدخال نطاق من الشبكة المحلية في الوضع المحسن على Mac، أدرجه فيtun-included-routes، الذي يحترمه نوعا الوضع المحسن كلاهما.
تظهر الاتصالات لكنها تفشل: مشاكل إعادة التوجيه
- اعزل المسار. بدّل مجموعة سياساتك إلى
DIRECT: إذا حُمّلت الصفحات مباشرةً لكنها فشلت عبر البروكسي، فالمشكلة في خادم البروكسي — مضيف/منفذ/بيانات اعتماد/خوارزمية تشفير خاطئة، أو أن الخادم متوقف. شغّل اختبار زمن الاستجابة على المجموعة؛ السياسة التي لا تجتاز الاختبار أبداً بينما تجتازه غيرها هي التي تسمّي الجاني. - القاعدة الخاطئة هي التي تطابق. انظر إلى القاعدة المطابقة لاتصال فاشل في عرض حركة المرور الحي، ثم أعد قراءة ترتيب تقييم القواعد: تُقيَّم القواعد على مرحلتين، لذا يمكن — في الطلبات القائمة على اسم المضيف — أن تطابق قاعدة غير قائمة على IP لاحقة قبل قاعدة IP سابقة.
no-resolveوموضعFINALهما المشتبه بهما المعتادان. - إجابات DNS تبدو خاطئة. تحقق من قسم DNS: مع DNS المشفر، تأكد من أن خادم DoH/DoT نفسه قابل للوصول دون البروكسي؛ وامسح ذاكرة DNS المؤقتة بعد تغيير الخوادم (صف Purge DNS Cache في لوحة التحكم على iOS، أو
flushDNSمن سكريبت، أوDELETE /api/dns/cacheعلى HTTP Control API). - التطبيقات المعتمدة على UDP تسيء التصرف — تأكد من أن السياسة المختارة تدعم ترحيل UDP (انظر مصفوفة القدرات في خادم البروكسي)، وتذكّر أن Tailscale لا يعيد توجيه ICMP، لذا يبقى
pingعبر عقدة خروج صامتاً.
فك تشفير HTTPS لا يفك التشفير
- يجب تثبيت شهادة CA والوثوق بها — خطوتان منفصلتان على iOS؛ والثانية (الإعدادات ← عام ← حول ← إعدادات الثقة بالشهادات) هي التي يفوّتها الجميع. انظر تثبيت شهادة CA والوثوق بها.
- يجب أن يطابق المضيف قائمة
hostnameفي[MITM]— لا يُفك تشفير إلا المضيفين المصرَّح بهم، وعلى المنفذ 443 فقط ما لم تقل لاحقة:port/:0غير ذلك. - بعض التطبيقات تثبّت شهاداتها (pinning) وستفشل أثناء فك التشفير — استبعد مضيفيها بالبادئة
-بدلاً من محاربتها. - لا يمكن فك تشفير QUIC/HTTP-3 — انظر
block-quicلإعادة توجيه العملاء المتوافقين إلى TCP. - على iPhone و Apple TV و Android فك التشفير ميزة مرخّصة: بلا ترخيص لا يُفكّ تشفير شيء مهما طلب الإعداد أو واجهة التحكم البرمجية — انظر الترخيص والتفعيل. وعلى iPhone المفتاح هو صف MitM في لوحة التحكم. أما Apple TV فلا صف MitM فيه إطلاقاً، فيُشغَّل فك التشفير هناك بـ
enable = trueتحت[MITM]في ملف الإعدادات، أو وقت التشغيل من وحدة تحكم الويب أو من Chute Dashboard أو بـPUT /api/features/mitm.
قراءة السجلات
عندما لا تحسم الأقسام أعلاه الأمر، يحسمه السجل عادةً:
- ارفع مستوى السجل مؤقتاً:
loglevel = verbose(تراجع عنه بعد ذلك — verbose بطيء). - Chute Mac: تبويب السجل (Log) في النافذة الرئيسية. Chute iOS: شاشة سجل الجلسة، وفيها زر مشاركة في شريط التنقّل يسلّم كل شرائح هذا التشغيل. Chute tvOS: شاشة سجل الجلسة، وفوقها مرشّح خطورة All / Notify+ / Warning+ / Fatal (الكل / إشعار فأعلى / تحذير فأعلى / حرج) يكفي معه جهاز التحكم لتضييق النطاق. Chute Android: لا يُكتب سجل المحرك في ملف هناك — اقرأه في صفحة السجلات في وحدة التحكم (البند التالي)، أو خذه في حزمة تشخيص وقت التشغيل (Runtime Diagnostic Bundle)، أو تابعه بـ
adb logcat. أما تبويب السجلات (Logs) في لوحة المعلومات وتبويب السجل (Log) لجلسة في قائمة الجلسات فلا يعرضان إلا سجل خدمة التطبيق نفسه (البدء والإيقاف وتغيّرات الشبكة)، الذي يمسحه تنظيف السجلات المحلية (Clean Local Logs) في الإعدادات. - على أي منصة: صفحة السجلات في وحدة التحكم، أو
GET /api/logsعبر HTTP Control API. - التحذيرات هي الأسطر المهمة: السياسات المجهولة، والخيارات المرفوضة، والقواعد المتعذر تحليلها تُسجَّل كلها كتحذيرات عند تحميل الإعدادات.
- يُقسَّم السجل إلى شرائح بحجم بضعة ميغابايت. يحتفظ Chute بأحدثها لكل تشغيل، لذا فالملف الأحدث هو نهاية الحكاية لا الحكاية كلها — خذها جميعاً. (أما Chute Android فلا يقسّم إلى شرائح: يبقى سجل المحرك نفسه في حلقة في الذاكرة، ويُلحِق التطبيق سجل خدمته بملف واحد هو
logs/runtime.log، مع نسخة لكل تشغيل تحتsessions/<run id>/، وكلاهما داخل تخزينه الخاص.) - على macOS توجد الملفات نفسها تحت
~/Chute/Share/<run id>/— انظر مواقع الملفات (macOS).
إرسال حزمة تشخيصية
حين تحتاج أن ينظر غيرك في المشكلة، أرشيف واحد أفضل من ستة ملفات تبحث عنها في ورقة المشاركة ووصف لانهيار من الذاكرة. تميّز التطبيقات بين نوعين: حزمة تشخيص وقت التشغيل التي يبنيها المحرك العامل، وحزمة التشخيص دون اتصال التي يبنيها التطبيق وحده. في كليهما تُستبدل كلمات المرور والرموز وملفات تعريف الارتباط (cookies) وبيانات الاعتماد داخل الروابط بـ <redacted>، ومحتويات الطلبات والاستجابات غير مضمّنة.
حزمة تشخيص وقت التشغيل — يبنيها المحرك العامل: نسخة منقّحة من الإعداد، ولقطة صحة المحرك (بما فيها كيف انتهى التشغيل السابق)، ولحظات هذا التشغيل الجديرة بالانتباه، والقواعد والسياسات المحمَّلة، و DNS، وحركة المرور، وذيل السجل (وعلى Android حلقة سجل المحرك في الذاكرة، إذ لا يكتب المحرك نفسه أي ملفات). تحتاج إلى أن يكون النفق يعمل.
- Chute iOS: لوحة التحكم ← آخر صف في قسم LOCAL PROXY، حزمة تشخيص وقت التشغيل (Runtime Diagnostic Bundle) — معروض دائماً، رمادي حتى يتصل النفق، ولا يحتاج إلى
external-http-controller؛ والنقر عليه يبني الحزمة ويفتح ورقة المشاركة - Chute Android: لوحة التحكم ← حزمة تشخيص وقت التشغيل (Runtime Diagnostic Bundle)، أسفل صفوف HTTP API — معطّل حتى تعمل VPN
- Chute Mac: شريط القوائم ← حفظ حزمة التشخيص… (Save Diagnostic Bundle…) — يعمل المحرك داخل التطبيق، فتُبنى الحزمة في مكانها وتعمل سواء كان المحرك يعمل أم متوقفاً؛ وهي دائماً من نوع وقت التشغيل، ولا يبني الـ Mac حزمة دون اتصال أبداً
- Chute tvOS: لا تملك هذه المنصة ورقة مشاركة ولا متصفّح ملفات، فزر Download diagnostic bundle (تنزيل حزمة التشخيص) في وحدة التحكم هو السبيل الوحيد — امسح رمز QR في التطبيق وافتح صفحة Diagnostics على جهاز تستطيع الإرسال منه
- من وحدة التحكم على أي منصة: زر التنزيل في صفحة Diagnostics، أو
POST /api/diagnostics/bundle
حزمة التشخيص دون اتصال — يبنيها التطبيق من دون المحرك، فتعمل حين يكون النفق متوقفاً أو لم يبدأ قط: تقرير المضيف من التطبيق (الإصدار، والجهاز، وحالة VPN، وملخص الإعداد، وصفحات تشخيص «الشبكة / البروكسي / جدول التوجيه» نصاً)، وعلامة خروج التشغيل السابق (تُبلَّغ بـ «running» إن كان المحرك يعمل فعلاً)، وملفات السجل التي يصل إليها التطبيق.
- Chute iOS: الإعدادات ← قسم DIAGNOSIS ← حزمة التشخيص دون اتصال (Offline Diagnostic Bundle)
- Chute Android: الإعدادات ← قسم DIAGNOSE ← حفظ حزمة التشخيص دون اتصال (Save Offline Diagnostic Bundle)
- Chute tvOS: الإعدادات ← حزمة التشخيص دون اتصال (Offline Diagnostic Bundle) — يبني Apple TV الحزمة ويعرض رمز QR؛ امسحه بهاتف على الشبكة نفسها (أو افتح العنوان المعروض على حاسوب) لتنزيل ملف zip — الرابط يعمل فقط ما دامت تلك الشاشة مفتوحة
- Chute Mac: لا حزمة دون اتصال هنا، ولا حاجة إليها — فـ حفظ حزمة التشخيص… (Save Diagnostic Bundle…) في شريط القوائم يبني نوع وقت التشغيل حتى والمحرك متوقف، محتفظاً بالخروج الأخير وذيل السجل والإعداد، والملفات التي يستقي منها ملفات عادية يمكنك إرفاقها مباشرة: شرائح السجل تحت
~/Chute/Share/<run id>/وعلامة التشغيل~/Chute/Share/last-run.json— انظر مواقع الملفات (macOS)
على المنصات التي تبني النوعين، اسم الملف يخبرك أيهما لديك: حزمة وقت التشغيل هي diagnostics-<timestamp>.zip، وحزمة دون اتصال هي diagnostics-offline-<timestamp>.zip؛ وكلتاهما تحتوي على manifest.json يقول حقل kind فيه الشيء نفسه. أما الحزمة المحفوظة من Chute Mac فهي دائماً من نوع وقت التشغيل، فلا يحمل اسمها الجزء offline- أبداً.
قبل أن ترسل شيئاً، يستحق سطر الخروج السابق في صفحة Diagnostics قراءةً: أُوقف بسبب الذاكرة (Killed for memory) يعني أن النظام استرجع Chute لا أن Chute أخفق، وهذا يغيّر ما ينبغي البحث عنه.
لماذا لا تفعل إعادة الكتابة شيئاً؟
قاعدة إعادة كتابة لا تطابق أبداً ليس لها عرَض: لا يحدث شيء، وهو ما يبدو تماماً مثل قاعدة طابقت ولم تُحدث أثراً مرئياً. وحدة التحكم تجيب مباشرة: صفحة Rules (القواعد) تسرد كل قاعدة إعادة كتابة أو استجابة وهمية عملت في هذا التشغيل مع عدّادها. يتتبّع الجدول حتى 512 قاعدة مختلفة؛ وبعدها يبلّغ بعدد القواعد التي عملت دون تتبّع (rewrite_hit_dropped_rules في الـ API)، ويصبح عندئذٍ عرضاً جزئياً فحسب.
- القاعدة الغائبة عن تلك القائمة لم تطابق قط — ما دام الجدول لا يبلّغ عن قواعد غير متتبَّعة. راجع نمطك في ضوء صيغ الروابط في إعادة كتابة الرابط؛ وكل عائلات إعادة الكتابة، ومنها إعادة كتابة الترويسات، تطابق النمط في أي موضع من الرابط.
- أما القاعدة التي عملت ولم تُحدث تغييراً تراه فهي مشكلة أخرى — افتح الاتصال في وحدة التحكم واقرأ أسطر إعادات الكتابة المطبّقة، فهي تسمّي القاعدة بنصّها.
- لا ترى القواعد حركة HTTPS إلا إذا كان فك تشفير HTTPS مفعّلاً لذلك المضيف.
هذه الصفحة ترجمة للنسخة الإنجليزية. في حال وجود اختلاف، يُعتمد على النسخة الإنجليزية.
ملاحظة: التطبيق لا يدعم اللغة العربية حاليًا.