你说“VPS 被墙了”,我建议你先把情绪放一放。
因为我见过太多“以为被墙”,最后发现是:
- 服务器挂了/CPU 打满
- 防火墙把端口关了
- 某条路由晚高峰丢包
- 只有你这条网络(或某个地区)访问不通
这篇按实战流程写:先确认是不是“封/屏蔽/链路问题”,再给出“现实可行”的处理方式。
说明:本文讨论的是网络连通性故障与运营商/链路阻断的排查与处置,不涉及绕过法律/监管限制的做法。
Debian/Ubuntu:
sudo apt-get update && sudo apt-get install -y mtr traceroute netcat-openbsd
CentOS/Rocky/Alma:
sudo yum install -y mtr traceroute nc
macOS(本机排查用):
brew install mtr
你至少要从两条不同网络测同一台 VPS:
- 你的家宽
- 手机热点
- 朋友/同事的网络
- 或者国外在线探测点
如果所有网络都不通:优先怀疑 服务器侧故障。
如果只有某一类网络不通:才进入“可能被拦/被封/路由问题”的分支。
如果你还能登录 VPS(比如控制台登录),先跑:
curl -4 -s https://api.ipify.org && echo
ping -c 3 1.1.1.1
如果 VPS 自己都出不了网,那你外面当然访问不了。
uptime
free -h
df -hT
- CPU 负载爆:SSH/网页都像网络卡
- 内存爆:开始 swap/OOM,服务间歇性挂
- 磁盘满:日志写不进去,服务各种异常
你可以先测 IP 层是否通:
ping -c 10 <VPS_IP>
然后测端口(以 SSH/HTTP/HTTPS 为例):
# macOS/Linux
nc -vz <VPS_IP> 22
nc -vz <VPS_IP> 80
nc -vz <VPS_IP> 443
常见结论:
- ping 通,但 22 不通:可能是端口被挡、或者你 VPS 防火墙没放行
- ping 不通,但 22 偶尔能通:可能是 ICMP 被限速/屏蔽(别只看 ping)
如果你主要问题是 SSH 登录不上,直接按这篇排查会更快:
很多所谓“被封”,其实是 晚高峰链路拥塞。
用 mtr 一眼就能看出趋势:
sudo mtr -rwzc 200 <VPS_IP>
怎么看:
- 某一跳开始丢包,后面每一跳都丢:那段链路更可疑
- 中间某一跳丢包很高,但后面不丢:可能只是那台路由器限 ICMP
完整定位路线看这里:
你别只说“我觉得被墙”。把下面几份输出存下来,工单效率会高很多。
# 本机对 VPS 的 mtr(从不同网络各跑一份)
sudo mtr -rwzc 200 <VPS_IP> > mtr_local.txt
# VPS 对外的路由/网卡信息
ip a > ip_a.txt
ip r > ip_r.txt
# 端口监听(确认服务是否真的在跑)
ss -lntp > ss_lntp.txt
这里给的是“最常用、最现实”的做法,按优先级排:
- 你确认服务本身没问题
- 但某些网络/地区访问不通
换 IP 往往是最快的。
如果你发现问题集中在晚高峰、某条国际链路,那换节点往往比调参更有效。
如果你是网站/静态资源,CDN 往往是最划算的稳定性提升。
如果你的业务允许,你可以准备一个备用 IP 或备用入口。
我给一个很实用的判断标准:
- 你能复现“只有某个网络/地区不通”,且 VPS 自己健康、其他网络正常
- mtr 显示路径异常或某段持续丢包
这时你再去和商家沟通,把 mtr_local.txt 贴过去,效率会高很多。
