Clash Verge 设置绕过不生效?先判断系统代理、TUN 还是 DIRECT
简答:绕过不生效,通常是改错了控制层:系统代理改“代理绕过设置”,TUN 改排除网段,规则分流用 DIRECT。先切回规则模式,再按日志确认请求是否命中直连。
定义:Clash Verge 的“设置绕过”是让指定域名、IP、局域网网段或应用流量避开当前代理路径,实际配置位置取决于系统代理、PAC、TUN 或规则模式。
先试这一步:10 秒判断该改哪一层
本文基于 Clash Verge Rev 编写,与 Clash Verge Rev 项目及开发者无隶属关系;原版 Clash Verge 的界面字段可能不同。Clash Verge Rev 官方文档把绕过分为系统代理绕过、TUN 流量排除和自定义路由规则三类,可先查看Clash Verge Rev Bypass 文档确认当前模式。
| 当前状态 | 优先改哪里 | 适用范围 | 正常判定 |
|---|---|---|---|
| 只开启系统代理默认模式 | 设置→系统代理→代理绕过设置 | 遵循系统代理的应用 | 目标应用重新连接后,目标请求不再经过代理 |
| 开启 PAC 模式 | 编辑 PAC 脚本 | 由 PAC 按主机决定直连或代理 | PAC 返回 DIRECT,其他请求返回本地代理端口 |
| 开启 TUN | 设置→TUN→排除自定义网段 | 被虚拟网卡接管的流量 | 排除的局域网地址恢复直连,其他流量仍按原配置处理 |
| 使用规则模式 | 编辑规则中的前置规则或扩展脚本 | mihomo 内核收到的请求 | 日志显示命中 DIRECT,而不是代理策略组 |
| 使用全局模式 | 先切换到规则模式 | 全局策略不会按普通规则分流 | 切换后规则列表才参与匹配 |
最快的单变量测试是:先关闭 TUN,只开启系统代理测试一次;再关闭系统代理、单独开启 TUN 测试一次。每次只改变一个开关,才能判断到底是哪一层没有生效。
系统代理绕过:先改 Clash Verge Rev 的输入框
系统代理默认模式下,Clash Verge Rev 的“代理绕过设置”用于决定哪些请求不使用系统代理;官方示例使用类似 10.1.2.* 的地址模式。不要把系统设置菜单当成唯一入口,优先修改客户端自己的绕过字段,再用系统设置核对结果。
- 打开 Clash Verge Rev,进入“设置”。
- 找到“系统代理”,确认系统代理已经开启。
- 进入“代理绕过设置”,输入目标主机、域名、通配符或系统支持的地址格式。
- 如果界面有“验证代理绕过格式”,先保持开启;保存后完全退出并重新打开目标应用。
- 先只添加一个目标,观察请求日志和访问结果,再逐步扩大范围。
常见示例包括 localhost、127.0.0.1、*.example.internal(替换为你的内网域名)。示例域名必须替换为真实目标,不要把 example.internal 原样保存。
| 系统 | Clash Verge Rev 操作 | 系统设置核对 | 格式提醒 |
|---|---|---|---|
| Windows | 设置→系统代理→代理绕过设置 | Internet 选项→连接→局域网设置,或检查使用系统代理的应用 | 常见写法是 localhost;*.example.com;192.168.*;<local>;Windows 代理例外列表不要优先套用 CIDR |
| macOS | 设置→系统代理→代理绕过设置 | 系统设置→网络→当前网络服务→详细信息→代理 | Apple 的代理例外字段支持主机和域名,多个项目用逗号分隔;具体是否接受 CIDR 以当前客户端字段校验为准 |
| Linux | 客户端同样先改“代理绕过设置” | GNOME:设置→网络→网络代理;KDE:系统设置→网络→代理 | 桌面代理只影响读取桌面代理的应用;终端还要检查 http_proxy、https_proxy、no_proxy |
Windows 例外列表的主机名、IP、分号分隔、<local> 和通配符示例,可参考Microsoft ProxyOverride 文档。macOS 的系统路径和“绕过这些主机与域名”字段,可参考Apple Mac 代理设置说明。这两类系统设置仅用于核对,不代表所有应用都会读取系统代理。
PAC 模式:用兼容写法返回 DIRECT
如果系统代理使用的是 PAC 模式,普通绕过列表不是主要控制点,需要在客户端的 PAC 编辑入口中按 FindProxyForURL 返回结果。Clash Verge Rev 官方示例说明,PAC 可以让指定域名或 IP 返回 DIRECT,其余请求交给本地混合端口;下面改用更保守的 var、dnsDomainIs 和 isInNet 写法。
示例目标必须替换为你的真实域名或网段;%mixed-port% 保留为客户端支持的占位符,不要自行猜测端口。
nas.example.internal:替换为 NAS 的真实域名。dev.example.internal:替换为本地开发服务域名。192.168.1.0与掩码:替换为实际局域网网段。
function FindProxyForURL(url, host) { var directHost = "nas.example.internal"; if (host == directHost || dnsDomainIs(host, ".example.internal") || isInNet(host, "192.168.1.0", "255.255.255.0")) { return "DIRECT"; } return "PROXY 127.0.0.1:%mixed-port%; SOCKS5 127.0.0.1:%mixed-port%; DIRECT;"; }
保存后重新加载系统代理,再访问目标地址。正常判定是目标请求能够访问,并且客户端日志不显示它经代理策略组转发。若脚本没有效果,先确认系统代理确实处于 PAC 模式,再检查 PAC 是否保存、目标软件是否读取系统 PAC,以及脚本中的域名和网段是否填写正确。官方 PAC 入口和示例见Clash Verge Rev Bypass 文档。
TUN 模式:局域网地址改排除网段
TUN 模式会把更广泛的系统流量导入虚拟网卡,因此系统代理绕过列表可能不再是主要控制点。Clash Verge Rev 官方文档将 TUN 绕过指向 TUN 流量排除;mihomo 的对应配置字段是 route-exclude-address,用于在自动路由时排除自定义子网,字段位置和当前配置格式可核对mihomo TUN 配置文档。
- 进入“设置→TUN”或“虚拟网卡模式”。
- 确认 TUN 已启用,并找到“排除自定义网段”。
- 按实际网络填写 IPv4 或 IPv6 CIDR,例如
192.168.0.0/16、10.0.0.0/8或fc00::/7。 - 应用设置后重新连接 NAS、打印机、路由器或本地服务。
- 如果 IP 能访问但域名不能访问,重点检查 DNS;如果 IP 也不能访问,重点检查路由、TUN 排除和其他 VPN。
不要把单个域名填进只接受 CIDR 的 TUN 排除字段。按域名控制时使用规则中的 DOMAIN 或 DOMAIN-SUFFIX;按地址范围控制时使用 route-exclude-address 或规则中的 IP-CIDR。
手动配置时,概念上的对应关系是:客户端的“排除自定义网段”最终对应 mihomo TUN 配置中的 route-exclude-address。字段是否能直接写入扩展配置,取决于当前 Clash Verge Rev 界面和配置合并方式,保存后必须检查最终配置是否成功加载。
DIRECT 规则:使用前置规则,不要在前置内容里写 MATCH
规则模式下,需要让指定域名、IP 或进程直连,应使用 DIRECT 规则。mihomo 官方说明规则按从上到下匹配,顶部优先级更高;MATCH 匹配所有未被前面规则命中的请求,通常应作为规则链末尾的兜底。规则类型和优先级可查看mihomo 路由规则文档。
最稳妥的操作是:右键订阅配置文件,选择“编辑规则”,把以下内容放进“前置规则”。这不是完整配置文件,只放新增例外项:
- DOMAIN,nas.example.internal,DIRECT
- DOMAIN-SUFFIX,example.internal,DIRECT
- IP-CIDR,192.168.1.0/24,DIRECT,no-resolve
- PROCESS-NAME,example.exe,DIRECT
- PROCESS-PATH,C:\Program Files\Example\example.exe,DIRECT
示例中的域名、网段、进程名和路径都要替换为真实目标。PROCESS-NAME 只填实际进程名;PROCESS-PATH 需要完整路径,Windows 反斜杠按当前界面要求填写。若内核没有启用进程识别,进程规则可能无法命中,判定应以日志为准。
前置规则里不要添加 MATCH。不要把 - MATCH,你的原代理策略组 放在自定义前置规则末尾,因为它会提前匹配所有剩余请求,使订阅后面的分流规则失效。Clash Verge Rev 的规则编辑文档明确建议把自定义规则放在前置位置,并将 MATCH 作为规则链末尾的兜底。
如果使用扩展配置,不要直接写一个新的 rules: 列表覆盖订阅原规则。Clash Verge Rev 文档说明,前置和后置规则已移动到订阅右键菜单的可视化“编辑规则”中;扩展配置主要用于配置项覆写或合并,详见Clash Verge Rev 扩展配置与脚本。如果使用扩展脚本,应把新增规则与原数组合并:
const prependRule = [
"DOMAIN,nas.example.internal,DIRECT",
"IP-CIDR,192.168.1.0/24,DIRECT,no-resolve"
];
function main(config) {
const oldrules = config["rules"] || [];
config["rules"] = prependRule.concat(oldrules);
return config;
}
脚本入口、config.rules 数组和前置合并方式可核对Clash Verge Rev 自定义脚本文档。保存后检查最终规则列表:新增 DIRECT 应出现在订阅原规则之前,原有 MATCH 仍在规则链最后。
某个软件不走绕过:按软件自身代理、规则和 TUN 逐层排查
“某个软件仍走代理”不一定是绕过格式错误。先打开软件自身的网络或代理设置,确认它没有单独指定 HTTP、SOCKS 或 PAC;再检查系统环境变量,最后才用进程规则。部分软件不读取系统代理,或使用独立代理、QUIC、其他 VPN 和虚拟网卡,单条绕过规则可能无法覆盖全部连接。
| 顺序 | 检查项 | 操作 | 判定标准 |
|---|---|---|---|
| 1 | 软件自身代理 | 查看软件网络设置,临时关闭独立代理或改为跟随系统 | 重新启动软件后请求路径改变 |
| 2 | 系统环境变量 | 检查 http_proxy、https_proxy、no_proxy | 目标主机出现在 no_proxy 后,重启软件再测试 |
| 3 | 进程规则 | 使用 PROCESS-NAME 或 PROCESS-PATH 配置 DIRECT | 日志显示该进程请求命中 DIRECT |
| 4 | TUN 接管 | 临时关闭 TUN,再测试同一软件 | 关闭 TUN 后恢复,说明应检查 TUN 排除或路由 |
进程规则示例:- PROCESS-NAME,example.exe,DIRECT,或 - PROCESS-PATH,C:\Program Files\Example\example.exe,DIRECT。如果软件同时使用子进程、服务进程或独立网络层,需要分别确认实际发起连接的进程;未观察到命中日志前,不要断定规则已经生效。
验证绕过是否生效:看日志,不只看网页能否打开
- 看代理模式:规则测试必须处于规则模式;全局模式下不要用 DIRECT 规则判断结果。
- 看请求日志:访问目标地址时,检查命中的规则类型和出站名称,目标应显示
DIRECT或对应排除路径。 - 测 IP 与域名:先访问真实 IP,再访问域名。IP 通、域名不通通常优先查 DNS;两者都不通则查路由、TUN 或防火墙。
- 重启目标软件:部分应用只在启动时读取系统代理和环境变量。
- 反向测试:临时删除绕过项,确认目标请求会回到原代理路径,再恢复配置。
如果订阅更新后绕过规则消失,通常是自定义内容放在了会被重新生成的订阅文件中。优先使用“编辑规则”的前置规则,或使用扩展脚本;完成更新后检查最终规则顺序。出现端口占用、TUN 无法启动或系统代理无法保存时,先关闭其他代理软件和 VPN,再查看 Clash Verge Rev 日志,未核实的版本差异不要套用。
常见场景的最小配置可以这样选:NAS、路由器和打印机优先使用 TUN 排除或局域网 IP-CIDR;公司内网域名使用 DOMAIN-SUFFIX,DIRECT 并同时检查内网 DNS;本地开发服务先用 localhost 和回环地址;某个桌面软件先查自身代理,再测试进程规则。每次只新增一个域名、IP、网段或进程,确认日志和访问结果一致后再扩大范围。
常见问题
Clash Verge 设置了绕过,为什么仍然走代理?
先确认当前是否开启 TUN 或处于全局模式。系统代理绕过只影响遵循系统代理的应用;TUN 应检查排除自定义网段;规则分流则要切换到规则模式,并确认 DIRECT 位于原有 MATCH 之前。
Windows 的代理绕过可以填写 192.168.0.0/16 吗?
Windows 系统代理例外列表常见的是主机名、IP、通配符、分号分隔和 <local>,例如 192.168.*;不要直接把 CIDR 当作 Windows 例外格式。需要按 CIDR 排除时,优先检查 Clash Verge Rev 的 TUN 排除字段或使用 IP-CIDR 规则。
macOS 的绕过列表在哪里设置?
优先在 Clash Verge Rev 的“设置→系统代理→代理绕过设置”中修改。系统层可进入系统设置→网络→当前网络服务→详细信息→代理,核对“绕过这些主机与域名”字段;多个项目通常用逗号分隔。
为什么全局模式下 DIRECT 规则不生效?
全局模式不会按普通规则列表进行分流,所以 DIRECT 规则不会按预期命中。切换到规则模式后,再查看日志中的命中规则和出站类型。
用 rules 写进扩展配置后,为什么订阅分流消失了?
扩展配置中的 rules 列表可能覆盖原有规则,导致订阅规则和末尾 MATCH 丢失。优先使用订阅右键菜单的“编辑规则→前置规则”,或用脚本把新增规则 concat 到原 config.rules 前面。
如何让某个软件绕过 Clash Verge?
先查软件自身代理和环境变量,再测试 PROCESS-NAME 或 PROCESS-PATH 规则。进程名、完整路径必须替换为真实值;软件使用独立代理、子进程或其他网络层时,单条规则可能无法覆盖全部连接。
TUN 模式下局域网 NAS 仍然打不开怎么办?
先用真实 IP 测试,再把实际局域网 CIDR 加入 TUN 的排除自定义网段。IP 能通但域名不通时查 DNS;IP 也不通时检查路由、其他 VPN、防火墙和 TUN 日志。
相关阅读
参考资料
- Clash Verge Rev Docs:Bypass(clashverge.dev)
- Clash Verge Rev:自定义规则配置(clashverge.dev)
- Clash Verge Rev:扩展配置与脚本(clashverge.dev)
- Clash Verge Rev:自定义脚本(clashverge.dev)
- mihomo:Route Rules
- mihomo:Tun 配置
- Microsoft Learn:HKLMProxyOverride
- Apple Support:Change proxy settings on Mac
- GNOME Help:Define proxy settings(help.gnome.org)
- KDE Documentation:Proxy(docs.kde.org)