dpl/docs/maintenance/CLOUD_FLARE_AUDIT.md

92 lines
11 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Cloudflare 订阅配置与调优审查
核对日期:2026-10-11。依据用户最初的 DNS/橙云、独立网关、AnyTLS 节点、共享资源保护和追加真实 IP 自动同步要求重新建立检查项,并补查订阅客户端兼容性及性能设置。随后用户追加授权原机场 fu101.gembox-sub.com 的 Cloudflare 调优,并要求缓存规则覆盖将来更换的订阅子域名。不是只重验原聊天留下的待办。
初次审查为只读;后续按用户追加授权修改了 Cloudflare 缓存和配置规则,并完成有效订阅复验。网关、面板、节点代码及数据库配置没有变更,服务没有重启。现状可以确认;不能仅凭现状证明某项过去未做一定由浏览器权限造成,或保证所有潜在优化都已穷尽。
## 现场结果
| 项目 | 本轮证据 | 结论 |
| --- | --- | --- |
| DNS/代理边界 | c2 A=65.99.193.129、已代理;us01 A=64.44.115.18、仅 DNS | 符合订阅走 CF、原生 AnyTLS 不走普通橙云的设计 |
| 严格回源 TLS | dpl 区域页面 Full (strict),新增的 BIC 配置规则未设置 SSL | 已复核 |
| 边缘证书 | *.deeplink-subscribe.com 和根域名通用证书有效,至 2027-01-09 | 覆盖 c2 |
| 源站证书/续期 | 网关证书域名、有效期匹配,独立 Certbot 根目录、禁用目录钩子及定时器配置存在 | 本轮只读核对;续期 dry-run 沿用此前结果,没有重跑 |
| 个性化订阅缓存 | 唯一活动规则 Bypass cache - deeplink-subscribe.com (all hosts),所有传入请求,顺序 1 | 已按用户最新要求扩大到整个订阅区域,无后续缓存资格规则覆盖 |
| 规则部署后响应 | 正式有效订阅连续标准路径请求和短路径均 200、有效 JSON、private/no-store、DYNAMIC,无 Age/HIT/cf-mitigated | 重新验收通过;不是禁用用户的错误页测试 |
| TLS/HTTP 性能 | TLS 1.3、HTTP/2、HTTP/3、HTTP/2 to Origin 页面启用 | 基础协议项已启用;源站未启用 h2,仅配置支持状态不代表实际 h2 回源 |
| HTTP/压缩实测 | 额外有效订阅协商 HTTP/2,gzip 响应自动解码后仍为有效 JSON;Alt-Svc 广告 h3 | H2/gzip 通过;未强制 H3 或实测 Brotli/Zstd |
| IPv6 与原始 IP | IPv6 开启,Pseudo IPv4=off,删除访问者 IP 标头的托管转换关闭 | 未覆盖或移除 CF-Connecting-IP |
| Worker/转换覆盖 | 无 Worker 路由、请求/响应标头转换、源站规则或旧式页面规则;配置规则仅有本次 BIC 例外 | 未发现这些方式导致订阅改写 |
| Bot Fight/Under Attack | Bot Fight 关闭,I'm under attack 关闭 | 本轮请求没有挑战页 |
| 自定义防火墙/限流 | 自定义 WAF 和速率限制规则为零;托管规则列表未创建 | 不等于关闭 Cloudflare 平台自带 DDoS/自动防护 |
| BIC | 全区域默认开启;Subscription client compatibility - c2 对精确主机下的订阅 API 和 /s/ 路径关闭 | 已经用户明确批准后实施;其他路径保留默认检查 |
| 最低边缘 TLS | 仍为默认 TLS 1.0 | 有可评估的安全收紧;尚未实施,不影响当前现代客户端成功请求 |
| HTML/JS 优化 | Rocket Loader、Speed Brain、Fonts、Early Hints、RUM 关闭 | 不把网页渲染优化误用于 JSON/YAML 订阅;本轮保持原值 |
| 真实 IP 同步 | 新旧相关 Nginx vhost 引用受管理文件,22 段与本轮官方 HTTPS 列表逐集合一致,定时器 active | 同步实际接通;每天执行,非实时推送;无主动失败告警和故障注入验收 |
| 共享资源保护 | 新旧网关容器运行、独立上游/卷/网络;原 XrayR PID/启动时间保持;Nginx -t 成功 | 此次 CF 调优没有重启网关。历史首次签发曾触发原网关一次重启,不能改写为从未影响 |
Cloudflare 返回 DYNAMIC 与显式 Bypass cache 并不矛盾,官方说明支持这一表现。[缓存规则设置](https://developers.cloudflare.com/cache/how-to/cache-rules/settings/)
## 已实施的兼容规则与原机场调优
BIC 只筛查请求头,并非订阅令牌认证。关闭会减少一层请求头筛查,不能说风险完全不变。当前有效订阅本来就可通过,不能把 BIC 认定为历史地区失败的根因。自动审批最初拒绝部署,要求具体授权;用户在获知风险后明确回复“批准”,之后正常浏览器部署成功,没有采用绕过审批的控制方式。[BIC 官方说明](https://developers.cloudflare.com/waf/tools/browser-integrity-check/)、[配置规则设置](https://developers.cloudflare.com/rules/configuration-rules/settings/)
以下两条 Configuration Rule 均只添加 Browser Integrity Check=Off,不跳过全部 WAF,不改网关 UA/IP 过滤、限流或令牌校验:
```text
Subscription client compatibility - c2
(http.host eq "c2.deeplink-subscribe.com" and
(http.request.uri.path eq "/api/v1/client/subscribe" or starts_with(http.request.uri.path, "/s/")))
Subscription client compatibility - fu101
(http.host eq "fu101.gembox-sub.com" and
(starts_with(http.request.uri.path, "/sub/") or
http.request.uri.path eq "/api/v1/client/subscribe" or
starts_with(http.request.uri.path, "/api/v1/client/subscribe/")))
```
原订阅主机兼有管理入口,因此不能把 BIC 例外扩大到该主机所有路径。区域默认 BIC 仍开启,管理路径不匹配以上表达式。
| 原机场项目 | 现场结果与本次操作 |
| --- | --- |
| DNS | fu101 A=65.99.193.129,已代理;未更改记录 |
| 回源 TLS | 区域原为 Full/自动模式;新增 Strict origin TLS - fu101.gembox-sub.com,仅精确主机 SSL=Strict,顺序 1,活动;区域默认及其他主机保持原值 |
| 源站证书 | fu101 证书 SAN 匹配,有效至 2026-12-17;已在 Strict 规则启用后成功拉取有效订阅 |
| 缓存 | 新增后再按用户要求扩大:Bypass cache - gembox-sub.com (all hosts),所有传入请求,绕过缓存,顺序 1,唯一活动规则 |
| 客户端兼容 | 上述 fu101 BIC 例外为配置规则顺序 2,活动;不覆盖管理入口,不修改 SSL |
| 真实响应 | 原生 /sub/ 路径的 sing-box JSON 与 Clash YAML 均 200、有效配置、no-store、DYNAMIC,无 Age/HIT/cf-mitigated;gzip JSON 解码通过 |
| 保留网关过滤 | 无 UA 的兼容 API 请求仍为 403;现场 map 明确将空 UA 标记为拒绝对象。本次没有关闭该过滤,不把该响应认作 CF 挑战或全客户端验收通过 |
| 网络与安全默认 | IPv6 开,Pseudo IPv4=Off;区域默认 BIC 开,Bot Fight/Precursor 关;Cloudflare 平台自动/DDoS 防护保留 |
| 协议与网页项 | 页面 HTTP/2、HTTP/3、HTTP/2 to Origin、TLS 1.3 开;0-RTT、Early Hints、Speed Brain 关;原有 RUM 开,未更改。未证明实际 h2 回源或 H3 客户端协商 |
| 共享服务 | 四个新旧网关/管理容器运行,ID/启动时间与变更前一致,Nginx 语法通过;没有操作原上游、卷、端口或服务重启 |
原机场生产项目由当前 Nginx 确认为 `/www/wwwroot/fuuuu.cloud`;不能照搬 CoDocs 中旧的 `/www/wwwroot/fuuu.cloud` 路径。原应用为 SSPanel-Uim,订阅入口是 `/sub/{token}/{subtype}`,不是 dpl 的标准 API。有效令牌仅在原生产服务器的进程内存使用。
## 订阅域名轮换与缓存范围
用户明确要求同一区域更换订阅前缀时自动覆盖。两个区域的 Cache Rule 已分别改为“所有传入请求”(表达式 `true`),动作仅 Bypass cache;没有新增重复规则、浏览器 TTL 覆盖或修改源站 no-store 标头。这是区域级规则:覆盖该区域根域和当前/未来子域名经 CF 代理的 HTTP 请求,不覆盖另一个新购区域,不影响 DNS only 的节点流量。
同一区域从 a 改到 b 后无需改缓存规则;仍须完成 DNS/代理、Nginx vhost、证书与续期、网关允许的 Host/上游、面板订阅 URL,以及精确主机范围的 BIC/TLS 规则调整,再做有效订阅复验。缓存配置不会自动让新主机上线,也不会解除地区封锁。后续若在这两个专用订阅区域部署静态站点,全部请求也会绕过 CF 边缘缓存,届时须单独设计例外和规则顺序。[缓存规则顺序](https://developers.cloudflare.com/cache/how-to/cache-rules/order/)
## 回退
- 仅回退本次缓存范围扩大:在原规则 ID 上恢复原名称及主机精确匹配,仍为 Bypass cache;变更前值保存在 `codex/output/cloudflare-audit-20261011/cache-rules-before-expansion.json`。dpl 的缓存规则原先已存在,不能直接删除来回退。
- 回退 BIC:停用本次两条 Subscription client compatibility 配置规则,恢复区域默认检查。不操作管理入口或网关过滤。
- 回退原机场 Strict:停用本次 Strict origin TLS - fu101.gembox-sub.com,回到原区域 Full/自动模式;不更改区域设置或证书。
- 回到原机场本轮调优前:另行停用本轮新增的原机场 Cache Rule。勿删除其他区域或后来新增规则;先核对当前状态仍为本轮结果。
## 仍未实施的可选调优
1. 核对实际客户端和该区域其他代理主机后,评估把 dpl 最低边缘 TLS 从 1.0 提至 1.2。免费套餐的普通设置覆盖区域全部代理主机;按主机单独设置需要 ACM。本轮没有购买产品或改变 TLS 下限。[Minimum TLS 官方说明](https://developers.cloudflare.com/ssl/edge-certificates/additional-options/minimum-tls/)
2. 日常观测订阅失败率和边缘/源站耗时后,才评估付费路由或额外性能产品。缓存加速不适用于含用户凭据的个性化订阅;0-RTT 关闭、HSTS 未启用、边缘 Always Use HTTPS 未启用不自动等同漏做。当前正式订阅 URL 使用 HTTPS,源站 HTTP 已 301 到 HTTPS。没有点击“启用所有可用设置”,没有宣称实测性能收益。[HTTP/2](https://developers.cloudflare.com/speed/optimization/protocol/http2/)、[HTTP/3](https://developers.cloudflare.com/speed/optimization/protocol/http3/)、[内容压缩](https://developers.cloudflare.com/speed/optimization/content/compression/)
3. 官方 IP 段同步每天在宿主机时间 02:00 后随机最多 15 分钟执行,当前配置与官方列表相符;变化后最多等待下一轮成功同步,下载失败保留最后有效值。未来可单独评估更频繁同步和失败告警,本轮没有改共享定时器,不能保证 IP 调整时绝无短暂识别波动。
## 验收与数据边界
有效用户令牌只在生产服务器进程内存中使用,没有输出、复制或保存订阅令牌/正文;只输出白名单响应头和非私密节点参数。未改变用户、未恢复临时用户、未运行代理客户端产生正式用户节点流量。QA 不在当前下发用户集合,四个授权套餐关联正确,套餐其他字段与精确备份一致。
本轮请求来自生产服务器;手机 GUI、系统 TUN、多地区、IPv6 端到端、H3、不同客户端 UA 全覆盖、同步故障注入与真实告警均未执行。本地节点连通按用户要求继续跳过。两区域缓存扩大、两订阅路径 BIC 例外、原机场 Strict 已部署,保存后的真实订阅与共享服务复验通过。文档本地已更新,Git 提交/推送状态以当轮交付记录为准。
页面证据保存于 `codex/output/cloudflare-audit-20261011/`:`c2-cache-zone-enabled.png`、`old-cache-zone-enabled.png`、`c2-bic-enabled.png`、`old-bic-enabled.png`、`old-strict-enabled.png`。它们对应不同配置阶段,旧的精确主机缓存截图不代表最终缓存范围。