Openwrt 折腾笔记
参战硬件
| 硬件 | 价格 | 购买方式 |
|---|---|---|
| phicomm-k1 | – | 学长送的 |
| ASUS RT-ACRH17 | 429 | 京东 |
| 3855U 6 口 工控路由 | 820 | 淘宝 |
phicomm-k1
这个设备是一位不愿意透露姓名的学长送的 他刷好了 Pandavan 固件 这个设备后来还被我用来做交换机使用
Pandavan
最初我获得设备的时候就是这个固件 常用固件功能都有 最初我需要这个设备的原因是要在路由器上跑 Shadowsocks 因为 Android 设备刷完 OpenGApps 需要连接 Google 登陆账号激活 路由器上跑代理是解决这个问题的办法 后来因为这个设备接口都是百兆所以我买了 ACRH17 替换掉
Openwrt
这固件是后来我想折腾 Openwrt 固件时候才开始刷进去的 我写了一个编译 Dockerfile 把.config 放入就可以直接 docker build 生产固件 后来我还写了自动上传到 github 编译 Docker 地址 后来发现 travis 集成不能编译超过 40 分钟 docker hub 也不能超过一定时间 在本地编了几次之后 编译机被拿走了 就没有在折腾了
PandoraBox
之后为了做学校项目 一个基于 mqtt 的智能家居系统 刷成了 PandoraBox 就当作普通路由使用了
RT-ACRH17
这个机器宣称有 160MHz 所以我就寻找了相关固件
这个机器配了一个 USB3.0 的接口 官方固件只支持 2.0 所以需要第三方固件
Merlin
第一次选择的是 Merlin 固件
正常来说是没有 Merlin
因为 ACRH17 使用的是高通的芯片 没有 Merlin 才是正常情况
Lean 的固件有 160MHz 但是实际上跑不上去
Lean’s LEDE
因为没找到 160MHz 的固件 我就使用了 Merlin 固件作者的 LEDE 来扩展功能
Lean’s LEDE
不选择 Openwrt 官方的固件的原因是没有适配这个机型
LEDE 扩展功能真的好多 但是当时懒了 直接用别人编好的固件
PandoraBox
第三次选择的是 PandoraBox 固件
原因是我还是想要 160MHz 毕竟这是学长忽悠我买这个机器的原因之一
这个固件我刷了两次之后 也刷了 pb-boot 和 op-boot 刷了几次之后把 ART 分区数据弄丢了
结果这机器就显示自己是 RT-AC82U 实际上华硕根本没有这个产品
ART 分区丢失的话 信号就有问题了 所以在网上找了其他人的原厂固件和 ART 分区刷进去
Offical
后来完全刷回了官方固件 再后来就有了 3855U 软路由 之后这个设备就用做了 AP 放在客厅里发挥 AP 的作用

3855U
这个硬件是在我购买了小米电视 4A 后产生的需求 原本的 ACRH17 刷完 lean’s LEDE 的固件时候 对于网关 SSR 有了解码速度的需求 所以买了 x86 的软路由
硬件选择
店家有 D525/J1900/3855U/3865U 选择 不选 D525 的原因是这玩意超级老 没意思 J1900 淘汰的原因是我已经有一个 J1900 作为 NAS 使用了 不想再来一个 3865U 排除的原因是使用 DDR4 内存 没钱买内存 使用 3855U 我有空余 DDR3 内存和 sata 硬盘使用
ESXi+iKuai+lean’s LEDE
最初这个方案是我看了很多软路由介绍的视频 决定参考他们的方案 决定 LEDE 作为主路由 iKuai 作为旁路由 加上一块 480G 的 SATA3 的 SSD 一条 16G 的 DDR3 内存 实际安装下来遇到了如下的问题
- iKuai 宣称的多播我无法正确使用
- iKuai 的行为管理功能我实际上是不需要的
- iKuai 的 64 位版本需要 4GB 内存
- ESXi 直通网卡的时候 LEDE 内部的网卡和外部网卡编号无法对应
- iKuai/LEDE/ESXi 需要公用一个网口做混杂模式 否则无法相通
- LEDE 带的 mwan3 多播 我使用之后不会做负载分流
- LEDE 拨号时候固件缺少 ipv6 相关组件 无法获取 ipv6
编号无法对应的问题我查看内部外部网卡 MAC 地址解决了 因为我是用 iKuai 无法完成使用 iKuai 的目的 所以我移除了 iKuai 虚拟机 只用 LEDE 又遇到了如下问题
- LEDE 的固件是随便找的 可能有安全问题
- LEDE 固件不能使用 Openwrt 的源
- LEDE 固件因为是随便找的 结果我想要用某些功能无法完成
种种问题 所以我决定移除这套方案
Openwrt
移除上一套方案后 想直接裸机使用 Openwrt 所以就更换了硬盘 使用 msata 接口的三星 PM810 32G 更换了一条海力士的 4G 内存条 这样才能物尽其用
Openwrt 有一个 squashfs 格式和 ext4 格式 前者我在硬路由上使用 软路由我决定使用后者 使用官方固件我成功获取了 ipv6 地址
官方安装之后有如下问题:
- Openwrt 默认安装完不会占用整个硬盘空间
- Openwrt 提供 v2ray 的维护者并不打算支持 v2rayN 提供的订阅格式
- Openwrt 提供的 ss/v2ray 的方案都没有 lean 提供的 ssr-plus 好用
解决办法如下:
- 第一个问题解决方案就是用 Ubuntu live 启动之后 用 fdisk 删除存放分区 再重新建立分区 起始的 offset 一致 不要抹去分区签名 就可以完全扩容了
- 第二个问题 无解 可以修改源码
- 第三个问题 可以选择移植 ssr-plus 到 Openwrt 也可以选择使用其他的链接方案
总之解决方案都是需要自己移植/编译 所以我选择放弃
lean’s LEDE
反正都需要编译了 索性就选择 lean’s LEDE
编译时候遇见的问题如下
- 产生 uefi 启动的 img 并不能良好启动
- 想直接扩容超过 4G 可能会超过 U 盘上 fat32 单个文件大小限制
- 默认参数不支持 ipv6 需要手工配置开启
最终我选择了使用传统引导和分区为 2Gb 的方案 然后再利用扩容的方法使其完整使用硬盘
本来我在固件中选择编译了 Docker 结果我发现我这么多设备 我要用一个路由器去跑 docker? 再想到我学长的话 - 『路由器核心设备,勿动』 遂放弃并且移除相关功能

我写了一个相关脚本合集
然后我写了一个 Dockerfile 可以直接 docker build 生产 LEDE-x64 固件
后来使用 Github Actions 生成固件
生成的 img 固件可以直接更新系统
结语
少折腾路由器 越折腾你断网越久.jpg
以上