使用 Github Action 定制 LEDE Openwrt K2P 路由固件

前言

脱离了校园网环境了,家里白嫖了移动宽带,所以需要一个路由器来实现一些想要的功能。之前的 K2P 刚好拿来折腾一下下。然而,Hiboy 的固件功能过于丰富,ChongShengB 的固件中的 SmartDNS 和 AdGuard Home 在长时间(几个小时)的运行后,都会失效,出现没有 DNS 解析的问题,恩山论坛上倒是有个固件不错,但没有去广告功能,所以生出自己定制固件的想法,今天基本完成了,所以写个文章记录一下。

更新1.0:修改并简化操作

更新1.1:修复重启后 WiFi 未开启的 Bug

更新1.2:修改闪存部分勘误

路由基本信息

K2P 硬改,32M 闪存,512M 内存,USB 3.0

过程

之前定制 ChongshengB 的固件就不写了,这里写定制 LEDE 的 Openwrt.

本着不造轮子的想法,检索了一下,发现有现成的脚本,使用了 Github Action 功能进行云编译,不占用本地资源。

总的来说,需要 Fork 一下 P3terx 仓库,自行修改 .config diy.sh.yml.

P3terx仓库

P3大佬又更新了仓库,我这文章不想改了,基本原理是一样的。

需添加 .config 文件以决定要不要软件,说明我就不写了,人家写得很清楚。

建议第一次云编译,保存种子配置之后好修改。

另外,对于没自定义却自己带的软件,可增添如下配置以取消:

1
2
3
CONFIG_PACKAGE_luci-app-vlmcsd=n
CONFIG_PACKAGE_luci-i18n-vlmcsd-zh-cn=n
CONFIG_PACKAGE_vlmcsd=n

diy.sh 脚本还可以修改默认路由管理地址以避免和光猫冲突。

以下更改为了192.168.2.1,可自行更改。

1
sed -i 's/192.168.1.1/192.168.2.1/g' package/base-files/files/bin/config_generate

:我是 32M 闪存,然而 LEDE 那里编译的默认是 16M 闪存的,所以需要自行修改编译固件大小:

编辑 diy.sh 添加:

1
2
sed -i 's/0xf60000/0x1f60000/g' target/linux/ramips/dts/mt7621_phicomm_k2p.dts
sed -i 's/15744k/32448k/g' target/linux/ramips/image/mt7621.mk

第一行计算方式为:

32M 闪存 = 32x1024x1024 = 33554432k (16 进制为 0x2000000),

去除掉之前留给 u-boot 等的空间 (0x0 - 0xa0000),

剩余则为 0x1f60000

第二行为修改固件最大大小,避免生成固件失败,同样改为 32M,留一点空余的话:32488<32768

仓库地址

AdGuard Home luci app

由于 LEDE 没有 AdGuard Home,倒是有 Adbyby Plus,但实测不好用。所以我是要自定义去除 Adbyby Plus,添加 AdGuard Home.

在 P3terx 的 .config 里添加

CONFIG_PACKAGE_luci-app-adguardhome=y

然后在 diy.sh 里添加:

1
2
3
git clone https://github.com/rufengsuixing/luci-app-adguardhome package/lean/luci-app-adguardhome/
./scripts/feeds update -a
./scripts/feeds install -a

PS: 这里和 P3 的说明不一样。 反正 git clone 后面不加目录就不会编译进去,那就加一个目录咯。

仓库地址

编译完成后的设置

SSH 连接并执行

df -h

可以看见是 32M 的固件大小了,不需要担心 AdGuard Home 的过滤器太多放不下。

AdGuard Home 设置

更新 AdGuard Home 内核。

使用 “作为 dnsmasq 的上游服务器”。

转到 手动设置 里,修改为:

1
2
port: 5335
blocked_response_ttl: 60

再启用。

进入 AdGuard Home 网页管理界面,更改 DNS 和过滤器:

DNS (个人用):

1
2
3
4
5
6
https://dns.alidns.com/dns-query
tls://dns.google
https://i.233py.com/dns-query
https://dns.cloudflare.com/dns-query
tls://1.1.1.1
240c::6666

过滤器 (个人用):

1
2
3
4
5
6
7
8
9
10
https://gitee.com/halflife/list/raw/master/ad.txt
https://cdn.jsdelivr.net/gh/vokins/yhosts/hosts
https://raw.githubusercontent.com/vokins/yhosts/master/data/tvbox.txt
https://gitee.com/privacy-protection-tools/anti-ad/raw/master/easylist.txt
https://gitee.com/xinggsf/Adblock-Rule/raw/master/rule.txt
https://gitee.com/banbendalao/adguard/raw/master/ADgk.txt
https://adguardteam.github.io/AdGuardSDNSFilter/Filters/filter.txt
https://adaway.org/hosts.txt
https://hosts.nfz.moe/full/hosts
https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts

强烈建议:在测试 AdGuard Home 运行成功并且稳定之后,把 日志 关闭,否则闪存空间非常容易被塞满。

设定完成后,才可以启动 SSR.

IPV6的设置

只需要把光猫的拨号更改为桥接,使用 K2P 拨号,就会自动分配 IPV6 地址了。

然后在 网络----DHCP/DNS----高级设置 里,取消打钩 禁止解析 IPv6 DNS 记录

IPV6 的 DNS 可以添加在 AdGuard Home 里面。

最后,去 https://test-ipv6.com 测试一下就好了。


(因为目前 IPV6 的路由满世界瞎跑,所以我禁止掉了 IPV6 解析,只留下了分配 IPV6 地址,这样有时候需要 ping 一下,也不用麻烦。)

自动重启后,WiFi 未开启

这个问题在我 Build 固件后复现率非常高。

经过 Google 后,发现如果在启动项加入重启 WiFi 的几条命令后,问题得以解决。

步骤

手动添加

如果你已经编译好了,不想再折腾了,或者是用的其他人的固件,那么选择手动添加吧。

系统--启动项--本地启动脚本

添加如下命令,一定是要放在 exit 0 之前:

1
2
3
4
ifconfig rax0 up
ifconfig ra0 up
ifconfig apclix0 up
ifconfig apcli0 up

在编译时的 diy.sh 添加

diy.sh 中,添加:

1
2
# Fix WiFi disabled after reboot
sed -i "2a\ifconfig rax0 up\nifconfig ra0 up\nifconfig apclix0 up\nifconfig apcli0 up" package/base-files/files/etc/rc.local

这样编译出来的固件就会带以上命令,无需手动添加了。

实现功能

  • 定时重启

  • AdGuard Home 广告过滤

  • 这里和谐了

  • UPnP

  • Turbo ACC

  • IPV6

  • 管理页面为192.168.2.1

Q & A

Q: 为什么没有带 USB 功能?

A: 因为个人用不到 NAS、打印机、无线网卡等功能,精简之后更稳定且留出空间给过滤器。

Q: AdGuard Home 功能怎么样?

A: 添加以上 10 个列表之后,我访问的网站能过滤很多广告,在 https://checkadblock.ru 上能得到 71/100 的分数,对于防护网站默认开启的追踪功能也有一定作用。但对于 和谐视频网站 的网页和视频开头广告没有效果。对于 DNS 分流,基本没用,建议折腾 SmartDNS 去。 AdGuard Home 更新了一个 “最快的 IP 地址” 选项,可以查询并返回响应最快的地址,原理类似于 SmartDNS。SmartDNS 已经不更新了,使用 AdGuard Home 在一定程度上可以替代,且在开发组开发和大家的反馈下,功能应该会更好。

Q: 和谐功能 效果怎么样?

A: 由于 K2P 的 CPU 性能不足,无法发挥我的 和谐 线路的实力,开启多线程后,下载可以达到 3.3M/s 的速度,基本满足 1080P 视频和日常聊天的需要。

参考文档

https://github.com/coolsnowwolf/lede

https://p3terx.com/archives/build-openwrt-with-github-actions.html

https://blog.csdn.net/xbgzytb/article/details/104775879

使用 Github Action 定制 LEDE Openwrt K2P 路由固件

https://soacg.pp.ua/posts/16454/

作者

左吉士

发布于

2020-04-02

更新于

2020-10-07

许可协议

评论