关于云服务器禁ping后依旧能ping通

lin 1245 字 58 次阅读


情景回顾:

当时在部署,对方发现ping不通我们的云服务器,我试了试,自己的工作电脑可以ping通,甚至延迟小于1ms,随后又使用自己的个人电脑--也可以ping通。
疑惑中
随后又尝试让在外地的朋友试一试,他也不能ping通。纳尼?这是什么情况,就我自己能通?
随后上云服务器看,似乎云服务器设置了禁止ping,?,更疑惑了,既然设置了禁止ping,那么我为什么能ping通,也没有额外设置我这个ip可以ping啊

排查过程:

  • 1.检测环境差异,分别在自己,别人的设备试试能否ping通,结果发现只有我能ping通
  • 2.检查云服务器,发现启用了禁ping的安全策略。但是为什么禁ping了但是我却能ping通,明明没有额外设置我这个ip可以ping
  • 3.百思不得其解,突然想到是不是网络环境的问题呢,随后发现我不管是工作电脑还是个人电脑都开启了代理,而别人都没有开。将代理关闭后发现我也不能ping通了

破案了,原因竟然是我开了代理导致的;但是为什么开启代理后就可以ping通禁ping的云服务器?

原理

经过一番查阅资料,找到了答案:

直接ping的情况

你的电脑 --[ICMP Echo Request]--> 云服务器
云服务器 --[ICMP Echo Reply]--> 你的电脑
  • 协议:直接使用ICMP协议(网络层)
  • 端口:无端口概念,工作在IP层
  • 路径:直接路由到目标服务器
  • 被拦截点:服务器入口的防火墙/安全组直接丢弃ICMP包

通过代理"ping"的情况

这其实不是真正的ping,而是:

你的电脑 --[TCP数据包]--> 代理服务器 --[TCP数据包]--> 云服务器

代理服务器在中间做了一个"翻译"工作。

以最常见的SOCKS5代理为例:

步骤1:你的电脑发起"伪ping"请求

// 实际上发生的是:
客户端程序 -> 代理客户端
"192.168.1.1是否在线"
// 但这不是发ICMP,而是:
"通过代理连接到192.168.1.1的某个TCP端口"

步骤2:代理服务器的工作

你的电脑代理服务器云服务器
1. 建立到代理的TCP连接2. 解析客户端请求3. 建立到目标的TCP连接
4. 发送"检测"请求数据5. 转发数据到目标服务器6. 接收TCP连接请求
7. 收到"成功"响应8. 返回连接结果9. TCP握手成功(或失败)

应用层探测

实际应该是:

# 看起来你在ping:
proxychains ping 1.2.3.4

# 实际上工具在背后做的是:
1. 通过代理尝试连接1.2.3.4:80 (HTTP)
2. 或通过代理尝试连接1.2.3.4:443 (HTTPS)
3. 根据TCP连接是否成功判断"主机是否可达"
4. 然后模拟ping的格式输出结果

路由路径不同

直接ping的路径:
你的IP → 互联网路由 → 云服务器IP
          ↑
      防火墙在这里丢弃ICMP

通过代理的路径:
你的IP → 代理服务器IP → 云服务器IP
          ↑ ↑
        可能允许 防火墙看源IP是代理IP
        代理IP访问 且是TCP协议,所以放行

所以这不是真正的"ping通"

  • 真正的ping通:表示网络层连通性+服务器响应ICMP
  • 代理方式"通":只表示某个TCP端口可达

可能会发生的情况

# 情况1:服务器宕机,但负载均衡器存活
代理"ping"可能显示成功,因为负载均衡器响应了TCP握手

# 情况2:特定端口被屏蔽
代理连80端口成功 → 你以为"服务器在线"
实际服务器已宕机,但Web应用防火墙响应了TCP SYN

# 情况3:ICMP被禁但业务端口开放
这实际上是正常的生产环境配置,不影响业务

如何真正测试连通性

# 1. 用不同协议测试多个端口
nc -zv your-server-ip 22 80 443 3389

# 2. 使用traceroute看路径
traceroute your-server-ip

# 3. 从不同网络位置测试
# 使用在线工具从多个ISP测试

# 4. 测试UDP协议(如果适用)
nc -uzv your-server-ip 53

总结

  1. 代理后的"ping"不是真正的ICMP ping,而是TCP连接测试
  2. 改变了协议:从ICMP(网络层)变为TCP(传输层)
  3. 利用了已开放的端口:通过HTTP/HTTPS/SOCKS等已开放的端口进行探测
  4. 这是一种间接的连通性测试,不能完全替代真正的网络层测试

这就是为什么服务器明明"禁ping"了,但通过代理却感觉能"ping通"的原因。实际上,测试的是完全不同的东西。

天下繁华,唯有一心
最后更新于 2026-01-29