Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

了解单播 RPF(路由器)

对于承载 IPv4 或 IPv6 流量的接口,可以通过配置单播反向路径转发 (RPF) 来减少拒绝服务 (DoS) 攻击的影响。单播 RPF 有助于确定攻击来源,并在启用了单播 RPF 的接口上拒绝来自意外源地址的数据包。

注意:
  • 您可以通过在网络的边缘(面向客户的接口上)应用单播 RPF 检查功能来保护网络。在 ISP 环境中,这会影响可能强加于大规模设置的网络。如果您已经保护了网络边缘,则带有欺骗 IP 源地址的数据包甚至不会出现在面向核心的接口中。在这种情况下,无需检查单播 RPF。启用单播 RPF 功能会影响控制平面性能,因此可在需要的地方使用。因此,强烈建议不要在网络核心(内部)接口上启用此功能。

注意:

目前在 PTX 平台上,配置 BGP 流规格(flowspec)会创建一个隐式过滤器来设置 VRF 实例。在 PTX 平台上,过滤器查找先于源/目标 IP 查找。因此,源和目标 IP 查找发生在 VRF 实例的上下文中。

单播 RPF 和默认路由

当无法从路由表中的路由中选择活动路由时,路由器会选择默认路由。默认路由等同于 0.0.0.0/0 的 IP 地址。如果配置了默认路由,并在默认路由使用的接口上配置了单播 RPF,则单播 RPF 的行为方式与其他方式不同。

要确定默认路由是否使用接口,请输入 show route 命令:

address 是配置的默认路由的下一跃点地址。默认路由使用命令输出 show route 中显示的接口。

以下部分介绍了当默认路由使用接口以及默认路由不使用接口时,单播 RPF 的表现方式:

使用默认路由的单播 RPF 行为

除 MPC 和 MX80 路由器外,所有路由器上,如果您配置了默认路由并使用单播 RPF 配置的接口,则单播 RPF 将按以下方式运行:

  • 松散模式 — 会自动接受所有数据包。因此,建议不要在默认路由使用的接口上配置单播 RPF 松散模式。

  • 严格模式 — 当数据包的源地址与可通过接口访问的任何路由(默认或已获知)匹配时,该数据包将被接受。请注意,路由可以有多个与之关联的目标:因此,如果其中一个目标与数据包的传入接口匹配,则数据包被接受。

在配备 MPC 和 MX80 路由器的所有路由器上,如果您配置了默认路由并使用使用单播 RPF 配置的接口,则单播 RPF 将按以下方式运行:

  • 松散模式 — 接受所有数据包,但从默认路由获知源的数据包除外。从默认路由获知源的所有数据包都会在数据包转发引擎处丢弃。默认路由被视为路由不存在。

  • 严格模式 — 当数据包的源地址与可通过接口访问的任何路由(默认或已获知)匹配时,该数据包将被接受。请注意,路由可以有多个与之关联的目标:因此,如果其中一个目标与数据包的传入接口匹配,则数据包被接受。

当以下任一情况为真时,所有路由器均无法接受该数据包:

  • 数据包的源地址与路由表中的前缀不匹配。

  • 接口不会收到带有此源地址前缀的数据包。

无默认路由的单播 RPF 行为

如果未配置默认路由,或者默认路由未使用配置了单播 RPF 的接口,则单播 RPF 将按照 配置单播 RPF 严格模式和配置单播 RPF 松散模式中的说明运行。总之,没有默认路由的单播 RPF 表现如下:

  • 严格模式 — 当以下任一情况为真时,不接受该数据包:

    • 数据包的源地址与路由表中的前缀不匹配。

    • 接口不会收到带有此源地址前缀的数据包。

  • 松散模式 — 当数据包的源地址与路由表中的前缀不匹配时,将不接受数据包。

具有路由不对称的单播 RPF

通常,建议不要在网络内部的接口上启用单播 RPF,因为内部接口可能具有 路由不对称性。路由不对称意味着数据包的传出路径和返回路径不同。与位于客户或提供商边缘的路由器相比,网络核心中的路由器更有可能具有非对称反向路径。 图 1 显示了具有路由不对称的环境中的单播 RPF。

图 1:具有路由不对称的单 Unicast RPF with Routing Asymmetry播 RPF

图 1 中,如果在接口 so-0/0/0上启用单播 RPF,则流向路由器 A 的流量不会被拒绝。如果在接口 so-1/0/1上启用单播 RPF,则来自路由器 A 的流量将被拒绝。

如果需要在非对称路由环境中启用单播 RPF,则可以使用故障过滤器让路由器接受已知由特定路径到达的传入数据包。有关接受具有特定源地址和目标地址的数据包的故障过滤器的示例,请参阅 配置单播 RPF

配置单播 RPF 严格模式

在严格模式下,单播 RPF 会检查传入数据包的源地址是否与路由表中的前缀匹配,以及接口是否希望接收带有此源地址前缀的数据包。

如果传入数据包未通过单播 RPF 检查,则接口上不接受该数据包。当接口上不接受数据包时,单播 RPF 会对数据包进行计数,并将其发送至可选的故障过滤器。如果未配置故障过滤器,则默认操作为以静默方式丢弃数据包。

可选的故障过滤器允许您将过滤器应用于未通过单播 RPF 检查的数据包。您可以定义故障过滤器来执行任何过滤器操作,包括接受、拒绝、日志记录、采样或管制。

当某个接口上启用单播 RPF 时,接口上不接受自举协议 (BOOTP) 数据包和动态主机配置协议 (DHCP) 数据包。要允许接口接受 BOOTP 数据包和 DHCP 数据包,必须应用故障过滤器,以接受源地址为和目标地址0.0.0.0255.255.255.255.的所有数据包。有关配置示例,请参阅配置单播 RPF

有关定义故障过滤器的更多信息,请参阅 路由策略、防火墙过滤器和流量监管器用户指南

要配置单播 RPF,请添加 rpf-check 语句:

您可以在以下层级包含此语句:

  • [edit interfaces interface-name unit logical-unit-number family (inet | inet6)]

  • [edit logical-systems logical-system-name interfaces interface-name unit logical-unit-number family (inet | inet6)]

使用流量过滤器时,使用单播 RPF 可能会有多种后果:

  • RPF 故障过滤器在输入过滤器之后和输出过滤器之前进行评估。

  • 如果为输入过滤器丢弃的数据包配置过滤器计数器,并且想知道丢弃的数据包总数,则还必须为通过 RPF 检查丢弃的数据包配置过滤器计数器。

  • 要对未通过 RPF 检查的数据包以及 RPF 故障过滤器接受的数据包进行计数,必须配置过滤器计数器。

  • 如果输入过滤器将数据包转发到 inet.0 或 inet6.0 路由表以外的任何位置,则不会执行单播 RPF 检查。

  • 如果输入过滤器将数据包转发到配置输入接口的路由实例以外的任何位置,则不会执行单播 RPF 检查。

注意:

在 ACX 和 MX 系列路由器上:

  • uRPF 故障过滤器无法匹配入口端口检查(严格模式)中失败的数据包。
  • uRPF 故障过滤器可以匹配未通过源 IP 查找的数据包,但无法匹配未通过输入接口检查的数据包(严格模式)。
  • uRPF 故障过滤器仅适用于防火墙过滤器的接口特定实例。
  • uRPF 故障过滤器不支持拒绝和路由实例操作。

配置单播 RPF 严格模式,并应用允许接口接受 BOOTP 数据包和 DHCP 数据包的故障过滤器。过滤器接受源地址为 0.0.0.0 和目标地址为 255.255.255.255的所有数据包。

要以严格模式配置单播 RPF:

  1. 配置故障过滤器:
  2. 在接口上配置单播 RPF:
  3. 提交配置。

配置单播 RPF 松散模式

默认情况下,单播 RPF 使用严格模式。单播 RPF 松散模式类似于单播 RPF 严格模式,具有相同的配置限制。在松散模式下,唯一的检查是数据包的源地址在路由表中是否带有相应的前缀;松散模式不会检查接口是否希望接收具有特定源地址前缀的数据包。如果未找到相应的前缀,则单播 RPF 松散模式将不接受数据包。与严格模式一样,松散模式对失败的数据包进行计数,并选择性地将其转发到故障过滤器,过滤器接受、拒绝、记录、采样或监管数据包。

要配置单播 RPF 松散模式,请包括 mode


  1. 您可以在以下层级包含此语句:

    • [edit interfaces interface-name unit logical-unit-number family (inet | inet6) rpf-check <fail-filter filter-name>]

    • [edit logical-systems logical-system-name interfaces interface-name unit logical-unit-number family (inet | inet6) rpf-check <fail-filter filter-name>]

  2. 例如:

    在此示例中,除了设备初始化之外,不需要任何特殊配置。

    配置单播 RPF 松散模式,并应用允许接口接受 BOOTP 数据包和 DHCP 数据包的故障过滤器。过滤器接受源地址为 0.0.0.0 和目标地址为 255.255.255.255的所有数据包。

    在松散模式下配置单播 RPF:

    1. 配置故障过滤器:
    2. 在接口上配置单播 RPF:
    3. 提交配置。

配置能够丢弃数据包的单播 RPF 松散模式

单播 RPF 松散模式能够丢弃源地址指向丢弃接口的数据包。使用单播 RPF 松散模式以及远程触发空路由过滤,提供了一种丢弃来自已知攻击源的数据包的有效方式。边缘路由器中的 BGP 策略可确保具有不可信源地址的数据包将下一跃点设置为丢弃路由。当具有不可信源地址的数据包到达路由器时,单播 RPF 会执行源地址的路由查找。由于源地址路由指向丢弃的下一跃点,因此丢弃数据包并递增计数器。IPv4 (inet) 和 IPv6 (inet6) 地址族都支持此功能。

要配置能够丢弃数据包的单播 RPF 松散模式,请在 rpf-loose-mode-discard family (inet | inet6) 层次结构级别添加语句 [edit forwarding-options]

在此示例中,除了设备初始化之外,不需要任何特殊配置。

配置单播 RPF 松散模式,并应用允许接口接受 BOOTP 数据包和 DHCP 数据包的故障过滤器。过滤器接受源地址为 0.0.0.0 和目标地址为 255.255.255.255的所有数据包。

要配置能够丢弃数据包的单播 RPF 松散模式:

  1. 配置故障过滤器:
  2. 在接口上配置单播 RPF:
  3. 配置丢弃数据包的能力。
  4. 提交配置。

在 VPN 上配置单播 RPF

通过在接口上启用单播 RPF 并在层级包含语句[edit routing-instances routing-instance-name]interface您可以在 VPN 接口上配置单播 RPF。

只能在在路由实例中指定的接口上配置单播 RPF。这意味着:

  • 对于第 3 层 VPN,CE 路由器接口上支持单播 RPF。

  • 面向核心的接口不支持单播 RPF。

  • 对于虚拟路由器路由实例,您在路由实例中指定的所有接口均支持单播 RPF。

  • 如果输入过滤器将数据包转发到配置输入接口的路由实例以外的任何位置,则不会执行单播 RPF 检查。

在 3 层 VPN 接口上配置单播 RPF:

配置单播 RPF

配置单播 RPF 严格模式,并应用允许接口接受 BOOTP 数据包和 DHCP 数据包的故障过滤器。过滤器接受源地址为 0.0.0.0 和目标地址为 255.255.255.255的所有数据包。