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的作用

rt-acrh17_show

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内存
实际安装下来遇到了如下的问题

  1. iKuai宣称的多播我无法正确使用
  2. iKuai的行为管理功能我实际上是不需要的
  3. iKuai的64位版本需要4GB内存
  4. ESXi直通网卡的时候 LEDE内部的网卡和外部网卡编号无法对应
  5. iKuai/LEDE/ESXi需要公用一个网口做混杂模式 否则无法相通
  6. LEDE带的mwan3多播 我使用之后不会做负载分流
  7. LEDE拨号时候固件缺少ipv6相关组件 无法获取ipv6

编号无法对应的问题我查看内部外部网卡MAC地址解决了
因为我是用iKuai无法完成使用iKuai的目的
所以我移除了iKuai虚拟机 只用LEDE
又遇到了如下问题

  1. LEDE的固件是随便找的 可能有安全问题
  2. LEDE固件不能使用Openwrt的源
  3. LEDE固件因为是随便找的 结果我想要用某些功能无法完成

种种问题 所以我决定移除这套方案

Openwrt

移除上一套方案后 想直接裸机使用Openwrt
所以就更换了硬盘 使用msata接口的三星PM810 32G
更换了一条海力士的4G内存条 这样才能物尽其用

Openwrt有一个squashfs格式和ext4格式
前者我在硬路由上使用 软路由我决定使用后者
使用官方固件我成功获取了ipv6地址

官方安装之后有如下问题:

  1. Openwrt默认安装完不会占用整个硬盘空间
  2. Openwrt提供v2ray的维护者并不打算支持v2rayN提供的订阅格式
  3. Openwrt提供的ss/v2ray的方案都没有lean提供的ssr-plus好用

解决办法如下:

  1. 第一个问题解决方案就是用Ubuntu live启动之后
    用fdisk删除存放分区 再重新建立分区
    起始的offset一致 不要抹去分区签名
    就可以完全扩容了
  2. 第二个问题 无解 可以修改源码
  3. 第三个问题 可以选择移植ssr-plus到Openwrt
    也可以选择使用其他的链接方案

总之解决方案都是需要自己移植/编译
所以我选择放弃

lean’s LEDE

反正都需要编译了 索性就选择lean’s LEDE

编译时候遇见的问题如下

  • 产生uefi启动的img并不能良好启动
  • 想直接扩容超过4G可能会超过U盘上fat32单个文件大小限制
  • 默认参数不支持ipv6 需要手工配置开启

最终我选择了使用传统引导和分区为2Gb的方案
然后再利用扩容的方法使其完整使用硬盘

本来我在固件中选择编译了Docker
结果我发现我这么多设备 我要用一个路由器去跑docker?
再想到我学长的话 - 『路由器核心设备,勿动』
遂放弃并且移除相关功能

lede_show

我写了一个相关脚本合集

然后我写了一个Dockerfile
可以直接docker build生产LEDE-x64固件

后来使用Github Actions生成固件

生成的 img 固件可以直接更新系统

结语

少折腾路由器 越折腾你断网越久.jpg

以上