规则、全局、系统代理与 TUN 有什么区别?一张图理清两层设置
“已经开了全局,为什么某个程序还是没有走代理?”这个问题经常不是节点速度造成的,而是把流量入口和核心分流混在一起理解。先看请求有没有进入客户端,再看进入之后走了什么出口,答案就清楚了。
两层设置,解决两类问题
系统代理和 TUN 主要解决“哪些请求进入客户端”;规则、全局与直连主要解决“进入客户端后如何处理请求”。它们不在同一层,因此可以组合使用。
| 设置 | 所处层面 | 主要作用 | 需要留意 |
|---|---|---|---|
| 系统代理 | 流量入口 | 将遵循系统代理的应用请求交给本地入口 | 不遵循该设置的应用可能不受影响 |
| TUN | 流量入口 | 通过虚拟网络接口和路由接收请求 | 覆盖范围依赖路由、排除项及系统权限 |
| 规则模式 | 核心分流 | 按规则选择直连、代理、拒绝等策略 | 规则与策略组都需要正确 |
| 全局模式 | 核心分流 | 采用全局策略组处理进入核心的请求 | 全局组仍可能被选为直连或其他策略 |
| 直连模式 | 核心分流 | 进入核心的请求使用直连出口 | 不等于关闭客户端或清除系统代理 |
mihomo 的全局配置文档列出了 rule、global 和 direct;TUN 则在入站配置中单独设置。参考:全局配置;TUN 配置

为什么“全局”不一定覆盖所有应用
如果某个应用完全没有将请求交给系统代理入口,那么客户端里的全局模式没有机会处理它。浏览器正常而某个桌面程序失败,优先看应用是否有独立代理设置、连接记录里是否出现它的请求。
此时可以先使用该应用明确支持的代理方式;确实需要更广的系统流量接管时,再按项目说明评估 TUN。开启 TUN 之后,也要查看路由排除项,不能把它理解为绝对覆盖所有连接。
同样,TUN 只是接收方式,不自动决定每个请求都走远端节点。“TUN 加规则模式”可以让已接收的请求按规则分别走不同出口。
规则模式是怎样判断请求的
规则可能按域名、IP、进程或规则集合匹配。mihomo 的规则按列表顺序从上到下检查,上面的规则通常具有更高优先级。参考:路由规则与优先级
例如,一个精确的域名规则应当怎样放置,需要结合配置中的广泛匹配规则判断。最终命中的策略组也要有正确节点;只修正域名规则但策略组仍选着失效节点,问题不会消失。
新手修改规则前,先记录目标域名、当前命中规则和实际出口。保留原配置,避免直接复制陌生的大型规则文件覆盖服务商配置。
怎样用全局模式作一次有效对照
当请求已经进入核心,且规则模式下失败,可以做一次有边界的对照:
- 记录规则模式实际命中的出口。
- 在全局策略组选择同一个已确认可用的节点。
- 重新发起相同目标请求,观察结果和连接记录。
- 测试后恢复原模式,再检查规则与策略组。
如果两次使用的节点不同,结果变化也可能来自线路差异,不能直接判定是规则错误。即使同节点全局正常、规则失败,也仍需核对 DNS 路径和具体匹配情况,逐项定位。
日常场景怎样组合
| 场景 | 可以先尝试的组合 | 完成标准 |
|---|---|---|
| 浏览器为主,应用遵循系统代理 | 系统代理加适合用途的规则 | 请求和分流记录符合预期 |
| 某个应用未进入系统代理 | 应用自带代理或经核对的 TUN | 客户端能观察到对应请求 |
| 临时检查分流问题 | 保持节点一致,短时全局对照 | 结果可复现并能解释差异 |
| 不再使用代理 | 正常停止入口并退出 | 普通联网恢复预期状态 |
TUN 涉及系统路由和权限,首次开启后应补测局域网设备、工作网络以及自己的常用应用。若出现问题,先停止 TUN 回到已知可用状态,再对照具体配置。
理解这两层设置之后,模式选择就不再靠猜:先确认入口,再查看规则,最后核对出口。
评论