YSC 的频道
813 subscribers
2.58K photos
13 videos
36 files
1.05K links
Channel Owner: @ysc3839
Download Telegram
我编写了个编译 nft-fullcone 内核模块的脚本,可编译适用于 OpenWrt 官方内核的模块。
编译出的模块的内核 vermagic 和 OpenWrt 官方内核是一致的,因此可以直接在 OpenWrt 官方镜像中安装。

编译流程参考了 https://hamy.io/post/0015/how-to-compile-openwrt-and-still-use-the-official-repository/
patch 文件修改自 https://github.com/wongsyrone/lede-1

使用 GitHub Actions 自动编译 https://github.com/ysc3839/openwrt-official-builds-fullcone/actions

https://github.com/ysc3839/openwrt-official-builds-fullcone
阿里云的云服务器要安装自定义系统,只能传一个系统盘镜像上去,假如手头上只有iso怎么办呢?
实测可以把iso作为系统盘镜像传上去,再添加一个数据盘,启动后把系统安装到数据盘里,再开一台机子,挂载刚才的系统盘和数据盘,把数据盘的内容dd回系统盘,就能正常使用了。
原理是绝大多数Linux的iso镜像都是混合镜像,能当成硬盘镜像来用,包含MBR,在传统BIOS模式下能直接启动。即使遇到了一些不是混合镜像的系统(比如银河麒麟),使用UEFI模式也能启动,具体原理不明,猜测是UEFI也能认硬盘里面的光盘文件系统。
nginx 的默认服务器这么写,可以实现 http 无 Host 时直接断开连接,https 无 SNI 时返回 ERR_SSL_UNRECOGNIZED_NAME_ALERT,同时 http 请求错误地发到 https 端口时也会直接断开连接。
server {
server_name _;
listen 80 default_server;
listen 443 ssl http2 default_server;
ssl_reject_handshake on;
error_page 497 =444 /;
return 444;
}
YSC 的频道
nginx 的默认服务器这么写,可以实现 http 无 Host 时直接断开连接,https 无 SNI 时返回 ERR_SSL_UNRECOGNIZED_NAME_ALERT,同时 http 请求错误地发到 https 端口时也会直接断开连接。 server { server_name _; listen 80 default_server; listen 443 ssl http2 default_server; ssl_reject_handshake on; error_page…
nginx 内部的错误码 497 代表 http 请求错误地发到 https 端口。还可以利用这个错误码实现重定向到 https:
error_page 497 =301 https://$server_name$request_uri;

444也是 nginx 的内部错误码,代表直接断开连接,仅适用于 http 请求,不能用于 https 请求。
Debian 系的 nginx 版本十分落后 (Ubuntu 23.04 的 nginx 版本只有 1.22.0),且缺少 brotli 插件。而 nginx 官方提供的包版本虽然新,但是 brotli 插件属于 NGINX Plus 付费功能,并没有提供。
因此看上去要用上新版 nginx+brotli,似乎都免不了要编译。然而 Alpine Linux 的官方源里面正好就有新版 nginx 和 brotli 插件。
于是就写了个 Docker Compose 配置,把 PID 和网络等设为不隔离,以主系统上的 www-data 用户运行。
同时我在使用 go-acme/lego 来获取 SSL 证书,配合 systemd timer 定时执行,同样以 www-data 用户运行,这样可以直接发送信号 reload nginx。
相关配置文件将会在后续整理后发布到 GitHub。
nginx 配置了 brotli 插件后并作为反向代理时,可能会发现浏览器收到的响应仍然是使用 gzip 压缩。这个问题有两种情况:
一种是没有使用 https,Chrome 浏览器只会对 https 请求启用 brotli 压缩,因为中间可能有某些透明代理服务器不支持。
另一种是 nginx 反向代理的上级服务器支持且只支持 gzip 压缩,nginx 把客户端请求发上去后,上级服务器发现客户端支持 gzip 就返回了 gzip 压缩后的数据,于是 nginx 就没法使用 brotli 压缩了。
解决办法是在 nginx 配置中加上 proxy_set_header Accept-Encoding ""; 让上级服务器以为客户端不支持压缩,直接返回未压缩的数据,然后 nginx 就会自动压缩了。
Linux 使用 WireGuard 进行内网穿透,可以在公网机子上不开启 NAT,把内网机子上 WireGuard 的 allowed ips 设置成 0.0.0.0/0,然后按如下设置 ip rule:
ip route add default via $GW dev wg0 table 20
ip rule add from $IP table 20
其中 $IP 是 WireGuard 接口的 IP,因为 WireGuard 是隧道协议,不需要 gateway,$GW 可以写 0.0.0.0,或者直接去掉 via $GW。20 是 table id,可以写任意整数。
这样设置后内网机子能拿到外部访问者的 IP 地址,同时沿原路发回数据包。这个方案也可以用于其他多网络的情况。
YSC 的频道
Linux 使用 WireGuard 进行内网穿透,可以在公网机子上不开启 NAT,把内网机子上 WireGuard 的 allowed ips 设置成 0.0.0.0/0,然后按如下设置 ip rule: ip route add default via $GW dev wg0 table 20 ip rule add from $IP table 20 其中 $IP 是 WireGuard 接口的 IP,因为 WireGuard 是隧道协议,不需要 gateway,$GW 可以写 0.0.0.0,或者直接去掉…
如果使用 NetworkManager,可以把以下脚本放到 /etc/NetworkManager/dispatcher.d/ 并加上执行权限,实现自动设置 ip rule:
#!/bin/bash

[ "$1" == "wg0" ] || exit

TABLE_ID=20

function update_routing_table() {
IP_ADDR="${IP4_ADDRESS_0%/*}"
ip route add default via ${IP4_GATEWAY} dev ${DEVICE_IP_IFACE} table ${TABLE_ID}
ip rule add from ${IP_ADDR} table ${TABLE_ID}
}

function clear_routing_table() {
ip rule del lookup ${TABLE_ID}
ip route flush table ${TABLE_ID}
}

case "$2" in
up)
update_routing_table
;;
down)
clear_routing_table
;;
*)
;;
esac

请按需要修改其中的 [ "$1" == "wg0" ]。这个脚本修改自 https://gist.github.com/dcode/bbf990ea781bed1e42d39e2351b6c432
Google Play 香港区可以使用内地银联卡了,添加时需要输入银行绑定手机号,接收短信验证码
YSC 的频道
Google Play 香港区可以使用内地银联卡了,添加时需要输入银行绑定手机号,接收短信验证码
已经看到有反馈说添加银行卡的页面输入了62就提示无效,原因不明,不知道是不是在灰度测试?
新项目发布
mTorrent (M-Team) PT 助手
Greasy Fork
GitHub
功能:
种子列表及排行列表批量复制链接
种子列表及排行列表右侧做种下载人数点击刷新
种子列表及种子详情页下载种子改为复制种子链接
种子详情页下载者列表按完成率从大到小排序
YSC 的频道
mTorrent (M-Team) PT 助手 1.1.1 版本发布 支持新的API接口请求方式 Greasy Fork GitHub
mTorrent (M-Team) PT 助手 1.2.0 版本发布
支持新的种子列表布局
由于目前种子列表布局和排行列表布局有差异,不好使用同一套代码同时支持,所以暂时禁用了排行列表的修改
Greasy Fork
GitHub
省流:Visual Studio NuGet 包浏览页面的 By XXX 不可信,要进入 NuGet 网站看 Owner,小心下载到假冒官方、包含恶意代码的包。

刚刚发现 NuGet Gallery 上的 Detours 包被隐藏了,还在疑惑为什么微软还会下架自己的包,突然发现 NuGet Gallery 上该包的 Owner 并不像是微软员工,但是 Visual Studio 中管理 NuGet 包的页面显示的是 by Microsoft,且并不会显示 Owner!
这个 Detours 包是预编译的 binary package,目前并不确定是否包含恶意代码。
同时建议各位检查其他包,避免下载到假冒官方、包含恶意代码的包。