如果你运营着一个托管在海外的网站,或者你经常访问某些境外网站,可能会遇到突然无法访问的情况。这时候首先要判断的是:到底是服务器出了问题,还是网站被 GFW(防火长城)屏蔽了?本文将教你如何通过多种在线工具系统性地排查和判断。
一、"被墙"有哪几种形式?
网站被屏蔽并不只有一种形式。根据屏蔽手段的不同,主要分为以下几种:
IP 封锁:直接封禁服务器的 IP 地址。所有经过国际出口的、目标为该 IP 的流量都会被丢弃。这是最彻底的封锁方式,无论你用域名还是 IP 直连,无论是 HTTP 还是 SSH,都无法访问。
DNS 污染:当你在国内查询某个被屏蔽域名的 DNS 记录时,会收到一个错误的解析结果(通常是一个不存在的或者错误的 IP 地址)。域名指向了错误的地方,自然就无法正常访问了。但如果你能通过其他方式获取到正确的 IP,用 IP 直连可能还是通的。
SNI 阻断(HTTPS 关键词过滤):在 TLS 握手阶段,客户端会通过 SNI(Server Name Indication)字段明文发送要访问的域名。防火墙可以检测到这个字段,如果匹配到黑名单域名,就会发送 RST 包中断连接。这种方式下,IP 可能是通的,DNS 解析可能也是对的,但 HTTPS 连接就是建立不起来。
HTTP 关键词过滤:对于未加密的 HTTP 流量,防火墙可以检查 URL 和内容中的关键词,匹配到敏感内容就中断连接。不过随着 HTTPS 的普及,这种方式已经不太常见了。
二、排查第一步:确认服务器本身是否正常
在怀疑被墙之前,首先要排除服务器本身宕机的可能性。如果你有 SSH 访问权限,试试能不能登录服务器。如果没有,可以通过以下方式初步判断。
使用 Biuping 在线 Ping 工具,输入你服务器的 IP,观察测试结果。注意重点看海外节点的数据:
如果国内节点全部超时,但海外节点(如香港、东京、新加坡)能正常 Ping 通,那大概率是 IP 被墙了。
如果国内和海外节点都超时,可能是服务器本身宕机了,或者服务器禁 Ping。这时需要进一步用 TCPing 来确认。
如果所有节点都能通,那服务器网络层面没有问题,需要往 DNS 或应用层排查。
三、排查第二步:用 TCPing 排除禁 Ping 干扰
很多服务器默认禁止 ICMP,这时 Ping 不通不等于被墙。打开 Biuping TCPing 工具,输入服务器 IP 和常用端口(如 80、443、22)进行测试。
情况一:海外节点 TCPing 正常,国内节点全部超时。说明 IP 大概率被封锁了。数据包能从海外正常到达服务器,但从国内出发的数据包在国际出口被拦截了。
情况二:国内部分节点 TCPing 正常,部分超时。这可能是临时性的网络波动或者部分地区的路由问题,不一定是被墙。建议过几个小时再测一次。
情况三:所有节点 TCPing 某个端口都超时,但换个端口就通了。比如 443 端口不通但 22 端口通了,可能是该端口被针对性封禁了(端口封锁),或者服务器上对应的服务没有启动。
情况四:国内外所有节点、所有端口都超时。服务器大概率宕机了,跟被墙无关。联系你的服务器提供商排查吧。
四、排查第三步:检测 DNS 是否被污染
如果通过 IP 直连测试发现网络是通的(比如 TCPing IP:443 正常),但用域名访问就打不开,那问题很可能出在 DNS。
打开 Biuping DNS 查询工具,输入你的域名,查询 A 记录。重点观察:
国内 DNS 和海外 DNS 的解析结果是否一致:如果你的域名在海外解析到正确的 IP(比如 1.2.3.4),但在国内解析到一个完全不同的 IP(比如某个不存在的地址),那就是 DNS 被污染了。
常见的污染特征:被污染的域名在国内查询时,往往会返回一些固定的"脏 IP"。这些 IP 通常无法访问,或者指向一个不相关的服务器。如果你看到国内多个 DNS 服务器都返回了同一个异常 IP,基本可以确认是 DNS 污染。
验证方法:你可以在本地电脑上手动指定使用海外 DNS 服务器(如 8.8.8.8)来解析域名,如果能得到正确的 IP,进一步验证了是国内 DNS 被污染了。
五、排查第四步:用路由追踪定位封锁位置
如果你已经确定是 IP 被封锁,还想知道数据包具体是在哪里被拦截的,可以使用路由追踪工具。
打开 Biuping 路由追踪工具,从国内节点向目标 IP 发起追踪。观察路由路径:
正常情况下,你能看到数据包从本地出发,经过城域网、省级骨干网、国际出口、海外中转,最终到达目标服务器,每一跳都有延迟数据。
但如果 IP 被封锁,你会看到数据包到达国际出口附近(通常在出国的那一跳)后,后续所有跳都显示超时(* * *)。这说明数据包在出国这个环节被丢弃了。
如果路由追踪显示数据包成功到达了海外,但在最后几跳超时,更可能是目标服务器或其所在网络的问题,而非被墙。
六、各种情况的判断汇总
| 现象 | 判断结果 | 解决思路 |
|---|---|---|
| 国内 Ping/TCPing 全部超时,海外正常 | IP 被封锁 | 更换 IP |
| IP 直连正常,域名访问不了,国内外 DNS 结果不一致 | DNS 被污染 | 使用 CDN 或更换域名 |
| IP 和 DNS 都正常,HTTPS 连接被重置 | SNI 阻断 | 使用支持 ECH 的 CDN 或更换域名 |
| 国内外都不通 | 服务器宕机 | 联系服务商 |
| 部分地区不通,部分通 | 线路问题或临时波动 | 等待或更换线路 |
七、被墙后怎么办?
IP 被封锁:最直接的办法是更换服务器 IP。大多数 VPS 提供商支持更换 IP(可能需要付费)。更换后记得更新 DNS 记录,并避免在新 IP 上做同样的操作。
DNS 被污染:可以考虑接入国内的 CDN 服务(如 Cloudflare 的中国网络或国内 CDN),让域名在国内解析到 CDN 节点的 IP,绕过 DNS 污染。也可以启用 DoH(DNS over HTTPS)或 DoT(DNS over TLS),但这对普通用户来说门槛较高。
SNI 阻断:相对较难解决。可以尝试使用支持 ECH(Encrypted Client Hello)的 CDN 服务,它能加密 SNI 字段,让防火墙无法检测到域名信息。
八、注意事项
不要频繁测试同一个被封 IP:过于频繁的探测请求本身可能引起注意。确认被封后就该着手解决,而不是反复测试。
注意区分"封锁"和"故障":国际线路有时会出现临时性的路由故障或丢包,表现可能与被墙类似。建议间隔一段时间多测几次再下结论。如果连续 24 小时以上从国内任何节点都无法访问,而海外一直正常,那基本可以确认是被封了。
测试时多用几种工具交叉验证:在 Biuping 平台上,你可以依次使用 Ping、TCPing、DNS 查询、路由追踪 这四个工具,形成一个完整的排查链路,综合判断才能得出准确的结论。