centos7服务器发现curl一个ip通,ping同一ip却不通?

为什么会出现这个问题?

ping不通(ping了百度其中一个ip)

$ ping 220.181.57.216
PING 220.181.57.216 (220.181.57.216) 56(84) bytes of data.
--- 220.181.57.216 ping statistics ---
80 packets transmitted, 0 received, 100% packet loss, time 78998ms

但是curl可以通


$ curl 220.181.57.216
<html>
<meta http-equiv="refresh" content="0;url=http://www.baidu.com/">
</html>

请问为什么?可以肯定这个ip是可以ping的,我自己的电脑就能ping通,试了几个IP,都是同一个情况

阅读 21.4k
2 个回答

ping通需要路由的每个节点都支持ICMP协议转发, 你的情况很可能是服务器防火墙把ICMP协议禁掉了.

你可以分别在你的机器上和服务器上互相用`traceroute IP`(windows上用tracert)试试, 看看是哪一跳过不去

其实pingcurl没有任何联系,大多数排查网络故障往往是从ping开始,于是很多新手都被误导了,认为能ping通服务就一定是通的,或者反过来也是一样的。

其实这是错误的认识,ping默认使用的协议是ICMP,你会发现不是tcp/udp socket。所以服务器或防火墙可以通过拒绝ICMP协议来实现拒绝ping。所以不能ping通不代表你的socket不能访问,这俩没有直接联系,压根不是一个协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进