便携路由器
背景
很多时候,我们想要出门在外也能方便地连入我们的内网。我最近就遇到了到朋友那玩 VR 结果串流不成功的问题。虽然理论上我可以在那慢慢配置 wireguard 啥的,但是通常一下午并没有这么多时间让我折腾。所以就在想是否可以随身携带一个便携路由器,只需要插上网线,连上 wifi 就能快速接入我的内网呢?这便对路由器提出了一些需求:
- 最重要的,需要便携性,能放入书包里
- 能刷 openwrt 跑 wireguard
- 有 wifi 6
- 最好是主线 openwrt
- 性能联发科 mt7981 以上
2)和4)主要是我设想的组网方案会用到 wireguard,而一些硬件主线还没有支持(比如 360t7 和 wr30u 都是 23 下半年才支持的,我买的时候还没有)。虽然有一些第三方的 openwrt 魔改版固件,比如 QWRT,XWRT 等等。但这些系统有一些我无法接受的点,比如使用闭源 wifi 驱动,这导致无法和主线的 openwrt 组 mesh 和 fast roaming 等。另外 wireguard 需要内核模块,如果第三方固件没有的话,也没法自己安装。
3)和 5)主要是因为 VR 串流对于带宽要求是比较高的,在一些高端硬件情况下,码率设置成 500 mbps 都是可行的。我的硬件一般 60 - 100 Mbps 就够了。由于 wg 需要加解密是需要吃较多 CPU 资源的,mt7981 能够跑到 350-400 Mbps 左右(见cyyself/wg-bench: WireGuard Benchmark using netns and iperf3 (github.com))。而经典的 mt7261 MIPS SoC 则只能跑到 100 Mbps 左右就明显不够用了。因此为了保障有较好体验,wifi 6 和 mt7981 我觉得是个基准线了。
最终实现的效果
- 设备通过 wg0 接口连接入我的内网
- (三层接入)连接 5G wifi SSID1,被分配一个本地局域网地址 192.168.1.x,然后通过 wg0 NAT 后上网
- (二层接入)连接 5G wifi SSID2,通过 vxlan 二层接入我的 op1 内网,获得 op1 的内网地址
测速
- 有线 wg:420/430 (up/down,下同)
- 无线(-60dBm signal/-90dBm noise)
- L2: 257/320
- L3:300/340
最后的接口示例: