Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

第 3 层 VPN 基于下一跳的隧道

本主题介绍配置动态通用路由封装 (GRE) 隧道和动态 MPLS-over-UDP 隧道以支持隧道复合下一跳跃。它还提供了有关配置反向路径转发以防止反欺骗的信息。

示例:配置基于下一跃点的动态 GRE 隧道

此示例说明如何配置包含隧道复合下一跃点 (CNH) 而不是下一跳跃接口的动态通用路由封装 (GRE) 隧道。基于下一跳跃的动态 GRE 隧道比基于接口的动态 GRE 隧道具有扩展优势。

要求

此示例使用以下硬件和软件组件:

  • 五个带 MPC 和 MIC 的 MX 系列路由器。

  • 在 PE 路由器上运行的 Junos OS 16.2 或更高版本。

开始之前:

  1. 配置设备接口,包括环路接口。

  2. 为设备配置路由器 ID 和自治系统编号。

  3. 与远程 PE 设备建立内部 BGP (IBGP) 会话。

  4. 在设备之间建立 OSPF 对等互联。

概述

从 Junos OS 版本 16.2 开始,动态通用路由封装 (GRE) 隧道支持为配置的每个 GRE 隧道创建通道复合下一跳跃。

默认情况下,对于配置的每个新的动态 GRE 隧道,将创建一个对应的逻辑隧道接口。这称为基于接口的动态隧道,是创建动态隧道的默认模式。在基于接口的动态隧道上,可在设备上配置的隧道数量取决于设备上支持的接口总数。基于下一跳跃的动态 GRE 隧道消除了对物理接口的依赖,GRE 隧道封装作为下一跳跃指令实施,而无需创建逻辑隧道接口。这为可在设备上创建的动态隧道数量提供了扩展优势。

从 Junos OS 17.1 版开始,在带有 MPC 和 MIC 的 MX 系列路由器上,基于下一跳跃的动态 GRE 隧道的扩展限制也随之增加。增加的扩展值有利于数据中心网络,其中需要网关路由器通过 IP 基础架构与多个服务器通信;例如,在 Contrail 网络中。

在给定时间点,可以将基于下一跳跃的动态隧道或基于默认接口的动态 GRE 隧道存在于设备上。从一个隧道模式切换到另一个隧道模式可删除现有隧道,并根据支持的扩展限制在新的隧道模式下创建新隧道。同样,在给定时间点,对于同一隧道目标,基于下一跳跃的隧道封装类型可以是 GRE 或 UDP。

要启用基于下一跳跃的动态 GRE 隧道,请在层次结构级别中[edit routing-options dynamic-tunnels gre]包含语next-hop-based-tunnel句。

现有动态通道功能需要完整的静态配置。目前,从通告路由中的对等设备接收的隧道信息将被忽略。从 Junos OS 17.4R1 版开始,在 MX 系列路由器上,基于下一跳跃的动态 GRE 隧道使用 BGP 封装扩展社区发出信号。BGP 导出策略用于指定隧道类型、通告发送方侧隧道信息,以及解析和传送接收方通道信息。通道是根据接收的类型通道公共组创建的。

BGP 支持多个通道封装。接收多个功能后,基于下一跳跃的动态隧道将根据配置的 BGP 策略和隧道优先级创建。隧道优先级应在隧道两端保持一致,以便设置隧道。默认情况下,MPLS-over-UDP (MPLSoUDP) 隧道优先于 GRE 隧道。如果存在动态隧道配置,则该配置优先于接收的隧道公共组。

配置基于下一跳跃的动态 GRE 隧道时,请注意以下注意事项:

  • 动态隧道创建在 IBGP 协议下一跳跃解析进程中触发。

  • 允许从基于下一跳跃的隧道模式切换到基于接口的隧道模式(反之亦然),这会影响每个模式中支持的 IP 隧道扩展值方面的网络性能。

  • 基于下一跳跃的动态隧道配置不支持 RSVP 自动网状隧道。

  • 此功能支持基于全新 IPv4 映射-IPv6 下一跳跃的动态 GRE 隧道创建。

  • 基于下一跳跃的动态 GRE 隧道配置不支持以下功能:

    • RSVP 自动网状

    • 逻辑系统

    • 发送方(MX 系列)侧的每通道流量统计信息收集

    • 隧道接口上的 QoS 实施,例如管制和整形。

    • 路径最大传输单元发现

    • GRE 关键功能

    • GRE 激活消息的 GRE 操作、管理和维护 (OAM)。

拓扑

图 1 说明了动态 GRE 隧道上第 3 层 VPN 场景。客户边缘 (CE) 设备、CE1 和 CE2 分别连接到提供商边缘 (PE) 设备、PE1 和 PE2。PE 设备连接到提供商设备 (设备 P1),内部 BGP (IBGP) 会话将两个 PE 设备互连。PE 设备之间配置了两个动态 GRE 隧道。从设备 PE1 到设备 PE2 的动态隧道基于下一跳跃隧道模式,从设备 PE2 到设备 PE1 的动态隧道基于接口隧道模式。

图 1:动态 GRE 隧道 Layer 3 VPN over Dynamic GRE Tunnels上第 3 层 VPN

基于下一跳跃的动态 GRE 隧道处理方式如下:

  1. 配置基于下一跳跃的动态 GRE 隧道后,将为 inet.3 路由表中的协议下一跳跃创建带有隧道 CNH 的隧道目标掩码路由。只有当动态隧道配置被删除时,此 IP 通道路由才会被撤销。

    隧道 CNH 属性包括:

    • 禁用第 3 层 VPN CNH 时 — 源和目标地址、封装字符串和 VPN 标签。

    • 当启用第 3 层 VPN CNH 和每前缀 VPN 标签分配时 — 源地址、目标地址和封装字符串。

    • 启用第 3 层 VPN CNH 并禁用每前缀 VPN 标签分配 — 源地址、目标地址和封装字符串。此情况下的路由会添加至带有辅助路由的另一个虚拟路由和转发表。

  2. PE 设备使用 IBGP 会话互连。远程 BGP 邻接方的 IBGP 路由下一跳跃是协议下一跳跃,使用隧道掩码路由与隧道下一跳跃解析。

  3. 在隧道复合下一跳跃上解析下一跳跃后,将创建带有下一跳跃转发的间接下一跳跃。

  4. 通道 CNH 用于转发间接下一跳跃的下一跳跃。

配置

CLI 快速配置

要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,移除任何换行符,更改与网络配置匹配所需的任何详细信息,将命令复制并粘贴到层级的 CLI 中 [edit] ,然后从配置模式进入 commit

CE1

CE2

PE1

P1

PE2

程序

逐步过程

以下示例要求您在配置层次结构中导航各个级别。有关导航 CLI 的信息,请参阅 CLI 用户指南中的配置模式下使用 CLI 编辑器

要配置设备 PE1:

  1. 配置设备接口,包括设备的环路接口。

  2. 为设备 PE1 的路由配置静态路由,并将设备 P1 配置为下一跳跃目标。

  3. 为设备 PE1 配置路由器 ID 和自治系统编号。

  4. 配置 PE 设备之间的 IBGP 对等互连。

  5. 在设备 PE1 的所有接口(不包括管理接口)上配置 OSPF。

  6. 在设备 PE1 上启用基于下一跳跃的动态 GRE 隧道配置。

  7. 配置从设备 PE1 到设备 PE2 的动态 GRE 隧道参数。

  8. 将负载平衡策略导出到转发表。

  9. 在设备 PE1 和其他路由实例参数上配置 VRF 路由实例。

  10. 在路由实例配置中启用 BGP,以便与设备 CE1 对等。

结果

在配置模式下,输入 show interfacesshow routing-optionsshow protocolsshow routing-instances 命令以确认您的配置。如果输出未显示预期的配置,请重复此示例中的说明以更正配置。

如果完成设备配置,请在配置模式下输入 commit

验证

确认配置工作正常。

验证 PE 设备之间的连接

目的

验证设备 PE1 和设备 PE2 之间的 BGP 对等状态,以及从设备 PE2 接收的 BGP 路由。

行动

在操作模式下 show bgp summary ,运行 和 show route receive-protocol bgp ip-address table bgp.l3vpn.0 命令。

意义
  • 在第一个输出中,BGP 会话状态 Establ为 ,这意味着会话已启动且 PE 设备对等。

  • 在第二个输出中,设备 PE1 从设备 PE2 中学习了两个 BGP 路由。

验证设备 PE1 上的动态隧道路由

目的

验证 inet.3 路由表中的路由以及设备 PE1 上的动态隧道数据库信息。

行动

在操作模式下 show route table inet.3 ,运行 和 show dynamic-tunnels database terse 命令。

意义
  • 在第一个输出中,由于设备 PE1 配置了基于下一跳跃的动态 GRE 隧道,因此为 inet.3 路由表路由条目创建了一个隧道复合路由。

  • 在第二个输出中,从设备 PE1 到设备 PE2 创建的动态 GRE 隧道已启动,并分配了下一跳跃 ID,而不是下一跳跃接口。

验证设备 PE2 上的动态隧道路由

目的

验证 inet.3 路由表中的路由以及设备 PE2 上的动态隧道数据库信息。

行动

在操作模式下 show route table inet.3 ,运行 和 show dynamic-tunnels database terse 命令。

意义
  • 在第一个输出中,由于设备 PE2 具有基于默认接口的动态 GRE 隧道配置,因此会为 inet.3 路由表路由条目创建新接口。

  • 在第二个输出中,从设备 PE2 到设备 PE1 创建的动态 GRE 隧道将启动,并将新创建的接口名称分配给该隧道。

验证路由是否具有预期的间接下一跳跃标志

目的

验证设备 PE1 和设备 PE2 是否配置为维护数据包转发引擎转发表上的间接下一跳跃以转发下一跳跃绑定。

行动

在操作模式下,在设备 PE1 和设备 PE2 上运行 show krt indirect-next-hop 命令。

意义
  • 在第一个输出中,设备 PE1 具有到设备 PE2 的基于下一跳跃的动态 GRE 隧道。

  • 在第二个输出中,设备 PE2 具有一个基于接口的动态 GRE 隧道,可连接到设备 PE1。

故障 排除

要排除基于下一跳跃的动态隧道的故障,请参阅:

故障排除命令

问题

基于下一跳跃的动态 GRE 隧道配置未生效。

解决 方案

要排除基于下一跳跃的 GRE 隧道配置的故障,请在语句层次结构中[edit routing-options dynamic-tunnels]使用以下traceoptions命令:

  • traceoptions file file-name

  • traceoptions file size file-size

  • traceoptions flag all

例如:

示例:配置基于下一跳的 MPLS-over-UDP 动态隧道

此示例说明如何配置包含隧道复合下一跳跃的动态 MPLS-over-UDP 隧道。MPLS-over-UDP 功能在设备上支持的 IP 隧道数量上提供了扩展优势。

从 Junos OS 18.3R1 版开始,PTX 系列路由器和 QFX 系列交换机上支持 MPLS-over-UDP 隧道。对于 PTX 路由器或 QFX 交换机上配置的每一个动态隧道,都会创建一个隧道复合下一跳跃、一个间接下一跳跃以及一个转发下一跃点来解析隧道目标路由。您还可以使用策略控制通过在层次结构级别上包括 转发-rib 配置语句 [edit routing-options dynamic-tunnels] ,通过选择的前缀来解决动态隧道问题。

要求

此示例使用以下硬件和软件组件:

  • 五个带 MPC 和 MIC 的 MX 系列路由器。

  • 在提供商边缘 (PE) 路由器上运行的 Junos OS 16.2 或更高版本。

开始之前:

  1. 配置设备接口,包括环路接口。

  2. 为设备配置路由器 ID 和自动系统编号。

  3. 与远程 PE 设备建立内部 BGP (IBGP) 会话。

  4. 在设备之间建立 OSPF 对等互联。

概述

从 Junos OS 版本 16.2 开始,动态 UDP 隧道支持为配置的每个 UDP 隧道创建通道复合下一跳跃。这些基于下一跳跃的动态 UDP 隧道称为 MPLS-over-UDP 隧道。默认情况下,MPLS-over-UDP 隧道将启用通道复合下一跳跃。

MPLS-over-UDP 隧道本质上可能是双向或单向隧道。

  • 双向 — 当 PE 设备通过两个方向的 MPLS-over-UDP 隧道连接时,称为双向 MPLS-over-UDP 隧道。

  • 单向 — 如果两个 PE 设备一个方向通过 MPLS-over-UDP 隧道连接,另一个方向通过 MPLS/IGP 连接,则称为单向 MPLS-over-UDP 隧道。

    单向 MPLS-over-UDP 隧道在迁移情景中使用,或者在两个 PE 设备通过两个脱节的网络相互连接的情况下使用。由于单向 MPLS-over-UDP 隧道不存在反向方向通道,因此您必须在远程 PE 设备上配置基于过滤器的 MPLS-over-UDP 解封装,以便转发信息流。

从 Junos OS 版本 18.2R1 开始,在带有单向 MPLS over-UDP 隧道的 PTX 系列路由器和 QFX10000 上,您必须为 MPLS-over-UDP 数据包配置远程 PE 设备,以及解封装 IP 和 UDP 标头以在反向隧道方向转发数据包的操作。

例如,在远程 PE 设备设备设备 PE2 上,单向 MPLS-over-UDP 隧道需要以下配置:

PE2

在上述样本配置中, Decap_Filter 是用于 MPLS over-UDP 解封装的防火墙过滤器的名称。 udp_decap 术语是用于在设备 PE2 面向核心的接口上接受 UDP 数据包的输入过滤器,然后将 MPLS-over-UDP 数据包解封装到 MPLS-over-IP 数据包以进行转发。

您可以使用现有防火墙操作模式命令,例如 show firewall filter ,查看基于过滤器的 MPLS-over-UDP 解封装。

例如:

注意:

对于单向 MPLS-over-UDP 隧道:

  • 外部标头仅支持 IPv4 地址。基于过滤器的 MPLS-over-UDP 解封装不支持外部标头中的 IPv6 地址。

  • 解封后仅支持默认路由实例。

从 Junos OS 17.1 版开始,在带有 MPC 和 MIC 的 MX 系列路由器上,MPLS-over-UDP 隧道的扩展限制有所提高。

从 Junos 19.2R1 版开始,在带有 MPC 和 MIC 的 MX 系列路由器上,运营商支持运营商 (CSC) 架构可通过 MPLS-over-UDP 隧道部署,通过在支持运营商 PE 设备之间建立的动态 IPv4 UDP 隧道承载 MPLS 流量。借助此增强功能,MPLS-over-UDP 隧道提供的扩展优势进一步增强。IPv6 UDP 隧道不支持使用 MPLS-over-UDP 隧道的 CSC 支持。

现有动态通道功能需要完整的静态配置。目前,从通告路由中的对等设备接收的隧道信息将被忽略。从 Junos OS 版本 17.4R1 开始,在 MX 系列路由器上,基于下一跳跃的动态 MPLS-over-UDP 隧道使用 BGP 封装扩展社区发出信号。BGP 导出策略用于指定隧道类型、通告发送方侧隧道信息,以及解析和传送接收方通道信息。通道是根据接收的类型通道公共组创建的。

BGP 支持多个通道封装。接收多个功能后,基于下一跳跃的动态隧道将根据配置的 BGP 策略和隧道优先级创建。隧道优先级应在隧道两端保持一致,以便设置隧道。默认情况下,MPLS-over-UDP 隧道优先于 GRE 隧道。如果存在动态隧道配置,则该配置优先于接收的隧道公共组。

配置基于下一跳跃的动态 MPLS-over-UDP 隧道时,请注意以下注意事项:

  • 必须在 PE 设备之间配置 IBGP 会话。

  • 允许在基于下一跳跃的动态隧道封装(UDP 和 GRE)之间切换,这会影响每个模式中支持的 IP 隧道扩展值方面的网络性能。

  • 对于同一隧道目标,同时具有 GRE 和 UDP 基于下一跳跃的动态隧道封装类型会导致提交失败。

  • 对于单向 MPLS-over-UDP 隧道,您必须在远程 PE 设备上显式配置基于过滤器的 MPLS-over-UDP 解封装,以便转发数据包。

  • MPLS-over-UDP 支持平滑路由引擎切换 (GRES),并且符合统一 ISSU 和 NSR 的 MPLS-over-UDP 隧道类型标记。

  • 在 Lite 模式下的虚拟 MX (vMX) 上支持 MPLS-over-UDP 隧道。

  • MPLS-over-UDP 隧道支持基于全新 IPv4 映射-IPv6 下一跳跃的动态 GRE 隧道创建。

  • MPLS-over-UDP 隧道支持与 contrail 的互操作性,其中在 MPLS-over-UDP 隧道中,从 contrail vRouter 创建到 MX 网关。为此,需要在从 MX 系列路由器到 Contrail vRouter 的路由中通告以下公共组:

    在给定时间点,contrail vRouter(基于下一跳跃的动态 GRE 隧道、MPLS-over-UDP 隧道或 VXLAN)上仅支持一种隧道类型。

  • 基于下一跳跃的动态 MPLS-over-UDP 隧道配置不支持以下功能:

    • RSVP 自动网状

    • 纯 IPV6 GRE 和 UDP 隧道配置

    • 逻辑系统

拓扑

图 2 说明了动态 MPLS-over-UDP 隧道上第 3 层 VPN 场景。客户边缘 (CE) 设备、CE1 和 CE2 分别连接到提供商边缘 (PE) 设备、PE1 和 PE2。PE 设备连接到提供商设备(设备 P1),内部 BGP (IBGP) 会话将两个 PE 设备互连。PE 设备之间配置了基于下一跳跃的动态双向 MPL-over-UDP 隧道。

图 2:动态 MPLS-over-UDP 隧道 Dynamic MPLS-over-UDP Tunnels

MPLS-over-UDP 隧道处理方式如下:

  1. 配置 MPLS-over-UDP 隧道后,将为 inet.3 路由表中的隧道创建带有隧道复合下一跳跃的隧道目标掩码路由。只有当动态隧道配置被删除时,此 IP 通道路由才会被撤销。

    隧道复合下一跳跃属性包括:

    • 当禁用第 3 层 VPN 复合下一跳跃时 — 源和目标地址、封装字符串和 VPN 标签。

    • 当启用第 3 层 VPN 复合下一跳跃和每前缀 VPN 标签分配时 — 源地址、目标地址和封装字符串。

    • 当启用第 3 层 VPN 复合下一跳跃并禁用每前缀 VPN 标签分配时 — 源地址、目标地址和封装字符串。此情况下的路由会添加至带有辅助路由的另一个虚拟路由和转发表。

  2. PE 设备使用 IBGP 会话互连。远程 BGP 邻接方的 IBGP 路由下一跳跃是协议下一跳跃,使用隧道掩码路由与隧道下一跳跃解析。

  3. 在隧道复合下一跳跃上解析协议下一跳跃后,将创建带有下一跳跃转发的间接下一跳跃。

  4. 通道复合下一跳跃用于转发间接下一跳跃的下一跳跃。

配置

CLI 快速配置

要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,移除任何换行符,更改与网络配置匹配所需的任何详细信息,将命令复制并粘贴到层级的 CLI 中 [edit] ,然后从配置模式进入 commit

CE1

CE2

PE1

P1

PE2

程序

逐步过程

以下示例要求您在配置层次结构中导航各个级别。有关导航 CLI 的信息,请参阅 CLI 用户指南中的配置模式下使用 CLI 编辑器

要配置设备 PE1:

  1. 配置设备接口,包括设备的环路接口。

  2. 为设备 PE1 的路由配置静态路由,并将设备 P1 配置为下一跳跃目标。

  3. 为设备 PE1 配置路由器 ID 和自治系统编号。

  4. (仅限 PTX 系列)配置策略控制,以解决选定前缀上的 MPLS-over-UDP 动态隧道路由。

  5. (仅限 PTX 系列)配置入网导入策略,以解决通过的动态隧道目标路由。

  6. 配置 PE 设备之间的 IBGP 对等互连。

  7. 在设备 PE1 的所有接口(不包括管理接口)上配置 OSPF。

  8. 在设备 PE1 上启用基于下一跳跃的动态 GRE 隧道配置。

    注意:

    此步骤仅适用于说明基于下一跳跃的动态 GRE 隧道与 MPLS-over-UDP 隧道之间的实施差异。

  9. 配置从设备 PE1 到设备 PE2 的 MPLS-over-UDP 隧道参数。

  10. 在设备 PE1 和其他路由实例参数上配置 VRF 路由实例。

  11. 在路由实例配置中启用 BGP,以便与设备 CE1 对等。

结果

在配置模式下,输入 show interfacesshow routing-optionsshow protocolsshow routing-instances 命令以确认您的配置。如果输出未显示预期的配置,请重复此示例中的说明以更正配置。

如果完成设备配置,请在配置模式下输入 commit

验证

确认配置工作正常。

验证 PE 设备之间的连接

目的

验证设备 PE1 和设备 PE2 之间的 BGP 对等状态,以及从设备 PE2 接收的 BGP 路由。

行动

在操作模式下 show bgp summary ,运行 和 show route receive-protocol bgp ip-address table bgp.l3vpn.0 命令。

意义
  • 在第一个输出中,BGP 会话状态 Establ为 ,这意味着会话已启动且 PE 设备对等。

  • 在第二个输出中,设备 PE1 从设备 PE2 中学习了 BGP 路由。

验证设备 PE1 上的动态隧道路由

目的

验证 inet.3 路由表中的路由以及设备 PE1 上的动态隧道数据库信息。

行动

在操作模式下 show route table inet.3,运行 、 show dynamic-tunnels database terseshow dynamic-tunnels databaseshow dynamic-tunnels database summary 命令。

意义
  • 在第一个输出中,由于设备 PE1 配置了 MPLS-over-UDP 隧道,因此为 inet.3 路由表路由条目创建了一个隧道复合路由。

  • 在剩余输出中,MPLS-over-UDP 隧道显示为隧道封装类型、隧道下一跳跃参数和隧道状态。

验证设备 PE2 上的动态隧道路由

目的

验证 inet.3 路由表中的路由以及设备 PE2 上的动态隧道数据库信息。

行动

在操作模式下,运行 和 show route table inet.3show dynamic-tunnels database terse 命令。

意义

输出显示 MPLS-over-UDP 隧道创建和分配为下一跳跃接口的下一跳跃 ID,类似于设备 PE1。

验证路由是否具有预期的间接下一跳跃标志

目的

验证设备 PE1 和设备 PE2 是否配置为维护数据包转发引擎转发表上的间接下一跳跃以转发下一跳跃绑定。

行动

在操作模式下,在设备 PE1 和设备 PE2 上运行 show krt indirect-next-hop 命令。

意义

输出显示,PE 设备之间会创建基于下一跳跃的动态 MPLS-over-UDP 隧道。

故障 排除

要排除基于下一跳跃的动态隧道的故障,请参阅:

故障排除命令

问题

基于下一跳跃的动态 MPLS-over-UDP 隧道配置未生效。

解决 方案

要排除基于下一跳跃的 MPLS-over-UDP 隧道配置的故障,请在语句层次结构中[edit routing-options dynamic-tunnels]使用以下traceroute命令:

  • traceoptions file file-name

  • traceoptions file size file-size

  • traceoptions flag all

例如:

基于下一跳的动态隧道的反欺骗保护概述

随着数据中心大规模 IP 隧道部署的兴起,有必要添加安全措施,允许用户限制来自遭到入侵的虚拟机 (VM) 的恶意流量。一种可能的攻击是通过网关路由器从遭到入侵的服务器向任意客户 VPN 注入流量。在这种情况下,对 IP 隧道进行反欺骗检查可确保只有合法来源从其指定 IP 隧道将流量注入数据中心。

基于下一跳跃的动态 IP 隧道为设备上创建的每个动态隧道创建一个隧道复合下一跳跃。由于基于下一跳跃的动态隧道消除了对配置的每个新动态隧道物理接口的依赖性,因此配置基于下一跳跃的动态隧道比可在设备上创建的动态隧道数量具有扩展优势。从 Junos OS 版本 17.1 开始,可以为基于下一跳跃的动态 IP 隧道提供反欺骗功能。借助此增强功能,将实施安全措施,以防止通过网关路由器从遭到入侵的服务器将流量注入任意客户 VPN。

在数据包转发引擎中使用反向路径转发检查实施反欺骗。对于通过隧道进入路由实例的信息流,将执行检查。目前,当网关路由器从隧道接收信息流时,只有目标查找我们完成,并相应地转发数据包。启用反欺骗保护后,除了通道目标查找之外,网关路由器还会对 VPN 中的封装数据包 IP 标头进行源地址查找。这可确保合法来源通过其指定 IP 隧道注入流量。因此,反欺骗保护可确保隧道流量从指定隧道上的合法来源接收。

图 3 展示了具有反欺骗保护要求的示例拓扑。

图 3:基于下一跃点的动态隧道 Anti-Spoofing Protection for Next-Hop-Based Dynamic Tunnels的反欺骗保护

在此示例中,网关路由器是路由器 G。 路由器 G 有两个 VPN— 绿色和蓝色。服务器 A 和服务器 B 这两台服务器可分别通过基于下一跳跃的动态隧道 T1 和 T2 到达路由器 G 上的绿色和蓝色 VPN。连接到服务器的几台主机和虚拟机(P、Q、R、S 和 T)可以通过网关路由器、路由器 G 到达 VPN。路由器 G 具有绿色和蓝色 VPN 的虚拟路由和转发 (VRF) 表,每个表都填充了这些 VPN 中的虚拟机的可达性信息。

例如,在 VPN 绿色中,路由器 G 使用隧道 T1 到达主机 P,隧道 T2 到达主机 R 和 S,并且在隧道 T1 和 T2 之间进行负载平衡以到达多宿主机 Q。在 VPN Blue 中,路由器 G 使用隧道 T1 到达主机 P 和 R,并使用隧道 T2 到达主机 Q 和 T。

检查将通过反向路径转发::

  • 数据包来自其指定隧道上的合法来源。

    VPN 绿色主机 P 使用隧道 T1 将数据包发送至 X 主机。由于路由器 G 可通过隧道 T1 到达主机 P,因此允许数据包通过并将数据包转发至主机 X。

  • 数据包来自其指定隧道上的多宿主源。

    VPN 绿色主机 Q 在服务器 A 和 B 上是多宿主,可通过隧道 T1 和 T2 到达路由器 G。主机 Q 使用隧道 T1 发送一个数据包托管 Y,并将一个数据包发送至使用隧道 T2 托管 X 的数据包。由于路由器 G 可通过隧道 T1 和 T2 到达主机 Q,因此允许数据包分别传递并转发至主机 Y 和 X。

默认情况下,第 3 层 VPN 没有启用反欺骗保护。要为基于下一跳跃的动态隧道启用反欺骗,请在层次结构级别中[edit routing-instances routing-instance-name routing-options forwarding-table]包含ip-tunnel-rpf-check语句。反向路径转发检查仅应用于 VRF 路由实例。默认模式设置为strict,来自非设计隧道源的数据包不会通过检查。该ip-tunnel-rpf-check模式可以设置为loose,当数据包来自不存在源时,反向路径转发检查将发生故障。可在语句下ip-tunnel-rpf-check配置可选防火墙过滤器,以计数和记录出现反向路径转发检查故障的数据包。

以下样本输出显示反欺骗配置:

为基于下一跳跃的动态隧道配置反欺骗保护时,请注意以下准则:

  • 反欺骗保护只能针对 IPv4 隧道和 IPv4 数据流量启用。IPv6 隧道和 IPv6 数据流量不支持反欺骗功能。

  • 针对基于下一跳跃的动态隧道的防欺骗可以检测并防止遭到入侵的虚拟机(内部源反向路径转发检查),但不能检测和阻止正在被攻击的服务器。

  • 基于下一跳跃的 IP 隧道可以在 inet.0 路由表上发起并终止。

  • 当 VRF 路由实例具有标签交换接口 (LIS) (使用 vrf-table-label) 或虚拟隧道 (VT) 接口时,防欺骗保护是有效的。 per-next-hop VRF 路由实例上贴有标签,不支持反欺骗保护。

  • rpf fail-filter 适用于内部 IP 数据包。

  • 启用反欺骗检查不会影响设备上基于下一跳跃的动态隧道的扩展限制。

  • 为 VRF 路由实例启用了反欺骗保护的系统资源利用率略高于未启用反欺骗保护的基于下一跃点的动态隧道的利用率。

  • 反欺骗保护需要额外进行源 IP 地址检查,对网络性能的影响微乎其微。

  • 反欺骗保护支持平滑路由引擎切换 (GRES) 和不中断服务的软件升级 (ISSU)。

示例:为基于下一跃点的动态隧道配置反欺骗保护

此示例说明如何为虚拟路由和转发 (VRF) 路由实例配置反欺骗路径转发检查,以便为基于下一跳跃的动态隧道提供反欺骗保护。检查可确保合法来源通过其指定 IP 隧道注入流量。

要求

此示例使用以下硬件和软件组件:

  • 三个带 MIC 的 MX 系列路由器,每个都连接到主机设备。

  • 在一个或所有路由器上运行的 Junos OS 17.1 或更高版本。

开始之前:

  • 在灵活 PIC 集中器上启用通道服务配置。

  • 配置路由器接口。

  • 配置路由器 ID 并为路由器分配自治系统编号。

  • 与隧道端点建立内部 BGP (IBGP) 会话。

  • 在所有路由器上配置 RSVP。

  • 在所有路由器上配置 OSPF 或任何其他内部网关协议。

  • 在两个路由器之间配置两个基于下一跳跃的动态 IP 隧道。

  • 为每个路由器到主机连接配置 VRF 路由实例。

概述

从 Junos OS 版本 17.1 开始,反欺骗功能被添加到基于下一跳跃的动态 IP 隧道中,在该隧道中,将使用数据包转发引擎中的反向路径转发对通过隧道到路由实例的信息流执行检查。

目前,当网关路由器从隧道接收信息流时,仅在转发之前完成目标地址查找。借助反欺骗保护,网关路由器可对 VPN 中的封装数据包 IP 标头进行源地址查找,以确保合法源通过其指定 IP 隧道注入流量。这称为严格模式,是反欺骗保护的默认行为。要从非设计隧道传递信息流,反向路径转发检查在丢失模式下启用。对于从不存在源接收的信息流,在严格和松散模式下,反向路径转发检查均失败。

VRF 路由实例支持反欺骗。要为动态隧道启用反欺骗,请在层次结构级别中[edit routing-instances routing-instance-name routing-options forwarding-table]包含ip-tunnel-rpf-check语句。

拓扑

图 4 展示了启用了反欺骗保护的示例网络拓扑。路由器 R0、R1 和 R2 分别连接到主机 Host0、Host1 和 Host2。两个通用路由封装 (GRE) 基于下一跳跃的动态隧道,隧道 1 和隧道 2 – 分别将路由器 R0 与路由器 R1 和 R2 连接。VRF 路由实例在每个路由器及其连接的主机设备之间运行。

图 4:基于下一跃点的动态隧道 Anti-Spoofing Protection for Next-Hop-Based Dynamic Tunnels的反欺骗保护

例如,路由器 0 从路由器 R2 到基于下一跳跃的动态 GRE 隧道(隧道 2)在路由器 0 上接收三个数据包(数据包 A、B 和 C)。这些数据包的源 IP 地址为 172.17.0.2(数据包 A)、172.18.0.2(数据包 B) 和 172.20.0.2(数据包 C)。

数据包 A 和 B 的源 IP 地址分别属于主机 2 和主机 1。数据包 C 是一个不存在的源隧道。此示例中的指定隧道为隧道 2,非设计隧道为隧道 1。因此,数据包的处理方式如下:

  • Packet A— 由于来源来自指定隧道(隧道 2),数据包 A 会通过反向路径转发检查,并处理以进行通过隧道 2 的转发。

  • Packet B—由于源来自隧道 1(这是一个非指定隧道),因此默认情况下,Packet B 会在严格模式下出现反向路径转发检查故障。如果启用了松散模式,则允许数据包 B 进行转发。

  • Packet C—由于源是不存在的隧道源,数据包 C 会故障进行反向路径转发检查,并且数据包不会被转发。

配置

CLI 快速配置

要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,移除任何换行符,更改与网络配置匹配所需的任何详细信息,将命令复制并粘贴到层级的 CLI 中 [edit] ,然后从配置模式进入 commit

路由器 R0

路由器 R1

R 2

程序

逐步过程

以下示例要求您在配置层次结构中导航各个级别。有关导航 CLI 的信息,请参阅 CLI 用户指南中的配置模式下使用 CLI 编辑器

要配置路由器 R0:

  1. 配置路由器 R0 的接口,包括回传接口。

  2. 为路由器 R0 分配路由器 ID 和自治系统编号。

  3. 配置路由器之间的 IBGP 对等互连。

  4. 在路由器 R0 的所有接口(不包括管理接口)上配置 OSPF。

  5. 在路由器 R0 的所有接口(不包括管理接口)上配置 RSVP。

  6. 在路由器 R0 上启用基于下一跳跃的动态 GRE 隧道配置。

  7. 配置从路由器 R0 到路由器 R1 的动态 GRE 隧道参数。

  8. 配置从路由器 R0 到路由器 R2 的动态 GRE 隧道参数。

  9. 在路由器 R0 上配置虚拟路由和转发 (VRF) 路由实例,并将连接到主机 1 的接口分配给 VRF 实例。

  10. 为 VRF 路由实例配置与 Host 1 的外部 BGP 会话。

  11. 为路由器 R0 上的 VRF 路由实例配置反欺骗保护。这支持对路由器 0 上的基于下一跳跃的动态隧道 T1 和 T2 进行反向路径转发检查。

结果

在配置模式下,输入 show interfacesshow routing-optionsshow protocolsshow routing-options 命令以确认您的配置。如果输出未显示预期的配置,请重复此示例中的说明以更正配置。

验证

确认配置工作正常。

验证基本配置

目的

验证路由器 R0 和路由器 R1 和 R2 之间的 OSPF 和 BGP 对等状态。

行动

在操作模式下 show ospf neighbor ,运行 和 show bgp summary命令。

意义

OSPF 和 BGP 会话在路由器 R0、R1 和 R2 之间启动并运行。

验证动态隧道配置

目的

验证路由器 R0 和路由器 R1 和 R2 之间基于下一跳跃的动态 GRE 隧道的状态。

行动

在操作模式下,运行 和 show route table inet.3show dynamic-tunnels database terse 命令。

意义

两个基于下一跳跃的动态 GRE 隧道(隧道 1 和隧道 2)已开启。

验证反欺骗保护配置

目的

验证路由器 R0 上的 VRF 路由实例中是否已启用反向路径转发检查。

行动

在操作模式下,运行 show krt table VPN1.inet.0 detail

意义

配置的反向路径转发检查在严格模式的 VRF 路由实例上启用。

发布历史记录表
释放
描述
19.2R1
从 Junos 19.2R1 版开始,在带有 MPC 和 MIC 的 MX 系列路由器上,运营商支持运营商 (CSC) 架构可通过 MPLS-over-UDP 隧道部署,通过在支持运营商 PE 设备之间建立的动态 IPv4 UDP 隧道承载 MPLS 流量。
18.3R1
从 Junos OS 18.3R1 版开始,PTX 系列路由器和 QFX 系列交换机上支持 MPLS-over-UDP 隧道。
18.2R1
从 Junos OS 版本 18.2R1 开始,在带有单向 MPLS over-UDP 隧道的 PTX 系列路由器和 QFX10000 上,您必须为 MPLS-over-UDP 数据包配置远程 PE 设备,以及解封装 IP 和 UDP 标头以在反向隧道方向转发数据包的操作。
17.4R1
从 Junos OS 17.4R1 版开始,在 MX 系列路由器上,基于下一跳跃的动态 GRE 隧道使用 BGP 封装扩展社区发出信号。
17.4R1
从 Junos OS 版本 17.4R1 开始,在 MX 系列路由器上,基于下一跳跃的动态 MPLS-over-UDP 隧道使用 BGP 封装扩展社区发出信号。
17.1R1
从 Junos OS 17.1 版开始,在带有 MPC 和 MIC 的 MX 系列路由器上,基于下一跳跃的动态 GRE 隧道的扩展限制也随之增加。
17.1R1
从 Junos OS 17.1 版开始,在带有 MPC 和 MIC 的 MX 系列路由器上,MPLS-over-UDP 隧道的扩展限制有所提高。