IP被GFW屏蔽判定流程,区分端口封禁
服务器突然在国内无法访问,很多人第一反应是“IP被GFW屏蔽了”,但直接下结论很容易误判。
正确的做法是先用一套流程确认拦截位置,再区分是端口封禁还是全IP封禁。
下面按零基础可执行的方式,从本机检查、国内外对比、多端口测试三个层面展开,帮你定位问题并留下可验证的结果。
先排除自身问题,别急着怪墙
在怀疑GFW之前,先确认服务本身正常、防火墙没有误拦。
检查服务是否在监听指定端口,以Linux服务器为例:
netstat -tlnp | grep -E ':80|:443|:22'
如果看不到对应端口,说明服务没启动或没监听。
再确认系统防火墙(如firewalld或ufw)是否放行了该端口:
# firewalld
firewall-cmd --list-all
# ufw
ufw status
如果服务正常、防火墙也放行,但国内仍然无法访问,再进行下一步。
用“国内外对比”锁定拦截点
找一台海外VPS或让海外朋友协助测试,分别从国内和国外访问你的服务器IP。
# 在海外机器上测试端口连通性
telnet <你的IP> 22
telnet <你的IP> 80
# 或使用 nc
nc -vz <你的IP> 443
判断逻辑如下:
- 国内不通、海外通:基本可以确定是国内网络出口被拦截,大概率是GFW相关行为。
- 国内外都不通:可能是服务器宕机、机房防火墙、路由黑洞或服务本身问题,需要联系服务商确认。
这一步能快速缩小范围,避免把普通网络故障误判成IP被封。
多端口测试,区分端口封禁还是全IP封禁
确认是国内拦截后,需要进一步判断是单独封了某个端口,还是整个IP都不可达。
在本地或国内机器上,用telnet或nc分别测试常见端口:
telnet <你的IP> 22
telnet <你的IP> 80
telnet <你的IP> 443
nc -vz <你的IP> 3389
结果对照:
- 部分端口能通,部分不通:属于端口封禁。比如22通、80不通,说明IP本身没被全封,只是80端口被拦截。
- 所有TCP端口均超时:基本是全IP封禁,整个IP从国内不可达。
这里要特别提醒:不要用ping结果判断全IP封禁。
GFW可能只封锁ICMP协议,导致ping不通,但TCP 22端口仍然能连接。
更可靠的方式是测试TCP端口。
避坑与复查:这几种情况容易被误判
1. 本地网络或运营商问题
某些地区运营商对部分国际IP段会做临时限制,换一个网络(比如用手机4G/5G)再测一次,避免误报。
2. DNS污染导致访问异常
如果只是域名打不开,而用IP直接访问正常,可能是DNS污染而不是IP封锁。
可以用dig @8.8.8.8 你的域名检查解析结果是否被污染。
3. 黑洞路由或机房防火墙
有些服务商会因攻击或违规流量对IP做黑洞策略,此时从国内外都不可达。
这种要先找服务商确认,再判断是否与GFW有关。
4. 封禁时间与持久性
GFW封锁有时是临时的,可能几小时或几天后自动恢复。
建议持续观察24-48小时,并保留测试记录,方便联系服务商或换IP时作为依据。
如果确认是全IP封禁,常见的处理方式是为服务器更换IP;
如果只是端口封禁,可以尝试替换到其他端口(如从8443替代443),但不保证长期有效。
具体效果需结合你的实际业务和机房线路,最终决定前建议先咨询服务商。
判定IP是否被GFW屏蔽,核心结论可以记住:国内外访问结果对比是第一步,多TCP端口测试是区分端口封禁与全IP封禁的关键,ping结果只能作为参考。
按照上述流程操作一遍,基本能得出明确答案,避免盲目换IP或反复折腾。