رفتن به محتوای اصلی
FA

خانه / وبلاگ / قواعد و مسیریابی

مسیریابی برنامه‌های خاص با قواعد PROCESS-NAME

قواعد و مسیریابی2026-06-221338 واژه3 دقیقه مطالعه
مسیریابی برنامه‌های خاص با قواعد PROCESS-NAME

گاهی مبنای مسیریابی «کدام دامنه بازدید می‌شود» نیست، بلکه «کدام برنامه دارد بازدید می‌کند» است. مثلاً: فقط یک ابزار توسعه پروکسی شود، یا برعکس یک کلاینت بیت‌تورنت کاملاً از پروکسی بیرون نگه داشته شود.

این کار قواعد فرایندی می‌خواهد.

پیش‌شرط: روشن کردن find-process-mode

این رایج‌ترین دلیل کار نکردن قاعده‌ای است که نوشته‌اید.

find-process-mode: strict

سه مقدار:

مقداررفتارهزینه
offاصلاً دنبال فرایند نمی‌گردد؛ همهٔ قواعد فرایندی مرده‌اندهیچ
strict (پیشنهادی)فقط وقتی قواعد فرایندی وجود دارند جست‌وجو می‌کندکم
alwaysبرای هر اتصال جست‌وجو می‌کند، پس لاگ همیشه نام فرایند را می‌گویدبیشتر

مزیت always این است که ستون «Process» صفحهٔ اتصال‌ها همیشه داده دارد و برای عیب‌یابی خیلی راحت است؛ بهایش یک جست‌وجو در جدول فرایندهای سیستم برای هر اتصال است.

نحو پایه

rules:
  - PROCESS-NAME,Telegram.exe,🚀 انتخاب
  - PROCESS-NAME,qbittorrent.exe,DIRECT
  - PROCESS-PATH,/usr/local/bin/curl,🚀 انتخاب

PROCESS-NAME در برابر PROCESS-PATH

تفاوتPROCESS-NAMEفقط نام فایل اجرTelegram.exeهر چیزی با آن نام تطبیق می‌خوردنوشتنش ساده‌ترPROCESS-PATHمسیر کامل را تطبC:\\Apps\\Telegram\\Telegram.exeبه یک محل نصب چسبیدهجلوی تطبیق تصادفی برنامه‌های هم‌نام را می‌گیرد
در روزمره NAME بردارید؛ هنگام تعارض نام سراغ PATH بروید

Mihomo از PROCESS-NAME-REGEX و PROCESS-PATH-REGEX هم پشتیبانی می‌کند:

- PROCESS-NAME-REGEX,(?i)^(chrome|msedge)\.exe$,🚀 انتخاب
- PROCESS-PATH-REGEX,(?i).*\\JetBrains\\.*,🚀 انتخاب

پیدا کردن نام فرایند

روش ۱: از صفحهٔ اتصال‌ها بخوانید (سریع‌ترین)

find-process-mode را روی always بگذارید، صفحهٔ Connections را در Clash Verge باز کنید و بگذارید برنامه یک بار به شبکه دست بزند. ستون «Process» آن‌وقت نام دقیق را نشان می‌دهد.

این روش قابل‌اتکاست — حدس نزنید، همان را کپی کنید.

روش ۲: Task Manager / Activity Monitor

ویندوز: Task Manager ← زبانهٔ Details؛ ستون «Name» همان نام فرایند است.

مک: Activity Monitor ← دوبار کلیک روی فرایند ← به «Process Name» نگاه کنید.

لینوکس: ps -e -o comm= نام همهٔ فرایندها را فهرست می‌کند.

روش ۳: خط فرمان

# ویندوز: همهٔ فرایندهایی که الان از شبکه استفاده می‌کنند
Get-NetTCPConnection -State Established |
  Select-Object -Property OwningProcess -Unique |
  ForEach-Object { (Get-Process -Id $_.OwningProcess).ProcessName }
# macOS / Linux
lsof -i -P -n | awk '{print $1}' | sort -u

کاربردهای عملی

۱. واداشتن کلاینت‌های بیت‌تورنت به رفتن مستقیم

خیلی از ارائه‌دهنده‌های اشتراک ترافیک بیت‌تورنت را در شرایطشان منع می‌کنند و فرستادنش از راه آن‌ها حسابتان را به خطر می‌اندازد. ضمناً سهمیهٔ ترافیکتان را هم هدر می‌دهد.

prepend-rules:
  - PROCESS-NAME,qbittorrent.exe,DIRECT
  - PROCESS-NAME,Transmission.exe,DIRECT
  - PROCESS-NAME,aria2c.exe,DIRECT
  - PROCESS-NAME,BitComet.exe,DIRECT
  - PROCESS-NAME,uTorrent.exe,DIRECT
  - PROCESS-NAME,deluge.exe,DIRECT

برای اطمینان بیشتر یک قاعدهٔ پورت هم:

  - DST-PORT,6881-6889,DIRECT

۲. فرستادن ابزارهای توسعه از راه پروکسی

prepend-rules:
  - PROCESS-NAME,git.exe,🚀 انتخاب
  - PROCESS-NAME,node.exe,🚀 انتخاب
  - PROCESS-NAME,python.exe,🚀 انتخاب
  - PROCESS-NAME,docker.exe,🚀 انتخاب
  - PROCESS-NAME,go.exe,🚀 انتخاب

۳. فرستادن سکوهای بازی به یک گرهٔ مشخص

prepend-proxy-groups:
  - name: "🎮 بازی"
    type: fallback
    include-all: true
    filter: "(?i)IPLC|dedicated|game"
    interval: 300

prepend-rules:
  - PROCESS-NAME,steam.exe,🎮 بازی
  - PROCESS-NAME,Battle.net.exe,🎮 بازی
  - PROCESS-NAME,EpicGamesLauncher.exe,🎮 بازی

۴. واداشتن نرم‌افزارهای منطقه‌ای به رفتن مستقیم

بعضی برنامه‌ها از راه پروکسی بد رفتار می‌کنند (محدودیت منطقه‌ای، کنترل ریسک):

prepend-rules:
  - PROCESS-NAME,WeChat.exe,DIRECT
  - PROCESS-NAME,DingTalk.exe,DIRECT
  - PROCESS-NAME,QQ.exe,DIRECT
  - PROCESS-NAME,cloudmusic.exe,DIRECT
  - PROCESS-NAME,BaiduNetdisk.exe,DIRECT

۵. ترکیب با شرط‌های دیگر

فقط وقتی برنامهٔ خاصی به بازهٔ خاصی می‌رود پروکسی کن:

- AND,((PROCESS-NAME,Telegram.exe),(IP-CIDR,91.108.4.0/22)),🚀 انتخاب

یک برنامه برای مقصدهای خارجی از پروکسی و برای محلی مستقیم برود:

- AND,((PROCESS-NAME,chrome.exe),(GEOIP,CN)),DIRECT
- PROCESS-NAME,chrome.exe,🚀 انتخاب

حواستان به ترتیب باشد: قاعدهٔ ترکیبی مشخص‌تر باید پیش از قاعدهٔ ساده بیاید.

ملاحظات کارایی

قواعد فرایندی به‌مراتب گران‌تر از قواعد دامنه‌ای‌اند. هر تطبیق این‌ها را می‌طلبد:

هزینهٔ یک تطبیق قاعدهٔ فرایندیگرفتن پورت محلی اتصالاز خود بستهپرس‌وجو از جدول اتصال‌های سیستمپیدا کردن PIDی که آن پورت را داردگرفتن اطلاعات فراینداز PID به مسیر فایل اجراییمقایسه با قاعدهتطبیق رشته
دو گام اول فراخوان سیستمی‌اند و در تعداد بالای اتصال محسوس کند می‌کنند

توصیه‌های بهینه‌سازی:

چطور هزینه را پایین نگه داریمstrict بردارید نه always — فقط وقتی لازم است جست‌وجو کنیدقواعد فرایندی را دیر در فهرست بگذارید تا بیشتر ترافیک زودتر تطبیق بخورداگر قاعده‌ای دامنه‌ای همان را بیان می‌کند همان را برداریداز PROCESS-NAME-REGEX بپرهیزید؛ عبارت باقاعده از مقایسهٔ رشته کندتر استدر سناریوهای با تعداد اتصال خیلی بالا (بیت‌تورنت، P2P) قواعد پورت را ترجیح بدهید

پشتیبانی پلتفرم‌ها

پلتفرمپشتیبانینکته
Windows✅ کاملنام exe لازم است؛ حواستان به حروف باشد
macOS✅ کاملممکن است دسترسی اضافه بخواهد
Linux✅ کاملدسترسی خواندن /proc لازم است
Android⚠️ ناقصپروکسی به‌ازای برنامه ابزار بهتری است
روتر / دروازهترافیک از دستگاه‌های دیگر می‌آید، پس فرایند محلی نیست

روی اندروید قواعد فرایندی به کار نبرید — هم CMFA و هم FlClash پروکسی گرافیکی به‌ازای برنامه ارائه می‌دهند که بر پایهٔ نام بسته انتخاب می‌کند و هم دقیق‌تر است هم کم‌زحمت‌تر.

عیب‌یابی قاعده‌ای که کاری نمی‌کند

به این ترتیب بررسی کنیدآیا find-process-mode روی off است — با فاصله رایج‌ترین علتآیا نام فرایند درست نوشته شده (شامل .exe و بزرگی حروف)آیا ستون Process صفحهٔ اتصال‌ها مقدار دارد — ستون خالی یعنی اصلاً فرایندی پیدا نشدهآیا ترافیک واقعاً به هسته می‌رسد — زیر پروکسی سیستم ابزارهای خط فرمان هرگز نمی‌رسندآیا قاعدهٔ گسترده‌تری بالای این یکی آن را می‌قاپدآیا روی روتر یا دروازه‌اید که قواعد فرایندی کار نمی‌کنند

سریع‌ترین راه سنجیدن: find-process-mode را روی always بگذارید، صفحهٔ اتصال‌ها را باز کنید، بگذارید برنامه به شبکه دست بزند، و ستون Process را بخوانید.

  • ستون خالی ← هسته فرایند را نمی‌بیند؛ دسترسی‌ها را بررسی کنید
  • ستون پر ولی متفاوت با قاعدهٔ شما ← قاعده را با آنچه نشان داده شده جور کنید
  • ستون می‌خواند ولی ستون Rule قاعدهٔ دیگری را نشان می‌دهد ← مسئلهٔ ترتیب است؛ قاعدهٔ خودتان را با prepend-rules بالا ببرید

خلاصه

  • find-process-mode: strict پیش‌شرط است؛ بدونش هیچ‌چیز کار نمی‌کند
  • نام فرایند را از صفحهٔ اتصال‌ها کپی کنید نه اینکه حدس بزنید
  • زیر پروکسی سیستم ترافیک خط فرمان به هسته نمی‌رسد، پس برای آن ابزارها قواعد فرایندی فقط زیر TUN اثر دارند
  • برای سناریوهای دروازه از SRC-IP-CIDR استفاده کنید، جایی که قواعد فرایندی بی‌فایده‌اند
  • قواعد فرایندی نسبتاً گران‌اند؛ دیرتر بگذاریدشان و هرجا شد قواعد دامنه‌ای را ترجیح بدهید

بیشتر بخوانید: مرجع انواع قواعد و راهنمای سریع پروکسی ابزارهای توسعه.


مستندات مرتبط

مجموعه‌قواعد راه دور با rule-providers — behavior و format و راهبرد به‌روزرسانی
قواعد و مسیریابی مجموعه‌قواعد راه دور با rule-providers — behavior و format و راهبرد به‌روزرسانی

جایگزین کردن صدها قاعدهٔ دستی با فهرست‌های بیرونی. تفاوت سه behavior یعنی domain و ipcidr و classical، قالب text در برابر yaml، تنظیم بازهٔ به‌روزرسانی، و وقتی مجموعه قاعده کار نمی‌کند چه چیزی را بررسی کنیم.

2026-07-211355 واژه3 دقیقه مطالعه
تونل تفکیکی در عمل — شبکهٔ داخلی سازمان و دسترسی مستقیم محلی و پروکسی خارجی با هم
قواعد و مسیریابی تونل تفکیکی در عمل — شبکهٔ داخلی سازمان و دسترسی مستقیم محلی و پروکسی خارجی با هم

یک پیکربندی کامل که هم‌زمان به VPN داخلی سازمان و دسترسی مستقیم محلی و سرویس‌های خارجی پروکسی‌شده سرویس می‌دهد: دامنه‌ها و بازه‌های IP، مسیریابی DNS، و تعارض‌هایی که پیش می‌آید.

2026-07-171389 واژه3 دقیقه مطالعه