![为什么有些Web服务器不响应icmp请求?](https://linux22.com/image/508158/%E4%B8%BA%E4%BB%80%E4%B9%88%E6%9C%89%E4%BA%9BWeb%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8D%E5%93%8D%E5%BA%94icmp%E8%AF%B7%E6%B1%82%EF%BC%9F.png)
在公共 Web 服务器上阻止/丢弃入站 ICMP 流量的目的是什么?阻止它很常见吗?
我必须测试服务器是否可以从不同位置访问(在位于不同州/国家/地区的各种服务器上进行测试)。我依靠 ping 作为一种快速可靠的方法来确定服务器是否在线/网络可访问。在几个盒子上没有收到响应后,我尝试使用 lynx 加载网站,结果成功了。
答案1
如今,放弃 ICMP 相当普遍,因为它是用于拒绝服务目的的通用方法。带宽较高的主机或多台主机反复 ping 单个 Web 服务器可能会占用其所有带宽。
其他国家可能会放弃以减少其在互联网上的足迹,从而有可能被大量扫描流量所忽视。
虽然它很常见,但我认为它没有什么价值,并且在限制诊断潜力的同时,对最小化 DoS 和占用空间没有多大作用。
答案2
除了可疑的 DoS 保护和降低的配置文件之外,还有一个常见但被忽视的原因是给定的 IP 可能不响应 ping:它实际上没有分配给接口。
将 IP/协议/端口三元组重定向(端口转发)到您想要的各种服务,可以在较小的网络上为您提供更高的服务密度。
例如,假设您的 ISP 将 1.2.3.4/30 路由给您。您有三个选择:
- 正常路由它们。为您留下两个可用的 IP,其中一个必须是您的网关,因此是单个主机。
- 将外部 IP NAT 为内部 IP。剩下 4 个主机。
- 根据需要将流量重定向到内部服务。SMTP (TCP 25)、DNS (TCP/UDP 53) 和您的公司网站 (TCP 80,443) 都可以存在于单个外部地址上。
第三种方式越来越普遍。大多数管理员(包括我自己)在设置时,都懒得重定向 ICMP,所以它只是在防火墙处被丢弃。
答案3
阻止 ICMP 类型 0(回显回复)并没有什么坏处,但如果返回路径中的任何链接的 MTU 小于 TCP 连接的发送最大段大小,则阻止所有 ICMP 流量会中断对客户端的响应。发生这种情况的原因是 Web 服务器无法再接收 ICMP 类型 3 代码 4 数据包(目标不可访问;需要分段并设置 DF)。
实际上这并不是什么大问题,因为任何需要隧道传输流量的人还必须建立一种机制来处理大量 Web 服务器,这些服务器的 TCP 堆栈受到配置错误的防火墙的阻碍。
答案4
有助于抵御拒绝服务攻击。没有真正的理由需要该网站已开放,供公众访问。
另外,它没有提供网站的统计信息;一个主机或 IP 很容易负责后端服务器的负载平衡场(ping mysite.com 并不能告诉您名称后面的所有服务器是否都在正常工作。)
这可能只是公司的政策,旨在删除不必要的流量,或者仅允许端口 80 和 SSL 流量在内部重定向到其他服务器。
我想另一个问题是,如果真的没有必要,为什么还要允许外部系统 ping 你的服务器呢?