希望有一个包含 ssr plus+ 的 Openwrt 固件,但是这样的固件往往有很多我不需要的功能,而且有被植入后门的风险,所以还是自己编译了一个。
其实一个更重要的理由就是我想要 NAT1,也就是 fullcone NAT,于是只能自己编译。
目标
为自家的 新路由3 编译一个固件,然后白嫖 GitHub Action 进行编译。
需要的额外功能有:SFE 快速转发,SSR,ZeroTier
最后要求能 Full Cone Nat (Nat 1),主要是用来打游戏啦。
准备环境
按照要求开一个 ubuntu 18.04 的虚拟机或者 Docker(肯定是 Docker 方便,但是不熟悉 Docker 的话还是虚拟机吧)。
配置好代理(白名单或者全局),否则下载可能会很慢。
如果是虚拟机:
- 记得预留 30G 以上的空间,不然会编译失败(可能是我编译线程数开得太多了,导致临时文件过多)。
- 内存 5G 以上。
首次编译
按照 https://github.com/coolsnowwolf/lede/ 操作。
注:
- clone 仓库后,把 lede/feeds.conf.default 的 hello world 那行取消注释,解锁对于国内用户最重要的功能。
- 对于新路由3,Target 的配置 MediaTek Ralink MIPS - MT7621 base boards - Newifi D2
- 我额外开启的 luci app 为:sfe, ssr plus, zerotier, unblock-netease-music
开启 NAT 1
按照 https://github.com/LGA1150/openwrt-fullconenat 操作。
对于最新版本的 openwrt (kernel 为 Linux 5.4),编译时会报错,解决方案 issue 里有提到 https://github.com/LGA1150/openwrt-fullconenat/issues/4 。
要让它生效,需要在 iptables 的自定义规则中加入以下两行,网络接口的名字 eth0 可能需要替换。
1
2iptables -t nat -A POSTROUTING -o eth0 -j FULLCONENAT
iptables -t nat -A PREROUTING -i eth0 -j FULLCONENAT
测试 NAT 类型可以用这个:https://github.com/HMBSbige/NatTypeTester
集成 GitHub Action
https://github.com/P3TERX/Actions-OpenWrt 有详细的教程,大概就是 clone 出来,把本地 .config 文件传上去,再按需修改 diy part 1 & 2 就好了。
- 自带的 diy part 1 可以解锁 hello world 以及增加 lienol 源,diy part 2 可以配置初始的 ip 地址。
- 把 NAT 1 补丁加在 diy part 1 中。
编译时间大概两小时不到,手动触发(所以也不算浪费资源吧),最后贴上仓库地址 https://github.com/zerolfx/openwrt 供参考。