先写清楚你希望哪一个应用如何联网
“只让浏览器走代理”和“所有应用访问某个域名都走代理”不同;“排除公司内网”又是另一项条件。先列出目标应用、应代理的服务和应直连的资源。进程规则只有在内核接收到了请求、且能识别进程时才有效,不能把未进入系统代理或 TUN 的软件凭规则拉进来。
| 需求 | 先考虑的入口 |
|---|---|
| 一个支持代理设置的桌面应用 | 该应用自己的 HTTP/SOCKS 设置 |
| 多个普通桌面应用按进程分流 | 受支持的 TUN 接管与进程识别 |
| Android 只接管选定 App | 客户端的 VPN 应用允许或排除列表 |
| 普通 iPhone 的某几个应用 | 先核对客户端与系统能力,不能照搬桌面进程规则 |
桌面:从连接记录取得真实进程信息
- 备份当前配置和本地覆写,关闭目标应用,再启动并产生一次新请求。
- 在客户端连接记录里查看进程名或完整路径。应用界面名称不一定是实际联网进程,浏览器和开发工具还可能使用助手进程。
- 确认记录中确有该请求,再按当前内核支持的 PROCESS-NAME 或 PROCESS-PATH 写规则;优先使用客户端持久的本地规则入口。
rules:
- DOMAIN-SUFFIX,corp.example,DIRECT
- PROCESS-NAME,example-browser.exe,PROXY
- MATCH,DIRECTcorp.example 和 example-browser.exe 都是占位值,PROXY 必须换成实际策略组。这里企业域名规则放在进程规则之前,表示该浏览器访问此域名仍先直连。DIRECT 不会绕过系统里另一个 VPN;公司内网能否可达仍由实际路由和组织要求决定。MATCH,DIRECT 仅表达本例的兜底目标,照抄会改变其他所有流量的策略。
Android:先弄清列表是在“包含”还是“排除”
- 在客户端查找按应用或分应用代理入口,阅读当前模式说明。允许列表通常表示只接管列出的应用;排除列表则是列出的应用不进入 VPN。
- 只调整一个可用于测试的应用,重启该应用并重新建立 VPN,使本轮修改按客户端要求生效。
- 同时测试一个列表内和一个列表外应用。若列表外完全无网,检查系统是否开启了“阻止不经过 VPN 的连接”,不要误以为排除就一定会正常直连。
工作资料与个人资料中的同名应用可能是两个不同实例。修改个人资料客户端并不保证影响工作资料,也不能把组织管理的按应用 VPN 当作个人设置随意改写。
这些现象容易造成误判
| 现象 | 原因方向 |
|---|---|
| 规则有了但从未命中 | 应用没有被接管,或进程名不一致 |
| 改规则后旧下载仍走旧节点 | 已有长连接未重建 |
| 应用升级后规则失效 | 可执行文件路径或助手进程变化 |
| 刷新订阅后规则消失 | 修改了生成配置,未使用持久覆写 |
| 浏览器登录成功,音视频失败 | 相关进程、域名或 UDP 路径未覆盖 |
验收与回退
验证目标应用的登录、下载和实时连接,再检查应直连的应用及局域网。重启客户端、更新一次订阅后确认规则仍在且仍命中。无效时撤销本次新增规则或恢复列表,重新建立连接;不要把整份配置改成全局来掩盖分流目标没有实现。