分类: Cloudflare类

  • Cloudflare Tunnel + WARP 兼容性陷阱:所有子域名 HTTP 跳转 HTTPS 失效折腾实录

    Cloudflare Tunnel + WARP 兼容性陷阱:所有子域名 HTTP 跳转 HTTPS 失效折腾实录

    本 Homelab 采用 Cloudflare Tunnel 零公网 IP 暴露内网服务,包含 1Panel、NAS、WordPress 等业务,域名体系为 *.ikunv.com。

    云端已完整配置:

    • SSL/TLS 模式:严格 / 完全 HTTPS
    • 开启「始终使用 HTTPS」
    • 页面规则、转换规则全部配置 强制 HTTP→HTTPS 301 跳转

    全局恒定前提

    • 所有域名 HTTPS 直接访问 100% 正常
    • 全程故障只存在于连接Warp后 HTTP 访问无法触发跳转HTTPS
    • 后端服务、反向代理、证书、Tunnel 连通性无任何异常

    问题现象

    ✅ 非 WARP 全部环境:完全正常

    直连宽带、手机流量、第三方 VPN、OpenVPN,所有网络下:

    http://任意子域名 → 正常 301 跳转 HTTPS

    ❌ 只要连接 Cloudflare WARP:必现故障

    只要设备启用 WARP 客户端,无论设备、账号、网络:

    http://任意子域名 → 400 Bad Request

    固定报错:

    The plain HTTP request was sent to HTTPS port

    多设备、多账号、多环境交叉验证(本人实测补充)

    为了排除设备环境、账号差异、客户端 Bug、网络特殊性,我做了完整对照测试,彻底锁定问题触发条件:

    测试设备

    1. 主力电脑(Windows)
    2. 备用手机(Android)

    测试账号环境

    1. 个人 WARP 账号
    2. 另一套独立团队 Zero Trust 账号(不同组织、不同密钥)

    对照网络

    1. 本地直连网络
    2. 第三方商业 VPN(非 Cloudflare 链路)
    3. 两套不同账号的 Cloudflare WARP

    最终统一测试结论

    • 只要开启 WARP(无论设备、无论账号、无论团队环境):HTTP 全部 400、跳转失效
    • 只要不走 WARP(直连 / 第三方 VPN / 普通代理):跳转全部正常

    由此彻底排除:

    • 本机环境问题
    • 单一账号配置问题
    • 特定客户端版本 Bug
    • 本地路由 / 软路由特殊规则干扰

    怀疑Cloudflare WARP 官方链路与 Tunnel 兼容性冲突

    排查全过程

    第一阶段:误判 OpenClash Fake-IP 干扰(排查失败)

    最初怀疑旁路由 Fake-IP 虚拟解析导致跳转异常。

    操作:

    • Fake-IP-Filter 加入 +*.ikunv.com
    • 强制真实 DNS + 公共 fallback DNS

    结果:

    仅优化非 WARP 环境解析,对 WARP 400 问题完全无效,故障依旧复现。

    证明:和本地 DNS、Fake-IP、软路由无关。

    第二阶段:排查 Tunnel 协议与 TLS 配置(彻底排除)

    为了排除后端协议不匹配,反复全量测试:

    • Tunnel Service 交替切换 HTTP / HTTPS
    • 反复开关 noTLSVerify: true
    • 云端 SSL 严格模式保持开启

    实测结论:

    无论怎么调整 Tunnel TLS、验证开关、协议模式,WARP 下 HTTP 400 报错完全不会改善。

    再次确认:

    后端 HTTPS 访问全程稳定,问题不在服务端、不在 Tunnel、不在证书,只在 WARP 链路预处理阶段。

    第三阶段:穷尽云端规则修复(全部无效)

    完整测试官方所有常规解决方案:

    • 重建页面规则、重写跳转表达式
    • 删除重建 Tunnel、更换 Token
    • 强制 HTTP2 协议启动 cloudflared
    • 软路由强制域名直连
    • 关闭 WARP 深度包检测、智能路由

    所有常规方案全部无效。

    根因最终定位

    结合多环境对照测试结果可以确定:

    当设备流量进入 WARP 官方内网隧道 后,Cloudflare 会对同生态的 Tunnel 流量做特殊协议预处理:

    • 用户明文 HTTP 请求
    • 在官方链路内部被异常协议升级 / 篡改
    • 最终流量到达节点时协议不匹配
    • 直接抛出 400 端口协议错误

    此故障发生在 Cloudflare 骨干网链路层面

    不经过用户本地配置、不经过后端代理、不受用户任何设置控制

    判断可能为Cloudflare Tunnel + WARP 兼容性缺陷,用户侧无法全局修复。

    临时规避方案

    解决方案

    Zero Trust → Settings → WARP Client → Split Tunnels

    将 *.ikunv.com 加入 排除域名列表

    效果

    本机访问:HTTP 跳转恢复正常、400 消失

    硬性局限

    1. 仅本机生效:该策略是本地客户端规则
    2. 外网所有 WARP 用户依旧报错
    3. 无法从云端彻底根治,只能终端规避

    最终状态汇总

    ✅ 直连 / 第三方 VPN / 普通网络:跳转正常

    ✅ 本机 WARP 拆分隧道排除后:访问正常

    ❌ 外网任意 WARP 用户访问 HTTP:依旧 400

    ❌ 无云端彻底修复方案

    技术总结

    本次完整复盘了 Cloudflare Tunnel 与 WARP 兼容性疑难故障,通过控制变量法完成多维度交叉测试:覆盖双设备、多 WARP 团队账号、第三方 VPN、本地直连等网络环境,精准锁定故障触发条件。

    逐层排除了本地 DNS、Fake-IP 解析、Tunnel 协议配置、云端 HTTPS 重写规则、客户端参数等干扰因素,最终定位问题为 Cloudflare 链路兼容问题,非用户配置问题导致。