为什么一些Web服务器不响应icmp请求?

在公共Web服务器上阻塞/丢弃入站ICMPstream量的目的是什么? 它被阻塞是常见的吗?

我不得不testing一个服务器是否可以从不同的地方访问(在位于不同州/国家的各种服务器上testing过)。 我依靠ping作为一种快速可靠的方法来确定一台服务器是否可以在线/networking访问。 在没有收到对方的回复之后,我尝试使用lynx来加载网站,并且工作。

    现在放弃ICMP是相当常见的,因为这是一种用于拒绝服务目的的通用方法。 一个更高带宽的主机或多个主机反复ping单个Web服务器可以利用其所有带宽。

    其他人可能会放弃在互联网上减less他们的足迹,因此可能被大规模扫描stream量忽视。

    虽然这很常见,但我认为它提供的价值不大,并且在限制诊断潜力的同时将DoS和占用空间降至最低。

    除了可疑的拒绝服务攻击(DoS)保护和降低configuration文件之外,还有一个常见但被忽视的原因是给定的IP可能不会对ping做出响应:它实际上并没有分配给一个接口。

    将IP /协议/端口元组redirect(端口转发)到所需的各种服务,可以在较小的networking上提供更高的服务密度。

    例如,假设你的ISP路由到你1.2.3.4/30。 你有三个select:

    • 正常路线。 留下两个可用的IP,其中一个必须是您的网关,所以一个主机。
    • NAT外部IP到内部IP。 留下你四个主机。
    • 根据需要将stream量redirect到内部服务。 SMTP(TCP 25),DNS(TCP / UDP 53)和公司网站(TCP 80,443)都可以存在于一个外部地址上。

    第三种方式越来越普遍。 大多数pipe理员(包括我自己)在设置时都不用去redirectICMP,因此它只能在防火墙上下载。

    阻止ICMPtypes0(Echo应答)没有任何危害,但是如果retunpath中的任何链路的MTU小于TCP连接的Send Max Segment Size,则阻止所有ICMPstream量会中断对客户端的响应。 发生这种情况是因为Web服务器不能再接收ICMPtypes3代码4数据包(Destination Unreachable; Fragmentation Needed和DF set)。

    在实践中,这不是什么大问题,因为任何需要隧道传输的人也必须build立一个机制来处理大量的Web服务器,这些Web服务器的TCP堆栈由于configuration不当的防火墙而受到阻碍。

    帮助拒绝服务攻击。 没有真正的理由需要这个网站打开公众的ping。

    另外它不给网站的统计资料; 一个主机或IP可以很容易地回答后端服务器的负载平衡服务器场(ping一个mysite.com不会告诉你所有的服务器是否正常工作在名称后面)。

    可能只是公司的政策,以减less不必要的stream量,或者只允许将端口80和SSLstream量redirect到其他服务器内部。

    我想另外一个问题就是,为什么要让外部系统ping你的服务器,如果他们真的没有必要呢?