首页/教程/Clash vpn分流规则能按进程(Process)匹配吗?
CLASH GUIDE

Clash vpn分流规则能按进程(Process)匹配吗?

约 9 分钟阅读

在Clash VPN中,PROCESS-NAME规则支持按进程名匹配流量,格式为PROCESS-NAME,进程名.exe,动作,例如PROCESS-NAME,WeChat.exe,DIRECT让微信直连或PROCESS-NAME,Steam.exe,PROXY让Steam走代理。该规则仅在启用TUN Mode(虚拟网卡模式)时生效,系统代理模式下无法捕获进程信息。进程名需在任务管理器的「详细信息」中确认,需包含完整名称和文件后缀,大小写需与实际一致。进程规则建议放在规则列表前面(如内网规则之后、域名规则之前),确保特定应用流量优先匹配。若规则未生效,检查TUN Mode是否开启、进程名是否准确,并在Clash的「连接」面板中查看该请求命中的规则。订阅配置中自定义进程规则在更新后会丢失,需通过Merge或Parsers的prepend-rules将规则插入到订阅规则列表最前面永久保留。

PROCESS-NAME规则的基本原理与支持情况

按进程名匹配流量的规则类型

Clash VPN的分流规则确实支持按进程名称进行匹配,对应的规则类型为PROCESS-NAME。该规则格式为PROCESS-NAME,进程名.exe,动作,例如PROCESS-NAME,WeChat.exe,DIRECT可将微信的所有流量直连放行,PROCESS-NAME,Steam.exe,PROXY可让Steam的流量走代理通道。进程级规则让用户能够精确控制单个应用程序的网络行为,适用于游戏加速、软件授权验证绕过等精细化分流场景。

Windows平台是主要支持环境

PROCESS-NAME规则在不同操作系统上的支持情况存在差异,Windows平台是主要适用环境。在Windows系统中,Clash可以通过进程管理API获取发起网络请求的进程信息,从而实现按进程名的精准匹配。macOS和Linux平台的支持相对有限,部分内核版本可能无法正确捕获进程信息。若需要在非Windows环境中使用进程级分流,建议查阅对应内核版本的文档确认支持情况,或考虑使用其他分流规则类型作为替代方案。

在Clash规则列表中的位置与格式

PROCESS-NAME规则在配置文件中与其他规则类型共用同一个rules字段,遵循“从上到下、先命中先生效”的匹配顺序。配置示例为rules: - PROCESS-NAME,进程名.exe,动作 - DOMAIN-SUFFIX,google.com,PROXY - GEOIP,CN,DIRECT - MATCH,PROXY。由于进程级规则的匹配精度较高,通常建议将其放在规则列表的前面位置(如内网规则之后、域名规则之前),确保特定应用的流量在匹配其他规则之前即被正确处理。MATCH兜底规则必须始终放在最后一行。

启用TUN Mode是生效的前提条件

TUN模式捕获进程信息的必要性

PROCESS-NAME规则只有在Clash启用TUN Mode(虚拟网卡模式)时才能有效工作,这是该规则生效的关键前提。系统代理(System Proxy)仅在应用层工作,无法获取发起网络请求的具体进程信息,因此在此模式下PROCESS-NAME规则不会生效。TUN模式通过创建虚拟网卡在网络层截获所有流量,Clash内核能够同时捕获数据包及其关联的进程标识,从而实现按进程名的精确分流。在Clash Verge等客户端中,需在「设置」中手动开启TUN Mode并确保虚拟网卡服务成功启动。

开启TUN模式的具体操作步骤

在Clash Verge Rev中启用TUN模式的操作路径为:打开客户端「设置」页面,找到”TUN Mode”开关并将其开启。首次启用时系统可能提示安装虚拟网卡服务,需授权并确保服务成功启动。开启后,Clash通过虚拟网卡接管系统全部流量,PROCESS-NAME规则开始生效。若TUN Mode与其他VPN软件(如游戏加速器)同时启用可能产生虚拟网卡冲突,建议在使用PROCESS-NAME规则时,关闭其他虚拟网卡类软件或在Clash配置中为冲突进程添加PROCESS-NAME直连规则。

TUN模式下进程规则的限制

即使在TUN模式下,PROCESS-NAME规则仍存在一些使用限制。规则需匹配完整的进程名(含可执行文件后缀,如.exe),且不适用于TAP模式的流量。进程名的大小写和拼写必须与实际运行的程序名称完全一致,任何差异都会导致规则失效。此外,该规则仅对由TUN网卡捕获的流量有效,部分使用系统代理通道的应用流量可能无法被进程规则捕获。若发现规则未生效,可在Clash的「连接」面板中查看该应用的请求是否经过TUN网卡。

在配置文件中编写与编辑进程规则

手动编辑config.yaml添加PROCESS-NAME规则

在config.yaml配置文件中添加PROCESS-NAME规则时,需按照标准YAML格式写入rules字段。配置示例为- PROCESS-NAME,Thunder.exe,DIRECT(让迅雷直连)或- PROCESS-NAME,telegram.exe,PROXY(让Telegram走代理)。添加规则时需确保进程名与实际运行程序的映像名称完全一致,可在任务管理器的「详细信息」中查看准确的主进程名称。规则添加完成后保存文件,在Clash客户端中重新加载配置使其生效。

在Clash Verge Rev中通过界面编辑规则

Clash Verge Rev提供了图形化的规则编辑功能,用户无需直接编辑YAML文件即可添加PROCESS-NAME规则。操作路径为:在「配置」页面右键点击当前使用的配置文件,选择”Edit Rules”或”编辑规则”,在”Prepend Rules”(前置规则)区域中按格式添加进程规则,例如- PROCESS-NAME,WeChat.exe,DIRECT。前置规则会被插入到规则列表的最前面,获得最高优先级。编辑完成后点击保存,并重新启用配置文件使规则生效。这种方式操作直观,适合不熟悉YAML语法的用户。

使用Parsers预处理机制添加进程规则

对于通过订阅链接获取的配置,可直接修改配置文件会在订阅更新时被覆盖,可使用Parsers预处理机制永久添加PROCESS-NAME规则。在Clash配置中声明parsers字段,指定订阅链接和要前置添加的规则,例如parsers: - url: 订阅链接 yaml: prepend-rules: - "PROCESS-NAME,Rhino.exe,REJECT"。每次订阅更新时,Parsers会自动将规则插入到订阅规则列表的最前面,确保进程规则始终优先匹配且不会被订阅覆盖。此方式适合需要长期为特定应用配置进程规则的用户。

进程规则的典型应用场景

让游戏或软件直连不走代理

PROCESS-NAME规则最常见的用途是让特定应用不走代理(DIRECT),避免代理节点的不稳定影响应用性能。对于对网络延迟敏感的国内游戏或软件授权验证服务,配置PROCESS-NAME,游戏进程名.exe,DIRECT可让该应用直连,确保延迟最低且不受代理节点波动影响。有用户反馈Rhino软件开启Clash后授权被移除,通过PROCESS-NAME,Rhino.exe,REJECT规则让Rhino流量被拒绝或直连,从而绕过代理导致的验证问题。配置时需确保进程名准确,并在Clash的「连接」面板中验证规则是否生效。

强制特定应用走代理通道

对于某些默认不走系统代理的应用(如命令行工具、UWP应用),PROCESS-NAME规则可强制其流量走代理通道。例如配置PROCESS-NAME,telegram.exe,PROXY可让Telegram的所有流量经过代理节点,不受应用自身网络栈设计的影响。该规则适用于那些不支持在应用内配置代理、但需要走代理才能正常使用的软件。配合TUN模式使用时,进程规则能够覆盖系统代理模式下无法捕获的应用程序,是解决“Clash已连接但某应用无法联网”问题的有效手段。

精细化分流与多应用策略管理

进程规则可与其他规则类型配合,实现按应用+按域名的精细化分流。例如在规则列表中配置PROCESS-NAME,Steam.exe,游戏节点组让Steam流量固定走游戏节点,配置DOMAIN-SUFFIX,steamcommunity.com,PROXY让Steam社区的域名走通用代理,两者结合实现应用层和域名层的双重控制。对于同时运行多个需要不同代理策略的应用的场景,进程规则提供了比单纯域名规则更直接的控制维度,用户可根据应用类型分配不同的策略组,实现流量管理的精细化。

进程规则与其他分流规则的配合

与DOMAIN-SUFFIX和GEOIP规则的优先级安排

在包含PROCESS-NAME规则的完整分流配置中,规则排序需兼顾进程级、域名级和IP级的匹配需求。推荐的排序为:内网IP段直连(IP-CIDR)→进程规则(PROCESS-NAME)→精确域名规则(DOMAIN-SUFFIX)→GEOSITE分类规则→GEOIP规则→MATCH兜底。将进程规则放在域名规则之前,可确保特定应用的流量在域名匹配之前即被处理,避免被后续的域名规则覆盖。GEOIP,CN,DIRECT作为国内IP直连规则,应放在域名规则之后、MATCH之前,作为IP层面的兜底直连手段。

与SRC-IP-CIDR规则的互补使用

SRC-IP-CIDR规则按请求的源IP地址匹配,PROCESS-NAME按进程名匹配,两者可在不同维度上实现精准分流。SRC-IP-CIDR适用于按终端设备分流的场景(如家庭网络中为不同设备配置不同策略),PROCESS-NAME适用于单台设备上按应用分流的场景。在家庭网关或旁路由部署中,两者可组合使用:先通过SRC-IP-CIDR按设备分流,再在设备内部通过PROCESS-NAME按应用细化策略。这种组合方式实现了从设备到应用的完整控制链路。

进程规则的覆盖与冲突处理

当同一应用的流量同时匹配了PROCESS-NAME规则和后续的域名规则时,PROCESS-NAME规则因位置靠前而优先生效。这意味着用户可以通过进程规则完全覆盖订阅配置中对该应用域名的错误设定。若需要让某应用的特定子域名走不同的策略(如Steam主程序走游戏节点,但Steam商店走通用代理),需在进程规则之后添加精确的域名规则(如DOMAIN-SUFFIX,store.steampowered.com,通用节点),利用“先命中先生效”的机制实现进程级和域名级的分层控制。

常见问题FAQ

PROCESS-NAME规则不生效怎么办?

首先检查Clash是否已开启TUN Mode,PROCESS-NAME规则只有在TUN模式下才能生效。其次确认进程名是否完全准确,包括大小写和文件后缀(如.exe),在任务管理器的「详细信息」中查看主进程的映像名称后对照配置。最后检查规则是否被放在了规则列表前面,若被GEOIP,CN,DIRECT等通用规则覆盖则需调整顺序。

PROCESS-NAME规则在系统代理模式下能生效吗?

不能。系统代理模式下Clash无法获取发起网络请求的进程信息,PROCESS-NAME规则必须配合TUN Mode(虚拟网卡模式)才能工作。若无法开启TUN模式,可尝试使用DOMAIN-SUFFIX域名规则或IP-CIDRIP段规则作为替代方案,但精确度不如进程规则。

移动端(Android/iOS)支持PROCESS-NAME规则吗?

Android和iOS平台通常使用基于应用包名(Package Name)的匹配而非PROCESS-NAME规则,配置格式与Windows平台不同。在Android的Clash客户端(如Clash Meta for Android)中支持按包名分流,但需查阅对应客户端的具体配置语法。若需要在移动端按应用分流,建议参考对应客户端的文档配置包名规则。

订阅配置中添加的PROCESS-NAME规则更新后会丢失吗?

会。直接在订阅配置中添加的PROCESS-NAME规则在订阅更新时会被覆盖而丢失。使用Clash Verge Rev的Merge功能(前置规则)或Parsers预处理机制,将PROCESS-NAME规则插入到订阅规则列表最前面,可在订阅更新后自动保留。具体操作是在Merge的YAML编辑框中添加prepend-rules: - "PROCESS-NAME,进程名.exe,DIRECT"。
使用提醒

请从可信来源获取软件与配置,并遵守所在地法律法规和相关服务条款。