方永、南天紫雲

道亦有道

OpenWrt上的分流和自动翻墙
2026年06月17日

在X上有人不断地推 dae ,这工具其实有点怪异,结合最近用的新方案,说说自己的一些体会。

这篇文章,是系列文章的最新一篇

说起防火长城(GFW)的阻断技术,大家都知道 DPI(深度包检测), DNS污染,IP 包丢包,再加上运营商和线路的QoS和特定时间特定IP的封锁,使得低成本地得到一个快速响应,大带宽,无需任何设置即可访问外网的网络环境越来越难。

而且随着攻防两侧技术的不断迭代,一些旧的协议已被识别,而一些新的协议和工具看起来能解决一些问题,其实引入了另一些问题。

先说说协议(特指用于穿越GFW的协议)。协议的作用就是防止被识别和阻断的情况下低开销,高效而正确地传递国内与国外的数据。防止被识别的思路是,要么模仿某个知名的协议,要么封装在某个知名协议内,要么消除特征。协议特征明显的地方在于握手阶段,填充随机数据,可消除一些特征。模仿和封装在另一个协议内,不可避免地引入各种开销。另外,协议所使用的传输协议(TCP or UDP),也会对协议的性能产生重大影响。GFW在大部分情况下是精确识别,然后阻断,对于一些模棱两可的特征,比如TLS in TLS,可能只加入灰名单,在特定时间时进行阻断。基于此,协议过多地嵌套,或多级跳转之类,就有过度恐慌之嫌了,虽然保证了安全,但是严重影响了使用体验。

再说说客户端(在电脑、手机、路由器上连接国外服务器并进行分流的工具)。客户端工具非常多,,能进行分流,取决于操作系统提供的能力,android 提供了系统级VPN的接口,windows 也有类似的系统接口,linux 的开放性,支持各种分流方案,osx 没有类似的接口,所以目前见到的方案都是用全局系统代理或 tun interface 的形式实现。

这些客户端方案中,最值得一提的是 OpenWrt 路由器上的 nftables + dns 分流方案。nftables 工作在内核,将需要走外网代理的ip放到一个 sets中, nftables 将命中 sets 的数据包加 mark, 再配置 route rule,将带 mark 的数据包路由到指定的网关。ip加sets 通过提前配置和dns 解析动态加入。这套方案的最大特点是开销极低,效率极高,缺点是配置非常麻烦,会遇到各种坑。