站群与多 IP

站群 IP 被墙检测:国内无法访问的 IP 如何测试、排查与快速更换

7 个步骤 6 分钟阅读 17 次阅读 0
本文目录

一个国内无法访问的站群 IP,会让上面所有站点对国内访客和搜索引擎“隐身”,即使从海外访问一切正常。IP 在国内无法访问,可能是因为前任使用者留下的历史记录、整个 IP 段被过滤、单个端口或域名被封,或者运营商线路问题。本文介绍如何从国内多个地区测试连通性、区分这几种情况、批量检测整个 IP 段,以及把站点快速迁出有问题的 IP。

在国外测试无法判断 IP 在国内是否可用。请务必从国内节点测试:使用在线多节点测试服务,或者一台位于中国大陆的小型服务器或电脑。

步骤 1:从国内多个地区测试

在线多地测试服务(例如 ITDOG、17CE、Boce 或 Chinaz 站长工具)可以从电信、联通、移动三网的数十个节点发起 ping、TCP 端口和 HTTP 测试。每遇到一个问题,做以下三项测试:

  • ping IP:检测基本连通性。
  • 对 IP 的 80 和 443 端口做 TCP 测试:检测 Web 服务能否访问。
  • 对域名做 HTTP 测试:检测网站本身能否打开。

步骤 2:根据结果判断原因

你看到的现象可能原因
国内节点 ping 和 TCP 全部失败,海外节点正常IP 在中国大陆无法访问(被墙)
能 ping 通,但 TCP 80/443 超时或被重置该 IP 的特定端口被封锁,或服务器自身防火墙有问题
IP 和端口都正常,但域名打不开或解析到无关 IP问题出在域名(DNS 污染或按域名过滤),而不是 IP
只有某一家运营商失败(例如移动)该运营商或通往该运营商的线路存在路由问题
白天正常,晚上丢包严重国际线路晚高峰拥堵,并非被墙

步骤 3:检查域名是否存在 DNS 问题

对比公共 DNS 和国内 DNS 的解析结果,并多查询几次:如果国内 DNS 返回的地址与你的服务器毫无关系,说明是域名本身受到了影响(DNS 污染),把站点换到其他 IP 也无济于事。

dig +short example.com A @1.1.1.1
dig +short example.com A @114.114.114.114
dig +short example.com A @223.5.5.5

步骤 4:批量检测整个 IP 段

要一次性检测 /24 中的每个 IP,可以在一台位于中国大陆的机器上运行一个小脚本(一台低价云服务器或一台办公电脑即可)。脚本会测试每个 IP 的 TCP 80 和 443 端口,并列出失败的 IP。

# ips.txt: one IP per line (generate with: for i in $(seq 2 254); do echo 203.0.113.$i; done > ips.txt)
cat > check-ips.sh <<'EOF2'
#!/bin/bash
while read -r ip; do
  r80=$(timeout 4 bash -c "</dev/tcp/$ip/80" 2>/dev/null && echo ok || echo FAIL)
  r443=$(timeout 4 bash -c "</dev/tcp/$ip/443" 2>/dev/null && echo ok || echo FAIL)
  echo "$ip 80:$r80 443:$r443"
done < ips.txt | tee result-$(date +%F).txt | grep FAIL
EOF2
chmod +x check-ips.sh && ./check-ips.sh

IP 只有在端口上有服务监听时才会响应,所以请只对已经绑定了站点(或至少有 Nginx 默认站点)的 IP 运行此脚本。再把结果与在国外服务器上做的同样测试进行对比,就能把真正的连通性问题与只是没有运行服务的 IP 区分开来。

步骤 5:为机房收集证据

线路问题通常可以由机房修复。请收集以下信息:

# From the server towards major Chinese resolvers (apt install mtr-tiny / dnf install mtr)
mtr -rwc 50 114.114.114.114
mtr -rwc 50 223.5.5.5

# From the machine in China towards your server
mtr -rwc 50 203.0.113.10

保存多地测试结果的截图,并注明测试时间。线路分析方法参见回国回程路由测试和使用 ping、tcping 和 mtr 排查网络连通性。

步骤 6:把站点迁出问题 IP

  1. 从你的 IP 段中挑选一个通过步骤 4 测试的备用 IP。
  2. 在对照表和 Nginx 配置中修改该站点的 IP(如果使用的是站群服务器批量建站中的方案,修改 sites.txt 并运行部署脚本即可),然后重载 Nginx。
  3. 更新域名的 A 记录。如果预计会经常迁移站点,请提前把 TTL 调低到 300 秒。
  4. 从国内多个地区重新测试新 IP 和域名。

提前准备一份已测试、未使用的 IP 清单,就能在几分钟内完成迁移;旧 IP 过一段时间后重新测试,通过后再复用。同时请检查站点内容:如果内容在中国不被允许,换到任何 IP 上都会再次受到影响。

步骤 7:持续监控

在国内的机器上用 cron 每天运行步骤 4 的批量检测,并把失败列表发给自己;或者在该机器上运行 Uptime Kuma 监控重点站点(参见使用 Uptime Kuma 监控)。把站点分散到多个 /24 段,可以在某个 IP 段出问题时限制影响范围(参见多 C 段站群服务器)。

常见问题

IP 在国外能访问,国内却打不开,是服务器宕机了吗?

不是。服务器在正常运行,只是从国内到服务器的路径不通。按照步骤 1 到步骤 5 排查,判断问题出在 IP、端口、域名还是运营商线路。

部署站点前需要先测试新 IP 吗?

需要。每个新 IP 在放站点之前,都应先从国内多个地区测试,只把通过测试的 IP 加入部署列表。

IP 在国内无法访问,IMIDC 能帮忙处理吗?

请提交工单,附上多个地区的测试结果和步骤 5 中的 mtr 输出。我们会检查你所用 IP 段的路由情况,并与你沟通可行的方案。

如果按以上步骤操作后问题仍未解决,请提交工单联系 IMIDC 7×24 技术支持,并附上服务器 IP、受影响的 IP 和域名、多地测试截图以及 mtr 结果,方便工程师快速定位。

这篇文章有帮助吗?

相关教程