3.8 KiB
边缘舰队 IPv4-only
2026-10-03 按用户授权对 SG、LA、RN、JP 四台现役节点统一禁用 IPv6。目标是经任何代理线路访问目标时,直连与 WARP 均只使用 IPv4;IPv6 地址及仅有 AAAA 的目标直接失败,不回退到 IPv6。
三层约束
- 系统:
/etc/sysctl.d/99-z-proxy-station-ipv4-only.conf将net.ipv6.conf.all.disable_ipv6、default.disable_ipv6、lo.disable_ipv6设为1。proxy-station-ipv4-only.service已启用,在network-online.target之后、Xray/sing-box/WARP 之前重新应用。检查每个接口,不只检查all;ip -6 addr与ip -6 route应无地址/路由。 - 代理:Xray 的每个 freedom 出站使用
settings.domainStrategy=ForceIPv4与streamSettings.sockopt.domainStrategy=ForceIPv4,内置 DNS 使用queryStrategy=UseIPv4;::/0拒绝规则在 WARP 分流之前。持久配置写在 3x-ui 数据库的xrayTemplateConfig,不能只改生成的bin/config.json。sing-box 在路由开始先resolve(ipv4_only),再拒绝::/0,之后才进入原有 direct/WARP 规则;DNS 经 IPv4 UDP 服务器,QUIC 入站监听0.0.0.0。 - DNS:节点根域、通配符及其他节点子域不保留 AAAA,A 记录为 DNS-only。私有
config.env的SERVER_IPV6清空,防止重新创建 AAAA;清空变量不会删除已存在的记录。
WARP 在用户态代理隧道中仍有双栈能力,因此主机没有公网 IPv6 也不能替代代理层限制。Xray 的 UseIPv4 允许解析失败后回退;当前策略使用 ForceIPv4。依据:Linux 内核 sysctl、Xray sockopt、sing-box resolve。
维护与回滚
通用 08-xui-bootstrap.py 与 13-singbox-config.py 已保留代理层防护;前者扩展已有模板时也应用 IPv4-only,后者需要 sing-box 1.12+。新建/重建服务器还须配置上述系统 sysctl 与开机服务,不要只依赖生成器。当前私有脚本工作副本已同步相关修改。
本次每台机器先通过 SQLite backup API 在线备份 3x-ui 数据库,并打包受影响配置、系统网络设置、systemd 单元、nginx、acme.sh 与 WARP 状态。备份在远端 /root/ipv4-only-backup-<UTC时间>/,具体路径、Cloudflare 删除前的记录及验收结果在 Git 忽略的 edge-nodes/private/ipv4-only-20261003/。不要将这些内容公开托管或入 Git。证书续期动作未修改。
回滚应读取本机的私有维护记录和该服务器快照,仅恢复受影响的 3x-ui 模板、sing-box 配置及 sysctl/开机单元;不要用整个目录快照覆盖后来新增的配置。恢复 IPv6 或 AAAA 须有用户授权。
本次验证与边界
- 四台服务器全部接口的
disable_ipv6=1,无 IPv6 地址;持久文件与开机服务均已配置。未进行整机重启验收。 - 服务器侧真实协议客户端验证 33 条线路(SG 8、LA 6、RN 11、JP 8):IPv4 出口正常,direct 的
warp=off、WARP 的warp=on;IPv6 字面地址与仅 IPv6 域名均失败。 - 从本机经公网验证线路:Trojan/Hysteria2/TUIC/SOCKS5 使用 sing-box,VMess/SS over WS 使用 mihomo。临时客户端只监听本机回环,不修改活动代理配置。具体结果见私有记录。
- Cloudflare 删除 SG、LA 的 4 条 AAAA;RN、JP 原本无 AAAA。实际 HTTPS Surge 订阅通过官方 CLI 校验。
代理入站使用的 QUIC UDP 已做真实连接验证;未逐条进行被代理 UDP 负载、手机真机或本地直连 IPv6 泄漏验收。这项策略限制服务器代理转发,不改变客户端绕过代理的本地网络行为。当前不需要通过 VPS 厂商面板才能达到代理仅 IPv4 的目标。