前言
我还记得我blog第一篇文章讲的是如何自签名osu!Lazer
几年过去了 lazer有了很大的更新
自签的方式和运行也变化很大很大
我后面用了SideStore 它不需要像Altstore一样局域网有一个AltServer
但它有一个问题
就是每次使用都需要打开WireGuard 然后才可以自签名
其实是挺麻烦的 如果忘了开7天后就和Altstore一样挂了
虽然说可以自动在后台签名 和Altstore一样
但是我并不可能一直开WireGuard 我不上Google了吗
近几天我重新装回来我发现他不用wg了 而是用StosVPN去做这些
这玩意还被从AppStore下了
后面用了Stikdebug 但这三个缺点都和wg一样的
其实很蛋疼,如果你从SideStore下App的时候需要魔法
那我就得先用魔法下完了 等他开始签名的时候手动去连接
拉完了
而且由于iOS限制,开流量的时候是不可以用的
所以我就想,能不能集成到局域网中,这样只需要我在家他就自己签名,我也不用折腾了
开始折腾
我啪的一下找到了这个blog
太牛逼了 直接解决了我要的所有
原理
以下参照了上面的blog
之前用wg的时候可以看到
他就是给iOS分配了一个10.7.0.0的IP 然后转发10.7.0.0/24的所有数据
然后SideStore用10.7.0.1这个IP模拟装了iTunes的电脑去续签开发者证书
wg做的事仅仅就是把从10.7.0.0发往10.7.0.1的数据包交换来源和目标IP
也就是把数据包发给了自己的SideStore
那就很简单了
OpenWRT的配置
只需要去OpenWRT加两行规则
table inet sidestore {
chain RAW_PREROUTING {
type filter hook prerouting priority raw; policy accept;
# 此处 192.168.0.xxx 改成你的 iOS 设备的 IP
ip saddr 192.168.0.123 ip daddr 10.7.0.1 ip saddr set 10.7.0.1 ip daddr set 192.168.0.123 notrack;
ip saddr 192.168.0.234 ip daddr 10.7.0.1 ip saddr set 10.7.0.1 ip daddr set 192.168.0.234 notrack;
# 可以按需添加更多的规则
}
}
当然这需要给iOS设备手动设置一个静态IP,对于我/16的网段显然不是什么难事(
我的话并不知道怎么在Web界面上调 我选择直接SSH进去
然后把上面的东西粘贴进这个文件里
vi /etc/sidestore.nft
nft -f /etc/sidestore.nft
nft list ruleset | grep 'table inet sidestore' -A 5
能看到设定的规则就是OK了

然后的话开机的时候让nfttable自动加载就好了
我们写一个init脚本好了
vi /etc/init.d/sidestore_nft
把这个粘贴进去
#!/bin/sh /etc/rc.common
START=99 # 在大部分服务之后启动
STOP=15
start() {
# 检查 nftables 文件是否存在
[ -f /etc/sidestore.nft ] || return 0
echo "Loading sidestore nftables rules..."
# 使用 nft -f 命令从文件加载规则,-f 会自动清空并重新加载文件中的所有内容
nft -f /etc/sidestore.nft
}
stop() {
echo "Stopping sidestore nftables rules..."
# 停止时,删除整个自定义表
nft delete table inet sidestore
}
reload() {
# reload 命令用于在防火墙重载时重新加载规则
stop
start
}
然后启用他
chmod +x /etc/init.d/sidestore_nft
/etc/init.d/sidestore_nft enable
/etc/init.d/sidestore_nft start
主路由的配置
接下来在主路由上增加一条静态路由规则

网关选择OpenWRT 保存
然后在iOS上重新测试一下Refresh 没问题就完事了
Debug
然后就翻车了 我发现ping不通
咋回事呢
哦哦哦卧槽傻逼了
在iKuai上静态路由nat后 转发到了OpenWRT 实际上OpenWRT上看到的地址应该是iKuai的地址
所以规则只需要写一行
ip saddr 10.0.0.1 ip daddr 10.7.0.1 ip saddr set 10.7.0.1 ip daddr set 10.0.0.1 notrack
然后就可以了