ICMP 功能
总结 使用互联网控制消息协议 (ICMP) 功能诊断网络问题并检查设备的可访问性。
使用 功能资源管理器 确认平台和版本对特定功能的支持。
协议重定向消息
ICMP 重定向(也称为协议重定向)是交换机和路由器用来将路由信息传送到主机的一种机制。设备使用协议重定向消息通知同一数据链路上的主机给定目的地的最佳可用路由。
了解协议重定向消息
协议重定向消息通知主机更新其路由信息并在备用路由上发送数据包。假设主机尝试通过交换机 S1 发送数据包,S1 将数据包发送到另一台交换机 S2。此外,假设从主机到 S2 的直接路径可用(即,主机和 S2 位于同一以太网段上)。然后,S1 发送协议重定向消息,通知主机目标的最佳路由是到 S2 的直接路由。然后,主机应将数据包直接发送到 S2,而不是通过 S1 发送。S2 仍将从 S1 收到的原始数据包发送到预期目标。
有关协议重定向的更多详细信息,请参阅 RFC-1122 和 RFC-4861 。
-
如果数据包包含路由信息,交换机不会发送协议重定向消息。
-
所有 EX 系列交换机都支持为 IPv4 和 IPv6 流量发送协议重定向消息。
禁用协议重定向消息
默认情况下,设备会为 IPv4 和 IPv6 流量发送协议重定向消息。出于安全原因,您可能需要禁止设备发送协议重定向消息。
要禁用整个设备的协议重定向消息,请在层次结构级别包含 no-redirects
或 no-redirects-ipv6
语句 [edit system]
。
-
对于 IPv4 流量:
[edit system] user@host# set no-redirects
-
对于 IPv6 流量:
[edit system] user@host# set no-redirects-ipv6
要在设备上重新启用重定向消息的发送,请从配置中删除 no-redirects
语句(对于 IPv4 流量)或 no-redirects-ipv6
语句(对于 IPv6 流量)。
要基于每个接口禁用协议重定向消息,请在层次结构级别包含 no-redirects
该语句 [edit interfaces interface-name unit logical-unit-number family family]
。
-
对于 IPv4 流量:
[edit interfaces interface-name unit logical-unit-number] user@host# set family inet no-redirects
-
对于 IPv6 流量:
[edit interfaces interface-name unit logical-unit-number] user@host# set family inet6 no-redirects
坪
Ping 使用 ICMP。成功的 ping 是指设备向目标发送 ICMP 回显请求,并且目标使用 ICMP 回显回复进行响应。但是,在某些情况下,您可能不希望设备响应 ping 请求。
禁用路由引擎对组播 ping 数据包的响应
默认情况下,路由引擎响应发送到组播组地址的 ICMP 回显请求。通过将路由引擎配置为忽略组播 ping 数据包,您可以防止未经授权的人员发现网络中的提供商边缘 (PE) 设备列表。
要禁用路由引擎响应这些 ICMP 回显请求,请在层次结构级别包含 no-multicast-echo
语句 [edit system]
:
[edit system] user@host# set no-multicast-echo
禁用在 Ping 响应中报告 IP 地址和时间戳
使用该record-route
选项发出ping
命令时,默认情况下,路由引擎会显示 ICMP 回显请求数据包的路径和 ICMP 回显响应中的时间戳。通过配置 和 no-ping-timestamp
选项no-ping-record-route
,您可以防止未经授权的人员发现有关提供商边缘 (PE) 设备及其环路地址的信息。
您可以将路由引擎配置为禁用 ping 请求数据包的 IP 报头中的选项设置 record-route
。禁用该 record-route
选项可防止路由引擎在响应中记录和显示 ICMP 回显请求数据包的路径。
要将路由引擎配置为禁用选项设置 record route
,请在层次结构级别包含 no-ping-record-route
语句 [edit system]
:
[edit system] user@host# set no-ping-record-route
要在 ICMP 回显响应中禁用时间戳报告,请在层次结构级别包含 no-ping-time-stamp
该选项 [edit system]
:
[edit system] user@host# set no-ping-time-stamp
源淬火消息
当设备接收到太多或不需要的数据报时,它可以向原始设备发送源抑制消息。源抑制消息向始发设备发出信号,以减少其发送的流量。
默认情况下,设备对 ICMP 源抑制消息做出反应。要忽略 ICMP 源抑制消息,请在层次结构级别包含 no-source-quench
以下语句 [edit system internet-options]
:
[edit system internet-options] no-source-quench;
要停止忽略 ICMP 源解析消息,请使用以下 source-quench
语句:
[edit system internet-options] source-quench;
生存时间 (TTL) 过期
数据包头中的生存时间 (TTL) 值确定数据包在网络中的剩余时间。TTL 值随数据包通过的每个设备(或跃点)而递减。当设备收到 TTL 值为 0 的数据包时,将丢弃该数据包。TTL 到期消息是使用 ICMP 发送的。
您可以将设备配置为使用 IPv4 地址作为 ICMP 生存时间 (TTL) 过期错误消息的源地址。这意味着您可以将环路地址配置为源地址,以响应 ICMP 错误数据包。当您由于网络中有重复的 IPv4 地址而无法将设备地址用于跟踪路由时,执行此操作非常有用。
源地址必须是 IPv4 地址。要指定源地址, ttl-expired-source-address source-address
请使用层次结构级别的选项 [edit system icmp (System)]
:
[edit system icmp] user@host# set ttl-expired-source-address source-address
此配置仅适用于 ICMP TTL 到期消息。其他 ICMP 错误回复消息继续使用入口接口的地址作为源地址。
速率限制 ICMP 流量
要限制路由引擎生成 ICMPv4 或 ICMPv6 消息并将其发送到路由引擎的速率,请在层次结构级别包含相应的速率限制语句 [edit system internet-options]
。
-
对于 IPv4:
[edit system internet-options] icmpv4-rate-limit bucket-size bucket-size packet-rate packet-rate
-
对于 IPv6:
[edit system internet-options] icmpv6-rate-limit bucket-size bucket-size packet-rate packet-rate
速率限制 ICMP 错误消息
默认情况下,未过期 TTL 的 IPv4 和 IPv6 数据包的 ICMP 错误消息以每秒 1 个数据包 (pps) 的速率生成。您可以将此速率调整为您决定为网络提供足够信息而不会导致网络拥塞的值。
对于 TTL 过期的 IPv4 或 IPv6 数据包,ICMP 错误消息的速率不可配置。它固定为 500 pps。
为什么要对 ICMPv4 和 ICMPv6 错误消息进行速率限制
调整速率限制的一个示例用例是提供 Web 服务的数据中心。假设此数据中心在网络上有许多服务器,当它们通过 Internet 与主机通信时,这些服务器使用 MTU 为 9100 字节的巨型帧。这些其他主机需要 1500 字节的 MTU。除非在连接的两端都强制实施最大分段大小 (MSS),否则服务器回复时可能会回复一个太大的数据包,该数据包在到达数据中心的边缘路由器时无法通过 Internet 传输而不会分段。
由于 TCP/IP 实现通常默认启用路径 MTU 发现,并将 dont-fragment
位设置为 1,因此传输设备将丢弃太大的数据包,而不是对其进行分段。设备将返回 ICMP 错误消息,指示由于数据包太大而无法访问目标。该消息还将提供发生错误时所需的 MTU。发送主机应调整该连接的发送 MSS,并以较小的数据包大小重新发送数据,以避免分段问题。
在高核心接口速度下,当网络中有许多主机需要此服务时,错误消息的默认速率限制 1 pps 可能不足以通知所有主机。结果是出站数据包被静默丢弃。此操作可能会触发其他重新传输或退避行为,具体取决于数据中心边缘路由器在每个面向核心的接口上处理的请求量。
在这种情况下,您可以提高速率限制,以使更多数量的超大数据包能够到达发送主机。(添加更多面向内核的接口也有助于解决此问题。
如何对 ICMPv4 和 ICMPv6 错误消息进行速率限制
尽管您在层次结构级别配置速率限制 [edit chassis]
,但它不是机箱范围的限制。相反,速率限制适用于每个接口系列。这意味着,例如,配置了的 family inet
多个物理接口可以按配置的速率同时生成 ICMP 错误消息。
此速率限制仅对持续 10 秒或更长时间的流量生效。速率限制不适用于持续时间较短(例如 5 秒或 9 秒)的流量。
-
要配置 ICMPv4 的速率限制,请使用以下
icmp
语句:[edit chassis] user@host# set icmp rate-limit rate-limit
从 Junos OS 19.1R1 版开始,最大速率从 50 pps 增加到 1000 pps。
-
要配置 ICMPv6 的速率限制,请使用以下
icmp6
语句:[edit chassis] user@host# set icmp6 rate-limit rate-limit
还必须考虑速率限制值可以与 DDoS 保护配置交互。超过 MTU 的异常数据包的默认带宽值为 250 pps。当数据包数超过该值时,DDoS 保护会标记违规。如果将速率限制设置为高于当前 mtu-exceeded
带宽值,则必须配置带宽值以匹配速率限制。
例如,假设您将 ICMP 速率限制设置为 300 pps:
user@host# set chassis icmp rate-limit 300
您必须配置 DDoS 防护 mtu-exceeded bandwidth
以匹配该值。
user@host# set system ddos-protection protocols exceptions mtu-exceeded bandwidth 300