OpenWrt 做全局分流,和客户端模式差在哪

「把加速做在路由器上,全家设备都不用装客户端」——这个说法没错,但它省略了三件事:性能上限、DNS 处理、故障排查难度。想清楚这三点再决定,能省掉后面很多折腾。

两种模式的本质区别

客户端模式:加速软件跑在每台设备上,只接管本机的流量。配置简单,出问题只影响一台设备,卸载即恢复。

路由器模式:加速跑在路由器上,通过 TUN 或透明代理接管整个局域网的流量。所有设备零配置,但路由器一旦出问题,全家断网,而且排查时你面对的是一个没有图形界面的 Linux 系统。

性能:先看路由器的 CPU

这是最容易被低估的一点。加密转发是纯 CPU 工作,没有硬件加速可用。参考量级:

  • 百元级路由器(MT7621 一类):加密吞吐通常在 30–80 Mbps,跑 4K 流媒体刚好够,多设备同时看就顶不住。
  • 中端(MT7981、IPQ6000 一类):150–300 Mbps,家庭场景基本够用。
  • 软路由(N5105、J4125 一类):500 Mbps 以上,可以跑满千兆的一部分。

注意这些数字是加密转发吞吐,不是测速软件的峰值。判断方法很直接:在局域网里跑一次大文件下载,同时看路由器 CPU 占用,如果单核跑满,说明瓶颈就在这里。

DNS 是分流方案里最容易出错的一环

透明代理要正确分流,必须先拿到正确的解析结果。常见三种做法,各有代价:

  1. 全局 DNS 转发:所有域名都走远程解析。简单,但国内站点会变慢,且部分 CDN 会把你调度到错误的节点。
  2. 按域名表分流:国内域名用本地 DNS,其余走远程。效果好,但要维护规则表,规则过期就出错。
  3. Fake-IP 模式:先返回一个假地址,等真实连接建立时再决定走哪条路。响应快,但和部分应用的 DNS 预解析会冲突。

如果你发现「有的网站能开、有的打不开,而且每次打不开的还不一样」,基本就是 DNS 分流规则的问题,不是线路问题。

和客户端模式的取舍

维度路由器模式客户端模式
设备覆盖全部,含电视/游戏机仅装了客户端的设备
配置成本高,一次投入低,逐台
故障影响面全屋单台
性能上限受路由器 CPU 限制受设备性能限制,通常更高
排查难度高(无图形界面)低

结论很清楚:设备多、有电视和游戏机、愿意折腾一次,选路由器模式;只有电脑和手机、追求稳定省心,客户端模式更合适。两者也可以混用——路由器负责电视和游戏机,电脑上仍然用客户端。

常见故障的定位顺序

路由器方案出问题时,按这个顺序查,比乱改配置有效得多:

  1. 路由器本身能不能上网:在路由器 SSH 里 curl -s https://api.ipify.org。不通就是上游问题,和代理无关。
  2. 局域网设备能不能到路由器:ping 路由器IP。
  3. DNS 解析是否正常:nslookup example.com 路由器IP。
  4. 看日志:分流插件的日志里会明确写出「匹配到哪条规则、走了哪个出口」,这一条信息比任何猜测都有用。
💡 一个反直觉的经验:路由器方案下「时快时慢」通常不是线路抖动,而是内存不足导致连接表被清理。看 free -m 的 available 和 dmesg | grep -i oom,如果出现过 OOM,先减规则表体积,别急着换线路。

延伸阅读:节点怎么选最快、全局模式与分流模式、传输协议对延迟的影响。