ICMP

ICMP 指南:ping、traceroute 和网络诊断

了解 ICMP 与 TCP 和 UDP 端口有何不同,何时允许回显请求,以及如何保持诊断有用而不引发滥用。

默认端口
ICMP
协议
ICMP
主要用途
网络诊断

什么是 ICMP?

ICMP,即互联网控制消息协议,承载网络控制和错误消息。它由 ping 和 Traceroute 等工具使用,但它不是 TCP 或 UDP 服务,并且不像 HTTP、SSH 或 DNS 那样具有端口号。

  • ICMP 有类型和代码,而不是端口

    Ping 使用 ICMP 回显请求和回显应答消息。其他 ICMP 消息报告无法到达的目的地、超时、分段需求和路由问题。

  • 阻止所有 ICMP 可能会影响故障排除

    某些 ICMP 消息对于路径 MTU 发现、延迟检查、监控和诊断路由或防火墙问题非常重要。

ICMP 的工作原理

ICMP 与 IP 一起报告网络状况。当目标无法到达、数据包在传输过程中过期、需要分段或诊断回显请求需要回复时,主机、路由器或防火墙可以发送 ICMP 消息。

最熟悉的 ICMP 工作流程是 ping。客户端发送回显请求,目标使用回显回复进行回复。往返时间提供了有关可达性和延迟的快速信号,但它并不能证明 443 或 22 等应用程序端口已打开。

ICMP 端口与 TCP 和 UDP 端口

ICMP 不使用 TCP 或 UDP 端口号。它使用消息类型和代码。这就是为什么 ICMP 指南不应被视为普通的开放端口文章:您正在决定是否允许特定的 ICMP 消息,而不是守护程序是否正在侦听编号端口。

端口检查器测试 TCP 或 UDP 服务可达性。 Ping 测试 ICMP 可达性。两者都很有用,但它们回答了不同的问题。服务器可以在 HTTPS 工作时阻止 ping,或者在每个应用程序端口关闭时响应 ping。

Ping 与跟踪路由

Ping 检查目标是否响应 ICMP 回显以及往返时间。它对于快速可达性检查、监控探测和延迟基线非常有用。

Traceroute 通过发送 TTL 值不断增加的数据包并从沿途的路由器读取 ICMP 超时消息来映射路径。某些平台使用 UDP 或 TCP 探测进行路由跟踪,但 ICMP 消息仍然是决定有多少路径诊断报告中间跃点的核心。

何时应允许 ICMP

当监控系统、负载均衡器、网络团队或操作人员需要可达性和延迟信号时允许 ICMP。对于内部网络,允许受控 ICMP 通常可以改善故障排除并减少盲点。

对于公共系统,许多团队允许来自可信监控源的有限回显回复,并允许基本错误消息,例如需要碎片或目标无法到达的行为。确切的策略应符合您的网络边缘、DDoS 态势和可观察性需求。

更改 ICMP 防火墙规则之前

在阻止或允许 ICMP 之前,请确定您要控制哪些消息。回显请求、回显回复、超时、目标不可达和数据包太大行为会产生不同的操作影响。

避免一揽子封锁,除非你了解其中的权衡。阻止所有 ICMP 可能会破坏路径 MTU 发现、隐藏有用的路由错误、降低监控的准确性,并迫使团队使用较弱的信号进行调试。

如何在 Windows、Linux 和云防火墙上管理 ICMP

在 Windows 上,Windows Defender 防火墙具有预定义的 ICMP 回显规则,可以为选定的配置文件和源地址启用这些规则。范围规则尽可能适用于受信任的网络,而不是默认启用广泛的公共 ping 响应。

在 Linux 上,nftables、iptables、firewalld 和云安全组可以按类型允许或限制 ICMP。许多发行版还公开了用于回显行为的内核 sysctl 设置,但防火墙策略通常是更清晰的控制点。

在云平台上,安全组通常将 ICMP 与 TCP 和 UDP 分开对待。检查入站和出站策略,并记住负载均衡器、CDN 边缘和提供商 DDoS 控制可能会以与实例防火墙不同的方式处理 ICMP。

  • 诊断:在需要时允许足够的 ICMP 进行 ping、traceroute、路径 MTU 发现和错误可见性。
  • 范围:当不需要广泛的可见性时,将公共回声响应限制为可信监控源。
  • 速率限制:使用速率限制或边缘保护来降低洪水风险,而无需删除所有诊断。
  • 验证:测试 ICMP 可达性和应用程序端口,因为它们回答不同的问题。

如何测试 ICMP

使用 ping 测试 echo 请求和回复。使用traceroute 或tracert 检查路径并确定数据包停止的位置,请记住,某些路由器会故意抑制ICMP 响应或对其进行速率限制。

如果 ping 失败但应用程序正常运行,则可能会阻止 ICMP,同时允许 TCP 或 UDP。如果 ping 有效但应用程序失败,则目标在网络层可达,但特定服务端口、防火墙规则、侦听器或应用程序可能已损坏。

测试应用程序端口

ICMP常见故障处理案例

如果 ping 超时,则目标可能已关闭、路由可能丢失、ICMP 回显可能被阻止,或者中间防火墙可能正在丢弃消息。超时不会自动证明主机已离线。

如果跟踪路由在某个跃点停止,则该跃点可能正在过滤 TTL 过期的响应或速率限制诊断。如果大型传输失败而小型请求正常工作,请检查路径 MTU 发现以及数据包太大的消息是否被阻止。

ICMP 安全检查表

故意允许 ICMP,而不是本能地阻止一切。对回显流量进行速率限制,在适当的情况下限制公众响应,并保留稳定网络所需的重要错误消息。

监控边缘的异常 ICMP 量、欺骗源和洪水模式。对于敏感网络,将 ICMP 策略与分段和可信监控相结合,而不是依赖 ping 可见性作为安全边界。

常见问题

ICMP 使用什么端口?

ICMP 不使用 TCP 或 UDP 端口。它使用消息类型和代码,例如 ping 的回显请求和回显回复。

ping 与端口检查相同吗?

No. Ping 测试 ICMP 可达性。端口检查测试 TCP 或 UDP 服务是否可达。主机可以在所有应用程序端口关闭时应答 ping,或者在应用程序仍然工作时阻止 ping。

我应该阻止 ICMP 吗?

在不了解影响的情况下,默认情况下不要阻止所有 ICMP。受控 ICMP 有助于监控、跟踪路由、路径 MTU 发现和故障排除。在可能的情况下,对其范围或速率进行限制。

为什么 ping 不通但网站可以访问?

服务器或网络可能会阻止 ICMP 回显,同时允许 HTTP 或 HTTPS。测试实际应用程序端口以确认服务可达性。