先把当时的情况摆出来。站点上了双栈,巡检机器优先走 IPv6,一半 URL 在报告里是超时,浏览器和 IPv4 请求都正常,排查了半天才发现是 IPv6 回源链路的问题。

把日志和配置对完,能解释这个现象的基本就这几处。巡检机器解析到 AAAA 记录后只走 IPv6。少数情况下是IPv6 回源没有配置,CDN 节点返回超时。

少数情况下是防火墙只放行了 IPv4 的探测端口。不容易想到的是,监控告警里没有区分协议栈。

先分别用两种协议请求同一地址

curl -4 -sI https://www.example.com/ | head -1; curl -6 -sI https://www.example.com/ | head -1

然后看 DNS 返回的 AAAA 记录

dig +short AAAA www.example.com

巡检显式指定协议族并分别统计

python check_site.py --family 4 --family 6

补齐 IPv6 回源或临时摘掉 AAAA

ip -6 route show default

改之前我把相关日志按时间截了一段存着,事后对时间线用得上。

恢复的判定其实很直接。两种协议都返回 200,报告里超时条目消失,协议栈分列统计后能直接看出差异。

双栈站点的监控必须分协议看,混在一起统计只会把 IPv6 的故障算成整站抖动。报错文案容易误导,真正的原因往往在相邻那一层的日志里。

作者 9823189