一个请求进来,三种模式分别怎么走
界面上那三个按钮改的是配置顶层的 mode 键,写在文件里就是 mode: rule。改它不需要重启内核,内核热切。
rule:请求带着域名或 IP,从rules第一条往下比,命中哪条就交给那条指定的策略组。一路到最后一条MATCH还没命中的,全归它——所以MATCH指向什么,决定了没人认领的流量去哪。global:整个rules跳过,所有请求交给名为 GLOBAL 的那个组。组里通常列着配置中的全部节点,你选谁就走谁。direct:同样跳过规则,全部原样发出去,一个节点都不用。
拿一份典型规则的尾巴举例,前两条把国内域名和国内 IP 放直连,最后一条兜住剩下的:
mode: rule
rules:
- DOMAIN-SUFFIX,cn,DIRECT
- GEOIP,CN,DIRECT,no-resolve
- MATCH,PROXY
合作推荐订阅链接从哪来?本站合作机场注册即送 1GB 香港高速体验流量,可直接一键导入。获取高速节点
Global 是排查工具,不是加速开关
切 Global 的价值在于把规则这个变量拿掉。某个网站打不开,你怀疑是被哪条 DIRECT 规则放到了直连——切过去如果立刻正常,问题就在规则那边;还是不行,规则是清白的,去看节点和 DNS。
- 先记下当前是什么模式、总出口组选的哪个节点,一会儿要切回来。
- 切到 Global,在 GLOBAL 组里挑一个你确认可用的节点。
- 清一次连接列表再刷新那个网站,不清的话你看到的可能还是旧连接的表现。
- 通了就切回 Rule,在连接页看这个域名命中了哪条规则;还不通就换个节点,两个节点都不行,问题多半不在模式上。
Direct 不等于关掉客户端
Direct 模式下流量确实全部直连,但客户端还在链路上。系统代理开关没关,浏览器照样把请求发给 127.0.0.1 的混合端口;TUN 开着的话虚拟网卡还在接管路由。只是内核收到之后不再往节点转,改成自己发出去,DNS 也可能仍然走内核那一套。
这决定了它的用途:临时排除「是不是代理的锅」,比退出客户端干净。直接退出会留下系统代理指向一个没人监听的端口,浏览器立刻全线报错,你反而分不清是代理坏了还是网站坏了。
切完模式,旧连接还在
已经建立的 TCP 连接,路径在握手那一刻就定死了,之后改 mode 管不着它。浏览器会复用 keep-alive 连接,视频和聊天软件的长连接更是能挂几个小时。所以才总有人说「我明明切成全局了,怎么还是老样子」。切完去连接页清空一次,或者重启内核;浏览器那边有时还得把标签页关掉重开。
别长期停在 Global。这时候国内网站、系统更新、网盘同步全都走节点,按量计费的套餐掉得很快,不少国内服务看到境外 IP 还会弹验证码甚至触发风控。排查完记得切回 Rule。