1. ماذا يعني «Clash for macOS» فعلًا؟

قد يشير الاسم إلى ClashX الأصلي أو ClashX Pro مع الوضع المحسن أو ClashX Meta المبني على mihomo أو إصدار macOS المتوقف من Clash for Windows أو تفرعات مجتمعية مستقلة. ليست النواة والقوائم وحقول الإعداد متطابقة بينها.

عند التحقق، كان أحدث إصدار من ClashX Meta لدى MetaCubeX هو v1.4.46 المنشور في 1 أكتوبر 2026. وتنص وثيقة README للإصدار صراحة على أن المشروع لا يملك موقعًا رسميًا. لذلك نزّل فقط من MetaCubeX/ClashX.Meta Releases ولا تثق بمواقع تنزيل تحمل الاسم نفسه.

قد يحتفظ الفرع master الافتراضي بشيفرة أقدم، بينما تستخدم الإصدارات فرع meta وعلامات الإصدارات. استخدم الإصدار المنشور بدل الحكم على الميزات من الفرع الافتراضي أو تجميع شيفرة قديمة. يركز هذا الدليل على ClashX Meta v1.4.46، مع ذكر ClashX القديم وCFW عند الحاجة فقط.

2. System Proxy وTUN وأنماط التوجيه وDNS طبقات منفصلة

  • لا يغطي System Proxy إلا التطبيقات التي تحترم إعدادات وكيل macOS؛ وقد تتجاهله الطرفية وتطبيقات UDP والألعاب وDocker والآلات الافتراضية والخدمات الخلفية.
  • يلتقط TUN تطبيقات أكثر، لكن النتيجة تتوقف على auto-route والقواعد وUDP وIPv6 وDNS وواجهات VPN أو الواجهات الافتراضية الأخرى.
  • يعالج Global الحركة التي تصل إلى النواة فقط؛ ولا يستطيع التقاط التطبيقات التي تتجاوز Clash.
  • DoH تشفير وليس إخفاء هوية، وTUN وسيلة التقاط وليس إخفاء هوية. يظل مزود الوكيل قادرًا على رؤية IP العام الأصلي.
  • الحسابات وملفات تعريف الارتباط واللغة والمنطقة الزمنية وبصمات المتصفح وخدمات موقع macOS وتحديد الموقع عبر Wi-Fi قد تكشف الهوية أو الموقع.
التطبيق
   │
   │  1. System Proxy: يتصل التطبيق بمنفذ وكيل Clash المحلي
   │  2. TUN: تلتقط واجهة utun حركة طبقة الشبكة
   ▼
ClashX Meta / mihomo
   │
   │  3. Rule / Global / Direct: اختيار منفذ الخروج
   │  4. DNS: تحديد كيف وأين تُحلل الأسماء
   ▼
DIRECT / عقدة الوكيل / REJECT
   │
   ▼
الوجهة

3. التثبيت والبدء السريع للمبتدئين

  • نزّل ملف ZIP للإصدار من MetaCubeX/ClashX.Meta Releases فقط، وفك ضغطه وانقل التطبيق إلى Applications. لا تعطّل Gatekeeper كليًا ولا تزيل خاصية الحجر من تطبيق مجهول بلا داعٍ.
  • وافق على المساعد المميز عند أول تشغيل بعد التحقق من المصدر فقط؛ فهو يدير إعدادات وكيل النظام وTUN وDNS.
  • مجلد الإعداد الافتراضي هو ~/.config/clash.meta/ ويمكن فتحه عبر Config → Open config folder؛ انسخه احتياطيًا قبل التحرير.
  • أضف ملف HTTPS موثوقًا من Config → Remote Config → Manage، أو ضع ملف YAML محليًا في مجلد الإعداد واختره.
  • اختر Rule وعقدة حقيقية، وفعّل Set as system proxy، وتحقق في المتصفح، ثم قرر هل تحتاج TUN.
  • Start at login يشغّل التطبيق عند الدخول فقط؛ ولا يتحقق من العقدة أو الملف أو DNS.
  • Set as system proxy: يكتب إعدادات HTTP/HTTPS/SOCKS في macOS. قد تحتاج Wi-Fi وEthernet والخدمات الأخرى إلى فحص منفصل، وقد يكتب VPN آخر فوقها.
  • TUN Mode: يلتقط التطبيقات التي تتجاهل وكيل النظام. علامة القائمة لا تثبت صحة التوجيه؛ تحقق من DNS وConnections والمنفذ الفعلي.
  • Outbound modes: Rule للتقسيم اليومي، وGlobal للاختبار المضبوط، وDirect لتجاوز عقد الوكيل.
  • Allow LAN: يسمح لأجهزة أخرى باستخدام منافذ الوكيل على Mac. أبقه مغلقًا؛ استخدام 127.0.0.1 محليًا لا يحتاجه، خصوصًا على Wi-Fi عام.
  • Copy shell command: ينسخ متغيرات HTTP/HTTPS/SOCKS للأصداف والعمليات الفرعية المتوافقة. نسخة IP الخارجية تتعلق أيضًا بفتح الشبكة المحلية.
  • الملفات البعيدة والتحديث التلقائي قد يكتبان فوق التعديلات اليدوية؛ احتفظ بنسخة محلية للتخصيص طويل الأمد.
  • قائمة تجاوز الوكيل: localhost و127.0.0.1 والنطاقات الخاصة و*.local تنتمي إليها عادة. لا تضف وجهات عامة يجب أن تستخدم الوكيل.
  • مزامنة iCloud للإعدادات قد تتضمن روابط الاشتراك وبيانات العقد والقواعد؛ فعّلها فقط إذا كان يجوز أن تصل إلى أجهزتك الأخرى.
  • إيقاف SSID قد يعيد الاتصال المباشر على شبكات Wi-Fi محددة؛ إنه تسهيل لا ميزة خصوصية، فراجع القائمة.
  • يعرض Dashboard وConnections العمليات والوجهات وTCP/UDP والقواعد والسلاسل؛ أغلق الاتصالات القديمة بعد تغيير العقد.
  • يستعيد Sniffer النطاقات من مصافحات HTTP وTLS وQUIC للمساعدة في التوجيه؛ ليس فك تشفير TLS كاملًا ولا إخفاء هوية.
  • يدير Fake IP وذاكرة التخزين تعيينات النطاقات؛ امسح الإدخالات القديمة بعد تغيير DNS أو TUN؛ Fake IP ليس تشفيرًا.
  • توفّر GEO وProviders بيانات GeoIP/GeoSite والعقد والقواعد البعيدة؛ يجب أن تكون مصادرها موثوقة.
  • المتحكم البعيد وAPI: أبقهما محليين مع سر، ولا تكشف API بلا مصادقة، ولا تعطِ السر للوحة مستضافة غير موثوقة.
  • نواة Alpha للاختبار؛ لا يجب أن يشغّل المستخدم العادي نواة غير مؤكدة بامتيازات مرتفعة.

5. الاختيار بين System Proxy وTUN

  • للتصفح العادي، يكفي System Proxy مع Rule وقائمة تجاوز مدققة؛ TUN ليس إلزاميًا.
  • لعدة تطبيقات سطح مكتب أو طرفية أو UDP، استخدم TUN وتحقق صراحة من DNS وIPv6 وUDP.
  • تشغيل System Proxy وTUN معًا لا ينشئ تشفيرًا مزدوجًا وقد يعقد التشخيص.
  • لاختبار خروج موحد مضبوط، استخدم Global مؤقتًا وتأكد أن GLOBAL يختار عقدة حقيقية، ثم عد إلى Rule المناسب.
  • أغلق الاتصالات القديمة بعد تغيير العقد أو الملفات حتى لا تبقى TCP قديمة على المنفذ السابق.
  • استخدم scutil --proxy لفحص وكيل النظام، وnetworksetup -listallnetworkservices لسرد خدمات الشبكة.

6. لماذا يسهل سوء فهم TUN DNS في ClashX Meta؟

تستخدم شيفرة الإصدار الحالي 8.8.8.8 كإعداد Meta TUN DNS الافتراضي. يطبق المساعد المميز إعدادات DNS عند بدء TUN، بينما يعيد dns-hijack في mihomo الطلبات المطابقة إلى المحلل الداخلي. لذلك ليس Meta TUN DNS بالضرورة المحلل الأعلى النهائي.

تنص وثائق mihomo صراحة على أن macOS وWindows لا يستطيعان التقاط طلبات DNS الموجهة إلى عناوين الشبكة المحلية تلقائيًا. لا تغيّر Meta TUN DNS عشوائيًا إلى 192.168.1.1 أو عنوان جهاز توجيه آخر، لأن ذلك قد يتجاوز المحلل الداخلي.

  • تأكد أن dns-hijack يغطي UDP وTCP على المنفذ 53.
  • رؤية 8.8.8.8 في scutil --dns لا تثبت تسربًا ولا إعدادًا آمنًا؛ افحص nameserver الداخلي واتصالات DNS الفعلية.
  • بعد توقف TUN أو تعطله، تحقق هل عادت إعدادات DNS الأصلية؛ وأعدها عند الحاجة من Network → Details → DNS.
  • قد تترك بعض الترقيات حالة القائمة غير متسقة مع TUN/DNS الفعلي؛ عطّل TUN وفعّله واختبر فعليًا بدل الثقة بعلامة الصح.

7. مثال DNS/TUN في mihomo الحالي

ادمج هذا الجزء في نسخة من الملف الحالي. لا تستبدل الاشتراك كله ولا تنسخه إلى ClashX القديم أو CFW.

  • يجعل respect-rules اتصالات DNS تتبع قواعد التوجيه؛ وإذا طابق عنوان المحلل نفسه DIRECT فقد تظل مباشرة.
  • يحل proxy-server-nameserver أسماء خوادم الوكيل ويتجنب مشكلة الاعتماد الدائري عند البدء؛ وقد يظل التحليل الأولي بحاجة إلى محلل متاح مباشرة.
  • يمكن لـ nameserver استخدام #GroupName لاختيار منفذ، مثل https://1.1.1.1/dns-query#Proxy، لكن Proxy يجب أن يكون اسم مجموعة حقيقية.
  • dns.ipv6: false يمنع إجابات AAAA فقط؛ ولا يعطل IPv6 في macOS.
  • auto-redirect مخصص أساسًا لـ Linux؛ أما strict-route فموثق أساسًا لـ Windows/Linux وليس مفتاح منع تسرب عامًا في macOS.
dns:
  enable: true
  listen: 127.0.0.1:1053
  ipv6: false
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  fake-ip-filter:
    - "*.lan"
    - "*.local"
  respect-rules: true
  proxy-server-nameserver:
    - "https://1.1.1.1/dns-query"
  nameserver:
    - "https://1.1.1.1/dns-query"
    - "https://8.8.8.8/dns-query"

tun:
  enable: true
  stack: gvisor
  auto-route: true
  auto-detect-interface: true
  dns-hijack:
    - "any:53"
    - "tcp://any:53"

8. DoH في المتصفح وIPv6 وWebRTC وQUIC وPrivate Relay

  • قد يتجاوز DoH المدار من المتصفح المحلل الداخلي وFake IP. لا تعطّله إلا بعد التحقق من TUN وDNS hijacking ثم أعد الاختبار.
  • مفتاح IPv6 ليس مفتاحًا عامًا لنظام macOS. إذا وُجد IPv6 عام على الشبكة الفعلية والنفق IPv4 فقط، فقد ترى وجهات IPv6 العنوان الأصلي.
  • قد يكشف WebRTC عناوين إضافية عبر STUN. قد يناسب disable_non_proxied_udp في Chromium السيناريوهات الصارمة، لكنه قد يضر بالاتصالات الفورية.
  • يستخدم QUIC بروتوكول UDP؛ يجب أن تكون لدى العقدة وTUN مسار UDP معروف، ولا تفترض رجوعًا آمنًا إلى TCP.
  • يغيّر iCloud Private Relay مسار Safari وبعض الحركة غير المشفرة. عند دمجه مع Clash قد يعرض Safari منفذًا مختلفًا عن التطبيقات الأخرى، فاختبر مسارًا واحدًا واضحًا كل مرة.
  • يمكن لخدمات موقع macOS استخدام شبكات Wi-Fi القريبة لتحديد الموقع. راجع الإذن لكل تطبيق من System Settings → Privacy & Security → Location Services بدل النظر إلى IP العقدة فقط.
  • TUN ليس تلقائيًا مفتاح قطع. يركز جدار حماية macOS المدمج أساسًا على الاتصالات الواردة وليس تصميمًا كاملًا يفشل مغلقًا للحركة الصادرة.

9. إعداد الطرفية وGit وcurl وSSH

لا تقرأ تطبيقات الطرفية بالضرورة وكيل نظام macOS. اضبط متغيرات البيئة في الصدفة الحالية أولًا، ولا تكتبها في ~/.zshrc إلا بعد التأكد من ثبات المنافذ وسلوك البدء.

  • لا يضبط وكيل Git عبر HTTP(S) اتصالات SSH تلقائيًا؛ استخدم TUN أو ProxyCommand لـ SSH.
  • تقرأ Homebrew وأدوات التنزيل متغيرات الوكيل غالبًا، لكن اضبطها وتحقق منها في جلسة الطرفية نفسها.
  • الفرق المهم في socks5h هو أن اسم المضيف يمكن تحليله عبر الوكيل بدل محلل محلي.
export http_proxy=http://127.0.0.1:7890
export https_proxy=http://127.0.0.1:7890
export all_proxy=socks5://127.0.0.1:7890

# curl عبر وكيل HTTP
curl --proxy http://127.0.0.1:7890 https://example.com/

# SOCKS مع تحليل اسم المضيف عن بُعد
curl --proxy socks5h://127.0.0.1:7890 https://example.com/

# ضبط وكيل Git عبر HTTP(S) وإزالته
git config --global http.proxy http://127.0.0.1:7890
git config --global --unset http.proxy

# مسح متغيرات الوكيل في الصدفة الحالية
unset http_proxy https_proxy all_proxy
unset HTTP_PROXY HTTPS_PROXY ALL_PROXY

# مثال SSH ProxyCommand لمضيف واحد فقط
Host example.com
    ProxyCommand nc -X 5 -x 127.0.0.1:7890 %h %p

10. المتصفحات وبيئات التطوير وDocker والآلات الافتراضية والألعاب

  • يتبع Safari وكيل النظام عادة، لكن افحص أيضًا Private Relay وقواعد DIRECT وإذن الموقع وConnections.
  • يتطلب Chrome وEdge فحص إضافات الوكيل وDNS الآمن وWebRTC وQUIC؛ ويمكن لـ Firefox استخدام SOCKS v5 يدويًا مع DNS عن بُعد.
  • قد تملك بيئة التطوير وإضافاتها وخوادم اللغة ومديري الحزم والطرفية المدمجة إعدادات شبكة منفصلة؛ نجاح عنصر لا يثبت نجاح غيره.
  • داخل حاوية Docker، يشير 127.0.0.1 عادة إلى الحاوية نفسها. يمكن لـ host.docker.internal الوصول إلى المضيف، لكن استخدامه مع Clash قد يتطلب Allow LAN والربط والجدار؛ لا تكشف وكيلًا بلا مصادقة على Wi-Fi عام.
  • قد تستخدم Parallels وVMware والمحاكيات NAT أو الجسر أو واجهات افتراضية مستقلة؛ TUN على المضيف لا يضمن الالتقاط في كل طوبولوجيا، فتحقق من التوجيه وDNS داخل كل بيئة.
  • تحتاج الألعاب والصوت الفوري غالبًا إلى TUN مع دعم UDP، وقد تكون المشغلات عمليات منفصلة. ping وtraceroute لا يثبتان تغطية الوكيل بثقة لأن ICMP يختلف عن TCP وUDP عبر الوكيل.

11. التحقق من الفعالية والتجاوزات الشائعة

  • استخدم scutil --proxy للتأكد من نقاط HTTP/HTTPS/SOCKS وscutil --dns لفحص المحللات المضبوطة.
  • في Connections والسجلات تحقق من العملية والقاعدة والسلسلة وإدخالات UDP؛ وسلسلة تنتهي بـ DIRECT تتجاوز العقدة.
  • اختبر IPv4 وIPv6 منفصلين باستخدام خدمتين مستقلتين؛ مدينة جغرافية خاطئة وحدها لا تثبت تسربًا.
  • يجب أن تبحث اختبارات DNS عن مزود الإنترنت أو جهاز التوجيه أو المحللات المحلية غير المتوقعة وDoH الخاص بالمتصفح؛ ولا يلزم أن يطابق IP المحلل العام عنوان العقدة.
  • في WebRTC ركّز على IPv4/IPv6 العامة الأصلية؛ مرشح .local عبر mDNS ليس تسرب IP عامًا تلقائيًا.
  • أعد الاختبار بعد النوم وتغيير Wi-Fi وتغيير العقدة وتحديث الملف وإعادة تشغيل ClashX Meta وإغلاق TUN غير المتوقع.
  • إذا عادت التطبيقات إلى الإنترنت مباشرة عند توقف Clash، فالإعداد ليس مغلقًا عند الفشل.

12. استكشاف الأخطاء وتوصيات أخيرة

  • Safari يعمل لكن الطرفية لا: استخدم متغيرات البيئة أو وكيلًا خاصًا بالتطبيق أو TUN.
  • System Proxy مفعّل لكن IP الأصلي ظاهر: افحص قواعد DIRECT وقائمة التجاوز وIPv6 وVPN الأخرى وPrivate Relay والاتصالات القديمة.
  • يكسر TUN الاتصال: افحص المساعد وDNS النظام وdns-hijack وDNS الداخلي وVPN المتنافسة ومكدس TUN؛ أعد الإعداد المعروف أولًا.
  • يظهر TUN مفعّلًا لكن الطرفية مباشرة: تحقق من الحالة الفعلية لا مؤشر القائمة، ثم بدّله وافحص scutil --dns والسجلات.
  • يكسر Fake IP خدمة معينة: أضف إدخالًا محددًا في fake-ip-filter بدل تعطيل وحدة DNS كاملة.
  • يبقى DNS خاطئًا بعد تعطيل TUN: تحقق هل عاد الإعداد الأصلي وأصلحه من إعدادات Network لدى Apple عند الحاجة.
  • تمحو تحديثات الملف تعديلاتك: احتفظ بالتخصيصات طويلة الأمد في نسخة محلية بدل تحرير ملف بعيد مُدار.
  • للخصوصية العالية: استخدم برنامجًا تحت الصيانة، وتحقق من DNS وWebRTC وPrivate Relay والموقع ومعرفات الحساب؛ واستخدم تصميمًا مؤكدًا يفشل مغلقًا للحركة الصادرة عند الحاجة.