现场是这样的。站点接入 IPv6 后,防火墙沿用了旧的 IPv4 白名单,蜘蛛从 IPv6 地址进来全部被丢包,日志里看不出请求,抓取量三天掉了六成。

这类报错背后常见的原因有几处,逐个排除就行。防火墙规则只按 IPv4 段放行;Nginx 监听 [::]:443 但没有单独的安全组规则;监控只看 IPv4 的请求量,没有分协议统计。

动手时先确认站点是否已启用 IPv6

dig +short AAAA www.example.com

随后检查 IPv6 端口的连通性

curl -6 -s -o /dev/null -w '%{http_code}\n' https://www.example.com/

接着在防火墙放行蜘蛛的 IPv6 段

ip6tables -A INPUT -p tcp --dport 443 -j ACCEPT

剩下的就是按协议拆分日志统计

awk '{print $1}' access.log | grep -c ':'

排查用的命令都是临时敲的,没有写成脚本,事后才整理。

手上没有现成的复现脚本,就照着线上请求手工拼了一个。

怎么算真的好了,看的是同一批现象。放行后 IPv6 请求从零恢复到日均四千次,抓取总量一周内回到掉量前水平。

补一句。双栈站点要把安全组和日志统计都按协议过一遍,只改监听不改放行等于没开。拖得越久,排查成本越高,因为现场状态会被后续操作覆盖。

作者 9823189