VPS 的 IP 被封锁/端口连不上怎么办?TCP Ping 排查与 Cloudflare CDN 救活指南

IP 被封锁还是端口被封,还是机器自己挂了?教你用 TCP Ping 精准排查,搞懂 RackNerd/ColoCrossing 的换 IP 政策,并用 Cloudflare 橙色云把被封锁的网站救回来。

说句大实话,几乎每个玩 VPS 的人,迟早都会撞上这么一回事:昨天还好好的,今天一早起来,网站打不开了,SSH 也连不上,ping 一下全是超时……心里咯噔一下,第一反应往往是"我的 IP 被封锁了?"

别慌,先别急着下结论。因为"连不上"这事儿,其实分好几种完全不同的原因:可能是 IP 真的被封锁了,可能是某个端口被封了,也可能只是这台机器自己宕机了,甚至还可能是你家宽带这会儿抽风。原因不同,解决办法天差地别——把"宕机"当成"被封锁"去换 IP,白花冤枉钱;把"端口被封"当成"IP 被封锁"去折腾 Cloudflare,也是白忙活。

这篇就用大白话,一步步带你把问题查清楚,再把能用的救法都给你讲明白。

一、先别急着换 IP:搞清楚到底是哪种"连不上"

很多人排查问题的第一招就是 ping,看到超时就断定"被封锁了"。其实这个判断一点都不准,因为 ping 用的是 ICMP 协议,而现在很多服务器、防火墙、甚至网络环境都会故意禁掉 ICMP 响应。也就是说:ping 不通,不等于机器挂了,更不等于被封锁了。

真正能说明问题的,是"TCP 层面的连通性"——也就是你的端口(比如 22、80、443)到底通不通。这俩的区别,打个比方:ICMP ping 像是在喊"有人吗",对方可能只是不想搭理你(禁 ping);而 TCP 连端口,相当于你真的去敲门、拧门把手,门开没开一试便知。

所以正确的排查姿势是:ICMP 先测个大概,TCP 再下定论。

1. ICMP Ping:只能当个"初步参考"

# 在你本地电脑上测(Linux / macOS 终端,Windows 用 cmd)
ping -c 5 你的VPS的IP
  • 能通:说明网络层至少基本可达,但不代表你的网站/SSH 端口就可用(ICMP 通 ≠ 端口通)。
  • 不通:可能是被封锁、可能是禁 ping、也可能是机器真挂了。光看这一条,啥也定不了。

2. TCP Ping:这才是关键证据

ping 测的是 ICMP,而我们访问网站、连 SSH,走的是 TCP。所以得用专门测端口的工具。下面几个命令挑着用,原理都一样:尝试和目标 IP 的某个端口建立 TCP 连接。

# 方法一:nc(网络瑞士军刀,最推荐,几乎都有)
nc -zv -w 3 你的VPS的IP 443
nc -zv -w 3 你的VPS的IP 22

# 方法二:nmap,结果最直观(open / filtered / closed)
nmap -Pn -p 22,80,443 你的VPS的IP

# 方法三:curl 直接打 IP 的 Web 端口
curl -I --connect-timeout 5 http://你的VPS的IP:80
curl -Iv --connect-timeout 5 https://你的VPS的IP:443

# 方法四:tcping(专门模仿 ping 测 TCP,需安装:apt install tcping)
tcping 你的VPS的IP 443

结果怎么看:

  • 连上了(nc 显示 succeeded、nmap 显示 open、curl 能返回 HTTP 头):说明这个端口是活的,机器没挂。
  • 显示 Connection refused:端口没服务监听,但机器本身可达——大概率是服务挂了或配置错了,不是被封锁。
  • 一直卡住然后超时(nmap 显示 filtered):这才是典型的"被拦截/被封锁"信号——你的包在半路被掐了。

3. 路由追踪:看看断在哪一跳

如果 TCP 也不通,用 mtrtraceroute 看看数据包走到哪一步断的:

# Linux / macOS
mtr -r -c 10 你的VPS的IP
traceroute 你的VPS的IP

# Windows 用 tracert
tracert 你的VPS的IP

观察重点:如果数据包跳到国际出口(比如国内骨干网那一跳)之后,后面全是 * * *,基本就是流量在"出国关口"被拦了——这强烈暗示是 网络防火墙 层面的拦截,而不是机器自己宕机。

4. 一锤定音:全球多点验证

最稳的判据,是用海外的视角再看一眼。推荐两个在线工具:

  • ping.pe:输入 IP,看全球各地的 ICMP 结果。
  • port.ping.pe:输入 IP:端口,看全球各地的 TCP 结果。

判读口诀:如果中国节点的检测全是红的 Failed,而美国、欧洲节点全是绿的 Success,那就坐实了——你的 IP 在国内被封锁了。 反过来,如果海外节点也连不上,那多半是机器自身宕机或商家网络出问题,跟"网络封锁"没关系。

二、三种情况,一张表对号入座

把你上面测的结果凑一起,就能分清这三类情况:

| 现象 | 国内 ping | 海外 ping | 国内 TCP 端口 | 海外 TCP 端口 | 结论 | 该咋办 | |------|-----------|-----------|--------------|--------------|------|--------| | 机器宕机 | 不通 | 也不通 | 不通 | 也不通 | VPS 自己挂了 | 进商家后台看状态/控制台/重启 | | 仅禁 ICMP | 不通 | 通 | 通 | 通 | 只是禁了 ping | 不用管,正常用 | | 端口被封 | 通 | 通 | 不通 | 通 | 特定端口被封 | 改端口 / 走 CDN | | IP 被封锁 | 不通 | 通 | 不通 | 通 | 网络防火墙 拦截 | 换 IP 或 Cloudflare 救 Web |

记住最核心的一条:国内不通、海外通 = 被封锁;国内外都不通 = 机器/网络问题。 别再把"机器挂了"误判成"被封锁"去乱花钱了。

三、机器真挂了 / 端口被封 / IP 被封锁,分别怎么处理

  • 机器宕机:先去商家控制面板看实例状态,很多面板带"Console / VNC"能直接进后台;能重启就重启,看是不是 OOM、磁盘写满、或者配置改崩了。这种跟"网络封锁"无关,折腾 Cloudflare 没用。
  • 端口被封(机器和 IP 都活着,只是某个端口连不上):常见于 22 端口被针对性封、或某些敏感端口被运营商掐。解决办法是"换端口",下面第六节细讲。
  • IP 被封锁(TCP 全端口都不通,但海外正常):这是最麻烦的,两个路子——要么找商家换 IP,要么用 Cloudflare 把 Web 流量"绕"过去(SSH 另说)。

四、换 IP:主流便宜商家都是什么政策

确认 IP 被封锁之后,最直接的办法就是换个 IP。以咱们站里常推荐的几家为例,说说真实政策(具体以你下单时的条款为准,这里给个大致参考):

RackNerd(以及它大量使用的 ColoCrossing 机房):

  • 后台自带 "Change IP" 自助换 IP 功能,不用发工单。
  • 购买后 72 小时(3 天)内第一次换 IP 免费;超过 72 小时,每次收费 3 美元,支付后自动换。
  • 注意:换 IP 是"替换"原来的 IP,不是"额外加一个 IP"。换完你的机器还是只有一个 IPv4,只是地址变了。
  • 每台机器一般只给一次免费换 IP 机会,用掉就没了。

ColoCrossing / 其他 ColoCrossing 机房的二道贩子:

  • 作为底层机房,政策跟 RackNerd 基本一致(很多低价 VPS 本来就跑在 CC 机房里)。
  • 部分小商家可能不提供免费换 IP,或只在某些促销活动里送一次,下单前最好看一眼商品页说明。

几个提醒:

  • 换 IP 之前,先在本地用上面教的 TCP ping 测一下"新 IP 干净不干净"。有的新 IP 本身就被封锁过或进过黑名单,换了个寂寞。RackNerd 后台换 IP 后通常会开个工单告诉你新 IP,拿到先测再切 DNS。
  • 换完 IP 记得同步改域名 DNS 的 A 记录,把 TTL 先调小到 300 秒左右,生效快、好回滚。
  • 如果你只是 Web 服务被封锁、又不想花钱换 IP,那一节讲的 Cloudflare 方案能零成本救回来——Web 不用换 IP 也能访问。

五、"死鸡复活":用 Cloudflare 橙色云把被封锁的网站救回来

这是整篇最实用的黑科技,也是很多老手"被封锁不慌"的底气所在。

原理(说白了就一句话)

正常情况下,用户是直接连你的 VPS IP 的;IP 一被封锁,用户就摸不着门了。Cloudflare 的"橙色云"(Orange Cloud / Proxied)相当于在用户和你之间插了个反向代理

用户  ⇄  Cloudflare 边缘节点(一堆正常网站的 IP)  ⇄  你的 VPS(源站)

用户访问的是 Cloudflare 的 IP,根本不知道你的真实 IP 是多少。而 Cloudflare 那些 IP 背后挂着海量正常网站,网络防火墙 不可能为了封你一个人,把整个 Cloudflare 的 IP 段都网络封锁了(那得误伤多少大站)。于是,哪怕你的源站 IP 已经被封锁,只要 Web 流量走 Cloudflare,国内用户照样能打开你的网站

操作步骤

  1. 注册个免费 Cloudflare 账号,添加你的域名。Cloudflare 会扫一遍你现有的 DNS 记录,确认一下。
  2. 按提示,去你的域名注册商那里,把域名的 Nameserver 改成 Cloudflare 给的那两个。生效一般几分钟到一天。
  3. 在 DNS 面板里,把你网站用的 A 记录(指向你 VPS 真实 IP 的那条)右边的云朵点成橙色(Proxied)。根域名 @www 都点上。
  4. SSL/TLS → Overview,加密模式选 Full (Strict),并且你 VPS 上装好 Let's Encrypt 证书。这样用户到 Cloudflare、Cloudflare 到源站,全程都是 HTTPS,安全又不会被拦。
  5. 最关键的一步——锁源站防火墙。否则别人从 DNS 历史里翻出你的真实 IP,照样能绕过 Cloudflare 直接打你。只允许 Cloudflare 的 IP 访问 80/443:
# 用 ufw 放行 Cloudflare 的 IPv4 段到 80/443
for net in $(curl -s https://www.cloudflare.com/ips-v4); do
  ufw allow proto tcp from $net to any port 80,443 comment 'Cloudflare'
done
ufw reload

# 验证:从你本地电脑直接打真实 IP,应该超时(说明源站不再对外裸奔)
curl -m 5 http://你的真实VPS的IP/
  1. 验证成功:浏览器开你网站,看响应头里有 server: cloudflarecf-ray 就说明走通了。

两个必须知道的局限

  • Cloudflare 只代理 HTTP/HTTPS(Web 流量)。 它支持的端口有限,主要是 80、443,外加 8080、8880、2052、2053、2082、2083、2086、2087、2096、8443 这些。SSH(22)、邮件(25/465)、FTP、游戏服这些走不了 Cloudflare。所以这套方案救的是"网站/API",救不了 SSH 直连——SSH 被封锁还得靠换 IP 或隧道。
  • 它不"解封"你的 IP,只是"绕开"封锁。 你的真实 IP 依然在被封锁状态,只是用户访问时碰不到它了。所以别在源站上直接发邮件(邮件头会暴露真实 IP),也别把 MX 记录也橙云了(邮件不能代理)。

六、端口被封怎么办:改 SSH 端口 + 端口漫游

如果你的 IP 没被封锁,只是某个具体端口(最常见是 22)连不上,那是端口层的事,换 IP 就小题大做了。思路是:换个端口,绕开针对这个端口的封锁。

修改 SSH 端口

# 编辑 sshd 配置,把默认的 22 改成一个高位端口,比如 2222
sudo sed -i 's/^#Port 22/Port 2222/' /etc/ssh/sshd_config

# 确认一下改对了
grep -i '^Port' /etc/ssh/sshd_config

# 防火墙放行新端口(用 ufw 的例子)
ufw allow 2222/tcp

# 重启 sshd 生效(注意:保持当前会话别断,另开窗口验证新端口能登再关旧窗口)
sudo systemctl restart sshd

重要安全提醒:改端口前,一定先开一个新终端窗口测试新端口能登上,确认无误再关旧连接。不然改完重启、旧窗口一断,新端口又没配上,你就被自己锁在门外了。另外,端口别乱选,避开 0~1024 的特权端口,用 1024~65535 之间的高位端口更稳妥。

"端口漫游"的思路

说白了就是:发现某个端口被封,就换一个;被封锁的方向如果是针对特定端口的 TCP Reset,换端口常常立竿见影。配合上面的 Cloudflare,Web 走 443 经 CDN 隐藏真实 IP,SSH 走高位端口,基本能覆盖绝大多数"连不上"的场景。

但要认清现实:如果是整个 IP 的 TCP 全端口阻断(海内外 TCP 都不通,只有海外通),那改端口没用——因为封的是 IP 而非单个端口。这时候 Web 用 Cloudflare 救,SSH 就得换 IP 或用 Cloudflare Tunnel / 中转机了。

七、结论与避坑清单

把上面浓缩成一份"连不上"时的操作清单,照着做基本不会乱花钱:

  1. ping 测个大概,但别拿它下结论
  2. nc / nmap / curl 做 TCP ping,看端口到底通不通。
  3. mtr / traceroute 看断在哪一跳。
  4. ping.pe / port.ping.pe 做全球多点验证:国内红、海外绿 = 被封锁;都红 = 机器挂了
  5. 机器挂了 → 进商家后台重启/看 Console;端口被封 → 改 SSH 端口/端口漫游;IP 被封锁 → 换 IP(RackNerd 72h 内免费、之后 3 刀)或用 Cloudflare 橙色云救 Web。
  6. Cloudflare 只救 Web,记得锁源站防火墙只放 Cloudflare IP,别让它裸奔。
  7. SSH 被封锁别指望 Cloudflare,乖乖换 IP 或走隧道。

说到底,VPS 被封锁不是世界末日。先查清楚原因,再对症下药——能改端口解决的别换 IP,能用 Cloudflare 白嫖救回来的别花钱,实在不行再换。把这几点记熟,下次再遇到"连不上",你就能淡定地一步步排雷了。

延伸阅读

更多相关攻略推荐:【10刀以内VPS系列 01】年付不到70块钱的便宜VPS,到底能用连云厂商也看不到你的数据?机密计算(Confidential Com被割裂的"云上互联网":数据主权(GDPR)、本地化存储与主权云(S为什么你自己 VPS 发的邮件总进垃圾箱?邮件协议(SPF、DKIM百兆带宽如何流畅看 4K?视频切片(HLS/DASH)、AVIF 压