附录 A 排错手册(症状 → 判据 → 根因)
用法:先在这一页定位「现象」,再按"判据命令"取证,最后看"根因/处置"。不要跳过取证直接改配置。
A.1 先记住两条元规则
/cdn-cgi/trace 绿 ≠ 站点健康(E-05):trace 由边缘生成、不经过源站- 只测 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: 1003 | Direct 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 Client | WARP 改写路由/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) |