家庭网络方案演进 - 软路由 N4500

对于 x86 软路由,我的顾虑并非是它能做什么或不能做什么,而是其功耗和体积所导致的衍生问题。散热、噪音、体积等问题都和 x86 CPU 的功耗密切相关。为了能让软路由“消失”,和光猫一样藏在弱电箱中,我首先考虑的就是软路由能够不用风扇进行散热,这样不但解决了噪音问题,也避免了后续由于灰尘等导致的其他维护麻烦。

大家都说选择软路由其实就是在选择 CPU,而选对 CPU 首先要明确自己的需求,我短期内并不考虑玩虚拟机或者 NAS,因此基于先前三点需求之上,对软路由的额外期待就是能够满足千兆科学上网,因此除了平衡功耗和 CPU 核心数量的同时,CPU 单核的加解密性能(AES 性能)也是关键的因素之一。

恰好在此时,我在油管上看到了最新的 R69S 软路由,十一代 Intel N4500 双核双线程 CPU 虽然从跑分和绝对性能上落后于当下比较流行的 J4125(就更不用谈 i3 及以上的软路由了),但是其亮点在于,TDP 功耗只有 6W(OpenWRT 下温度控制十分出色并且无需风扇),单核 AES 性能却达到了 J4125 的两倍(千兆科学上网 CPU 使用率不到 50%)。另外,R69S 还配备了 4 个 2.5G 网口,480 元的准系统售价也让它成为了当下最便宜的 2.5G 多网口软路由。综合各项指标,都完美符合我的需求。

另外,考虑到 RAX 80 后续移植固件的支持情况,在同一时间,我也将无线路由器换成了 ROG Rapture AX6000 EVA 版本(其实主要原因还是因为 Eva 联名 XD)。这款最新的路由器恰好配备了一个 2.5G WAN 口和一个 2.5G LAN 口,搭配 R69S 的 2.5G 网口,我竟无意中搭建出了一个家庭 2.5G 的内网,这对于我常用的 Time Machine 备份和高清资源下载观看也带来了显著的性能提升。

软路由的使用者都有着一颗热爱折腾的心,这句话一点都没错。入手软路由后的几周,我几乎都在研究 OpenWRT。首先就是版本的选择,eSir 的高大全版本是我初次尝试的固件,其中包含的插件非常全面(其体积几乎是官方固件的 2-3 倍),但大多数我都不需要,而精品小包里的插件又过少。我还尝试过 Lean 的最新版其中的科学上网插件里支持的协议无法满足我的需求。对于网络下载和媒体共享,我需要安装 aria2 和 minidlna,光是摸索使用这两个插件,我就踩了不少的坑:

  1. minidlna 安装好后总是显示未启动,搜索了一圈,并且查看进程确认实际上已经在运行,并且电视上也可以正常播放,推测应该是 luci-app 和 minidlna 的通信出现了问题
  2. aria2 安装完后总启动不了。网上大多数的建议是查看配置目录和下载目录(这里首先要确认目标磁盘的挂载路径,对于我来说是将 /dev/sda3 挂载到 /mnt/sda3)是否存在(aria2 不会自动创建需要的文件夹),并且确认权限是否正常(chmod 777 或者使用 root 用户运行 aria2)
  3. 然而以上的排错方式对我的问题仍然无效,确认了 init.d 以及 rc.local 下 aria2 的启动配置无误后,尝试命令行下手动运行 aria2(aria2c --conf-path=/var/etc/aria2/aria2.conf),得到相关 libcppsymbol not found 错误,推测是相关依赖库未安装或版本过旧
  4. 搜索得知 aria2 依赖 ibstdcpp libsqlite3 libssh2 libxml2 等库,手动逐个升级到最新版后问题解决
  5. 接下去安装 luci 网页版管理界面,有两个可供选择 ariang 和 webui-aria2,奇怪的是前者安装后入口按钮并未出现在 aria2 配置界面,后者则没问题,ariang 通过访问 http://192.168.100.1/ariang 也可以正常打开,推测是兼容性问题

之前科学上网插件也遇到无法启动的问题,怀疑可能是由于我使用的是 xchacha20 导致兼容性的问题,通过参考了 esir 关于加密算法的推荐视频打算尝试转换到 aes-128-gcm,并且确认 bwg 的服务器都支持 aes 的指令集,况且我的 R69S 软路由单核的 AES 性能又比较突出,更改后协议后不但问题得到解决,而且终于实现了千兆科学上网。

然而还有一个最重要问题仍然无法得到解决,并且为了解决这个问题使我终究走上了自己编译 OpenWRT 的道路。我使用的 USB 外接硬盘,考虑到 Mac 的兼容性,其文件系统是 HFS+,但 OpenWrt 默认并不支持,解决方案只能是在编译的时候加入内核扩展模块 kmod-fs-hfsplus。另外要实现 Time Machine 备份,还需要安装 netatalk 来支持 AFP 协议 ,这也需要在编译时加入。