先写清楚你希望哪一个应用如何联网

“只让浏览器走代理”和“所有应用访问某个域名都走代理”不同;“排除公司内网”又是另一项条件。先列出目标应用、应代理的服务和应直连的资源。进程规则只有在内核接收到了请求、且能识别进程时才有效,不能把未进入系统代理或 TUN 的软件凭规则拉进来。

需求先考虑的入口
一个支持代理设置的桌面应用该应用自己的 HTTP/SOCKS 设置
多个普通桌面应用按进程分流受支持的 TUN 接管与进程识别
Android 只接管选定 App客户端的 VPN 应用允许或排除列表
普通 iPhone 的某几个应用先核对客户端与系统能力,不能照搬桌面进程规则

桌面:从连接记录取得真实进程信息

  1. 备份当前配置和本地覆写,关闭目标应用,再启动并产生一次新请求。
  2. 在客户端连接记录里查看进程名或完整路径。应用界面名称不一定是实际联网进程,浏览器和开发工具还可能使用助手进程。
  3. 确认记录中确有该请求,再按当前内核支持的 PROCESS-NAME 或 PROCESS-PATH 写规则;优先使用客户端持久的本地规则入口。
Mihomo 规则顺序示意;只插入所需规则,不替换整份配置
rules:
  - DOMAIN-SUFFIX,corp.example,DIRECT
  - PROCESS-NAME,example-browser.exe,PROXY
  - MATCH,DIRECT

corp.example 和 example-browser.exe 都是占位值,PROXY 必须换成实际策略组。这里企业域名规则放在进程规则之前,表示该浏览器访问此域名仍先直连。DIRECT 不会绕过系统里另一个 VPN;公司内网能否可达仍由实际路由和组织要求决定。MATCH,DIRECT 仅表达本例的兜底目标,照抄会改变其他所有流量的策略。

Android:先弄清列表是在“包含”还是“排除”

  1. 在客户端查找按应用或分应用代理入口,阅读当前模式说明。允许列表通常表示只接管列出的应用;排除列表则是列出的应用不进入 VPN。
  2. 只调整一个可用于测试的应用,重启该应用并重新建立 VPN,使本轮修改按客户端要求生效。
  3. 同时测试一个列表内和一个列表外应用。若列表外完全无网,检查系统是否开启了“阻止不经过 VPN 的连接”,不要误以为排除就一定会正常直连。

工作资料与个人资料中的同名应用可能是两个不同实例。修改个人资料客户端并不保证影响工作资料,也不能把组织管理的按应用 VPN 当作个人设置随意改写。

这些现象容易造成误判

现象原因方向
规则有了但从未命中应用没有被接管,或进程名不一致
改规则后旧下载仍走旧节点已有长连接未重建
应用升级后规则失效可执行文件路径或助手进程变化
刷新订阅后规则消失修改了生成配置,未使用持久覆写
浏览器登录成功,音视频失败相关进程、域名或 UDP 路径未覆盖

验收与回退

验证目标应用的登录、下载和实时连接,再检查应直连的应用及局域网。重启客户端、更新一次订阅后确认规则仍在且仍命中。无效时撤销本次新增规则或恢复列表,重新建立连接;不要把整份配置改成全局来掩盖分流目标没有实现。