你的网站流量突然腰斩,可能不是算法更新,而是IPv6在“敲门没人应”

昨天还一切正常,今天收录量断崖式下滑,爬虫日志里全是“No route to host”——你查服务器、翻 robots.txt、甚至怀疑被黑,结果问题藏在最基础的地方:IPv6端口根本没开,爬虫来了,门是锁着的。

搜索引擎爬虫到底怎么走IPv6?

Google 和百度的爬虫早就不靠单个 IP 工作了。它们用的是双栈集群,手里既有 IPv4 地址,也有 IPv6 地址。而且,优先用 IPv6 尝试访问

如果你的网站只监听 IPv4(比如 Nginx 里只写了 listen 80),那爬虫拿着 IPv6 地址来敲门,服务器压根不搭理。它不会报错,也不会重试,直接当“不可达”处理——然后默默降低抓取频次。

我帮一个做家居配件的小电商排查过。半年 SEO 投入不少,但新页面总卡在“已提交未收录”。一翻百度蜘蛛日志,满屏 IPv6 请求返回“No route to host”。查下去发现:服务器系统支持 IPv6,Nginx 却只绑了 IPv4 端口。把 listen 80 改成 listen [::]:80,再加一行兼容 IPv4 的 listen 80,重启。两周后,新页面平均收录时间缩短了不少,首页也慢慢开始带出二级栏目。

你的DNS解析配置,正在悄悄赶走爬虫

DNS 不只是“域名→IP”的翻译器。它分 A 记录(IPv4)和 AAAA 记录(IPv6)。如果你的域名同时有这两条记录,但源站没开 IPv6,事情就麻烦了:

  • 爬虫先拿到 AAAA 记录,用 IPv6 去连;
  • 连不上,降级重试 IPv4;
  • 这一来一回,TTFB 拉长,爬虫觉得你“慢”“不稳定”,下次抓得更少。

更常见的是 CDN 背锅。很多云厂商默认开启 IPv6 接入,但回源时仍走 IPv6——而你的源站防火墙没放行 ::/0,或者 Nginx 根本没监听 IPv6 端口。结果就是:用户访问正常(CDN 缓存扛着),爬虫却频频超时。

之前帮一位本地教育博主看站,他发现 Google Search Console 里“抓取错误”突然增多,TTFB 也翻倍。最后定位到:CDN 开了 IPv6 入口,但源站 Nginx 配置里漏了 [::]:443,加上后重试几次,错误数当天就清零了。

为什么你的日志里IPv6请求全是“403”或“404”?

这不是网络不通,是“进门后被拦下了”。

典型场景有两个:

  • IP 白名单太窄:比如 .htaccess 或 Nginx 的 allow 规则只写了 192.168.0.0/16 这类 IPv4 段,Google 的 IPv6 爬虫地址(像 2a00:1450:4001:: 开头的)进来直接 403;
  • location 匹配失效:某些 Nginx 配置里,location /admin 只匹配 IPv4 请求路径,IPv6 请求因为 Host 头或协议判断差异,意外落到 location / 下,结果返回 404。

有个技术博客站长吃过亏:他被一批 IPv6 恶意扫描刷爆带宽,干脆在防火墙里封了整个 2000::/3 段。第二天 Google 收录量掉了一半。后来发现,Googlebot 的官方 IPv6 段也在这个范围里。解封后,改用 Nginx 的 geo 模块+已知爬虫 UA+IP 段白名单组合判断,才真正挡住坏流量,又不误伤好爬虫。

3个方法,快速检测你的网站IPv6是否“生病”

方法1:用curl模拟爬虫

打开终端,执行这一行(把“你的域名”换成真实地址):

curl -6 -I https://你的域名
  • 返回 Connection refusedNo route to host → IPv6 完全不通
  • 返回 200 但耗时明显比 curl -4 高 → 路由或中间设备有问题
  • 直接卡住十几秒 → 很可能是防火墙静默丢包

方法2:检查DNS记录

还是终端,跑这句:

dig AAAA 你的域名
  • 没输出任何 IPv6 地址 → 你没给爬虫留 IPv6 入口
  • 有输出但 ping6 不通 → DNS 记录指向了一个没开 IPv6 的服务器
  • 输出地址和你服务器实际 IPv6 不一致 → DNS 配错了

方法3:翻爬虫日志

在 access.log 或 error.log 里搜 IPv6 格式地址,比如:

grep -E "2[0-9a-fA-F]{3}:" /var/log/nginx/access.log
  • 如果这类请求大量返回 403/404/502 → 应用层拦截了
  • 如果压根没日志 → 请求根本没到 Web 服务,问题在防火墙、负载均衡或 DNS
  • 如果只有少量且状态正常 → IPv6 基本可用,不用急

真实案例:一个论坛因为IPv6配置失误,收录量跌了两个月

这位站长做本地生活论坛七八年了,一直纯 IPv4。2023 年底,他用的云服务器厂商悄悄升级网络栈,默认分配了公网 IPv6 地址。但他没收到通知,Nginx 配置也没动。

结果 Google 和百度的 IPv6 爬虫持续失败。收录量从稳定 3000+ 条,两个月内掉到不足 400 条。他找过三个 SEO 顾问,有人建议改标题,有人让他堆外链,还有人说“算法变了,忍忍”。

最后我帮他 ssh 上去看了眼 Nginx 配置:listen 80; listen 443 ssl; ——干干净净,没有一行 IPv6。加上 [::]:80[::]:443 ssl,重启,再 curl -6 测试通过。第三天,Search Console 里“抓取频率”曲线就开始回升。

他后来发我一句话:“原来不是内容没人看,是我家大门只留了一半缝。”

今天就能做的1个操作:给你的服务器加一条IPv6监听

打开你正在用的 Web 服务器配置文件(Nginx 在 /etc/nginx/sites-enabled/ 下,Apache 在 /etc/apache2/sites-enabled/),找到 listen 行。

比如原来是:

listen 80;
listen 443 ssl;

改成:

listen [::]:80;
listen [::]:443 ssl;
listen 80;
listen 443 ssl;

保存,然后运行:

nginx -t && nginx -s reload

(Apache 用户用 sudo systemctl reload apache2

做完立刻回到终端,执行 curl -6 -I https://你的域名。如果返回 200301,说明成了。

如果还不行,顺手检查下防火墙:Ubuntu 用 sudo ufw status,确认 80443 的 IPv6 规则开着;CentOS 用 sudo ip6tables -L,看看有没有 DROP 规则挡在前面。

这一步不用改代码、不用换服务器、不用等备案,5 分钟搞定。而它带来的,可能是接下来几周里,搜索引擎多给你一次抓取机会,多收录一个页面,多带来一个真实用户。