CF Tunnel 优选笔记

附录 A 排错手册(症状 → 判据 → 根因)

用法:先在这一页定位「现象」,再按"判据命令"取证,最后看"根因/处置"。不要跳过取证直接改配置。

A.1 先记住两条元规则

  1. /cdn-cgi/trace 绿 ≠ 站点健康(E-05):trace 由边缘生成、不经过源站
  2. 只测 ping 会系统性选错(M-022/M-024):存在仅对 ICMP 优化的线路,以及商家只优化小包(ping/路由好看、大流量走劣质线路)→ 判据必须落在 HTTPS 状态码 + 错误码 + 成功率

A.2 状态码 / 错误码判据表(本教程核心工具)

现象含义处置
200 + colo=XXX可用记录 colo 与 TTFB,参与排序
403 + error code: 1034受限 IP 空间(BYOIP / 专用 IP 等,非授权账户不可用)剔除,不要重试(E-07)
403 + error code: 1003Direct IP Access Not Allowed(探测格式或 Host 不对)检查是否用了正确 Host/SNI;不要用裸 IP 访问站点
000(超时 / 连接失败)链路不通、被阻断,或 IP 已失效按成功率剔除(E-06/E-08)
525边缘连上了源站但回源 TLS 握手失败源站问题(证书/端口),不是优选问题(E-05)
404(根路径,站点自身)站点路由行为与网络故障区分开
连接建立后立即被重置SNI/Host 阻断特征(M-023)换落点/换协议;不要把 RST 当成配置错误
# 一次性判据(把 <IP> 换成候选边缘 IP)
curl -s -o /dev/null -w 'code=%{http_code} conn=%{time_connect} ttfb=%{time_starttransfer}\n' \
  --resolve www.example.com:443:<IP> https://www.example.com/cdn-cgi/trace

A.3 按症状定位

症状 1:域名"有时能开有时不能"(优选时灵时不灵)

判据结论
dig +short NS <你的域名> 不是 *.ns.cloudflare.com域名没托管在 CF → 优选不适用(§0.2)
dig +short A <你的域名> 返回你自己的服务器 IP该记录是灰云(DNS only)→ 优选无从下手(E-04)
候选清单里的 IP 出现 1034清单混入受限 IP(E-07)
同 IP 重测结果翻转(0/2 → 200)IP 级抖动,需多采样 + 定期重跑(E-08)
结果随时间剧烈变化晚高峰 QoS / 竞技场 / 大小包(M-022/M-024)

症状 2:整站打不开(Tunnel 场景)

判据结论
curl --resolve 打任意边缘 IP,/ 返回 525回源 TLS 失败(源站证书/端口/服务未起)
/cdn-cgi/trace 200 但 / 000边缘活着但到源站或隧道链路断了
docker 内跑 cloudflared 时连不上Tunnel 地址应指向宿主(如 172.17.0.1:22;host 网络用 localhost)(M-012)
隧道面板已配置但访问 404(反代场景)检查隧道面板的 CatchAll 设置(M-026/M26-5)

症状 3:隧道频繁断连

判据结论
日志出现自动更新重启自动更新不等新连接就位会中断连接(F-004)→ 生产用 --no-autoupdate
日志有 UDP/QUIC 长连接掉线官方认可的两种可测 protocol: http2 情形之一(F-064)
同机装了 WARP/One ClientWARP 改写路由/DNS 会与隧道出站竞争(M-013)→ 先决定谁走 WARP(§9.5)
单实例连接数不足官方路径是增加 replicas(每 replica +4 条),没有 --ha-connections(F-062)

症状 4:国内访问慢(但站点正常)

判据结论
落到 colo 很远(如北美)第一跳落点差 → 优选(§3–§5)
落点已是近邻(HKG/SIN)但仍慢瓶颈在回源(Argo/Tiered Cache/Cache Reserve,§7.1)或源站自身
期望"国内专线级"体验免费版不承诺;China Network 需企业 + ICP(§7.3,F-054)

症状 5:配置好优选后 Access 门禁失效

判据结论
业务域名与回源域名在同一账号社区实测:SaaS 回源优选与 Access 应用策略会冲突,需拆到不同账户(M-026/F-058)
回源域名可被公网直接访问必须用安全规则把回源域名"阻止",否则绕过门禁与优选(M-026/F-059)

症状 6:源站被直打 / 被扫描

判据线索
页面/跳转/RSS/邮件头里出现裸 IP配置不当泄露源站(M-019 成因 4)
服务端会主动抓取外部链接(链接预览类)出站利用泄露源站 → 让服务器出站走代理/WARP(M-019 成因 5,§9.2)
历史 DNS 记录/子域解析过源站换 IP 并先配防火墙再解析(M-019 成因 1)
服务被扫描(Tunnel 暴露面)Tunnel 只解决"不开入站端口",不解决滥用 → 配 Access/WAF(M-007/M-012)

A.4 取证工具速查

# 路由与 ASN(注意:目标可能屏蔽 ICMP → 用 TCP 模式)
traceroute -A <IP>          # 显示 ASN
traceroute -T <IP>          # TCP 模式
mtr -r -c 100 <IP>          # 100 次采样报告(丢包率一目了然)

# 落点与协议
curl -s https://<你的域名>/cdn-cgi/trace

# 解析真伪
dig +short NS <域名>
dig +short A  <域名> @macy.ns.cloudflare.com    # 权威 NS 直查

在线:ITDOG(国内多点 ICMP/TCP)、BGPtool(BGP/路由)、IPIPNET(路由与 AS 信息)(M-022);Net.Coffee(查出口 IP、归属地、分流是否生效)(M-015)。

A.5 一张"别做"清单

别做为什么
用裸 IP 访问站点来"测速"触发 1003;且无法代表真实站点行为
用平均 TTFB 排序抖动把均值拉爆(E-06)
把优选 IP 写死进长期 DNS会失效,必须定期重跑(E-09)
用 cloudflared 参数去解决"用户侧慢"用户侧是优选/平台的地盘(§6.8 分工表)
在回源域名上不设阻止规则会绕过 Access 与优选(M-026)