先把当时的情况摆出来。站点上了双栈,巡检机器优先走 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 的故障算成整站抖动。报错文案容易误导,真正的原因往往在相邻那一层的日志里。
