Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

IPv6 的无状态源网络前缀转换

IPv6 的无状态源网络前缀转换概述

从 Junos OS 15.1 版开始,您可以在 IPv6 网络中配置源地址前缀的无状态转换(IPv6 到 IPv6)。具有支持内联 NAT 的 MPC 的 MX 系列路由器支持此功能。要为 IPv6 数据包 (NPTv6) 配置无状态网络前缀转换,请在层次结构级别包含[edit services nat rule rule-name term term-name then translated]translation-type nptv6语句。NPTv6 转换器转换源地址前缀,无需重新计算数据包的传输层校验和。NPTv6 定义了一种在内部和外部网络之间进行 IPv6 网络前缀转换的无状态方法。NPTv6 不会维护转换器中每个节点或每个流的状态。您可以使用该show services nat mappings nptv6 (internal | external)命令分别查看内部地址和外部地址的 NPTv6 的 NAT 映射。您还可以使用 和 show services inline nat pool 命令show services inline nat statistics显示有关配置了 NPTv6 的内联 NAT 的信息。

无状态源网络前缀转换的优势

  • 对于边缘网络,在以下情况下,无需为本地网络内用于接口、访问列表和系统日志记录消息的 IPv6 地址重新编号:

    • 边缘网络使用的全局前缀将发生更改。

    • 当站点添加、删除或更改上游网络时,IPv6 地址将在边缘网络内部或其他上游网络(如多宿主设备)中使用。

  • 边缘网络使用的 IPv6 地址不需要在上游网络中进行入口过滤,也不需要将其客户特定的前缀播发到上游网络。

  • 遍历转换功能的连接不会因 NPTv6 转换器重置或短暂中断而中断。

NPTv6

IPv6 网络前缀转换 (NPTv6) 定义了一种在内部和外部网络之间进行 IPv6 地址前缀转换的无状态方式。NPTv6 不会维护转换器中每个节点或每个流的状态。入站或出站数据包的地址映射不需要维护映射状态。无状态、与传输无关的 IPv6 到 IPv6 NPTv6 功能提供了与 IPv4 到 IPv4 NAT (NAPT44) 关联的地址独立性的优势,并在 内部外部 前缀中的地址之间提供 1:1 的关系,从而在网络层保持端到端可达性。在上游网络中,边缘网络使用的 IPv6 地址始终包含提供商分配的前缀。

NPTv6 旨在为边缘网络提供地址独立性,以实现内部地址稳定性,而不受其上游服务提供商网络的影响。但是,使用不进行转换的独立于提供商的地址可能会非常昂贵,因为路由表枚举了边缘网络,而不是枚举向边缘网络提供服务的中转域。这种现象会导致路由表庞大且难以管理。NPTv6 是一种有效且内聚地提供地址独立性的机制,无需向外部网络播发内部网络前缀。相比之下,IPv4 网络地址端口转换 (NAPT) (NAPT44) 的主要目标是解决 IPv4 地址枯竭问题,尽管它带来了地址独立性的相同优势。微内核中已经支持适用于 IPv6 的 NAPT,特别是 NAPT66。然而,与 NAPT44 类似,NAPT66 需要保留流态信息。NPTv6 提供了一种简单而精简的技术,以尽可能避免与 NAPT66 相关的限制。它被定义为包括双向、校验和中立和算法转换函数。

NPTv6 不会在转换器中维护节点、流或连接的状态信息。内部数据包到外部数据包和外部数据包到内部数据包会使用 IPv6 报头中的信息通过算法进行转换。由于其无状态特性,如果相同的两个网络之间存在多个 NPTv6 转换器,则负载可能会在它们之间转移或动态分担。此外,与 NAPT44 不同的是,由于映射可以在任一方向上完成,因此转换器不会干扰入站连接的建立。相反,防火墙可以与 NPTv6 转换器结合使用。与传统 NAT 相比,此行为为网络管理员提供了更灵活的设计来指定安全策略。

NPTv6 的另一个优点是校验和中立转换。转换器无需重写传输标头即可更新校验和,也不执行端口映射。因此,要部署新的传输层协议,无需修改转换器。由于传输层未经过修改,因此算法不会干扰 IP 有效负载的加密。尽管 NPTv6 在多个方面与 NAPT44 或 NAPT66 相比具有优势,但它并不能消除所有架构问题。由于 NPTv6 会修改数据包的 IP 报头,因此与 IPsec 身份验证报头等安全机制不兼容。使用单独的内部和外部前缀增加了域名系统 (DNS) 部署的复杂性。此外,那些需要应用层网关 (ALG) 才能通过 NAPT44 或 NAPT66 设备正常工作的应用程序可能需要类似的 ALG 才能通过 NPTv6 转换器工作。由于 NPTv6 不维护连接状态,因此转换器故障不会影响通过服务器的非发射功率控制 (TPC) 流量。TCP 连接可能会由于连接的源 IP 地址发生变化而中断。在这种情况下,连接可能会超时,然后重新建立。

NPTv6 使用内联 NAT。内联 NAT 使用模块化端口集中器 (MPC) 线卡的功能,无需为 NAT 使用多服务 DPC (MS-DPC)。要配置内联 NAT,请将服务接口定义为类型 si- (服务内联)接口。您还必须为内联接口预留足够的带宽。这样可以同时配置用于 NAT 的接口服务集和下一跃点服务集。该 si- 接口用作 虚拟服务 PIC

通过 IPv6 网络前缀转换实现功能互作

本主题包含以下部分,介绍使用无状态源 IPv6 前缀转换的不同功能的工作行为以及各种系统条件:

地址映射算法

NPTv6 转换器过滤传出网络的数据包,如果数据包的源地址与规则中定义的源地址(配置中的 或 源地址) from 匹配,则源地址将替换为为规则定义的池中的地址前缀。源地址前缀后接下来的 16 位将替换为校验和调整后的值,以确保即使源地址发生更改,校验和在传出数据包中也保持不变。在定义出网数据包的配置规则和池期间,将创建一个 denat 规则和池,用于转换进入网络的数据包的目的地址。

内部到外部转换

当数据包从内部网络发送到外部网络时,数据包源地址中的 IPv6 前缀(来自内部节点)将映射到外部前缀。校验和调整后,数据包将路由到外部网络。

外部到内部转换

当数据包从外部网络传入内部网络时,数据包目标地址(来自外部主机)中的 IPv6 前缀将映射到内部前缀。校验和调整后,数据包将路由到内部网络。

校验和中性转换

NPTv6 转换器转换源地址前缀,无需重新计算数据包的传输层校验和。如果校验和更改了校验和覆盖的部分区域,则可以通过对同一校验和覆盖的其他 16 位字段进行其他更改来予以纠正。此校验和中性方法首先计算 和 的 1 的补码校验和internal-prefixexternal-prefix

对于来自内部网络的数据包,调整计算为 1 的补码,计算方式如下:

调整 = 内部前缀校验和 – 外部前缀校验和。

调整值将添加到前缀后源地址的 16 位字中。

对于来自外部网络的数据包,调整是 1 的补码,计算如下:

调整 = 外部前缀校验和 – 内部前缀校验和。

调整将添加到已转换前缀后目标地址的 16 位字中。

多宿主

如果有两个 NPTv6 转换器对于相同的内部 IPv6 前缀具有不同的外部 IPv6 前缀配置,则这两个 NPTV6 转换器会将相同的内部 IPv6 网络前缀转换为两个不同的外部 IPv6 网络前缀,具体取决于数据包遍历的转换器。

发夹

当内部节点仅知道另一个内部节点的外部(即全局地址)时,它会使用该地址向该内部节点发送数据包。如果 NPTv6 转换器接收到此类数据包,则该数据包在进行源地址和目标地址转换后,将再次路由至内部网络。

负载平衡

当两个转换器具有相同的内部到外部映射配置,并且它们之间共享数据包负载时,即可实现负载共享。如何实现负载平衡超出了 NPTv6 的范围。

可以根据 IPv6 地址的子网 ID 部分实现均衡。可以有两个具有相同内部前缀到外部前缀映射的 SI逻辑接口。数据包会根据子网 ID 路由到其中一个逻辑接口。

用于 NPTv6 的 ICMPv6

NPTv6 未映射的六角形不支持生成 ICMPv6 错误。

配置无状态源网络前缀转换的准则

配置源 IPv6 前缀的无状态转换时,请记住以下几点:

本主题包含以下部分,介绍使用无状态源 IPv6 前缀转换的不同功能的工作行为以及各种系统条件:

  • 平滑路由引擎切换 (GRES) 支持与 NAT44 相同。

  • 不支持统一 ISSU 和不间断软件升级 (NSSU)。

  • NPTv6 部署支持从外部网络到内部节点的直接入站连接。这种机制会导致轻微的漏洞,因为它使内部节点容易受到来自外部的攻击。NPTv6 的无状态转换使得很难基于连接状态跟踪外部连接请求。这一行为使得 NAT44 网络能够得到很好的保护,抵御外部攻击。保护 NPTv6 转换器的最佳选择是在 NPTv6 转换器上方添加防火墙。

  • 第 6 个软线集中器与 NPTv6 互作。支持不需要应用层网关 (ALG) 更改有效负载中的源 IP 地址的所有其他机制。NPTv6 转换器支持 TCP、UDP、ICMP、SSH 和 Telnet。不支持要求 ALG 更改有效负载中的源 IP 地址的 FTP 和会话启动协议 (SIP)。

  • NPTv6 池在外部数据内存中分配。池数据结构由地址前缀、前缀长度和校验和组成。每条记录的大小为 192 位。对于每个池,都会自动分配一个 denat 池。变晶池的大小为 192 位。对于经过 NAT 处理和未转换的 NPTv6 池,总共分配了 8000 个 64 位条目。此分配来自分配给内联服务 (JNH_APP_INLINE_SVCS) 的 64,000 个条目。

  • 不支持用于 6rd 与 NPTv6 互作的内联服务链。

  • 配置 NPTv6 时,您需要配置源池并指定 from (源)地址。

  • 外部和内部前缀长度必须大于或等于 /16 子网掩码,小于或等于 /112 子网掩码。

  • 两个不同的内部前缀不能转换为同一个外部前缀。

  • NPTv6 不能应用于 IPSec 和互联网密钥交换 (IKE) 数据包。在这种情况下,NPTv6 转换器被绕过。

  • 由于转换是一个 IPv6 地址前缀,因此池中只有一个地址。如果用户配置了多个地址,系统不会引发任何错误,而是只选择池的第一个地址前缀进行转换。

  • 对于从内部网络发送到外部网络的数据包,如果内部子网未映射或设置为 0xFFFF,则数据报将被丢弃,并生成 ICMP 目标不可达错误。

  • 对于从内部网络到外部网络的数据包,如果 16 位字使用 1 的补码方法添加了调整并且等于 0xFFFF,则该值写为零。

  • 对于从外部网络到内部网络的数据包,如果 16 位字使用 1 的补码方法减去调整,并且等于 0xFFFF,则 16 位字将被覆盖为零。

  • 对于前缀 /48 或更短的转换,必须从 /48 子网掩码之后的前 16 位添加或减去调整,其值不0xFFFF。如果前缀为 /49 或更长,则必须从前 16 位(从 64 到 123)中添加或减去调整,其值不0xFFFF。

NPTv6 与接口样式和下一跳样式服务集的工作原理

目标是添加适用于 IPv6 的网络前缀转换 (NPTv6) 内联服务,用于对源 IPv6 地址执行无状态转换。考虑一个示例拓扑,其中 NPTv6 是在前缀为 FD01:0203:0405:/48 的内部网络和前缀为 2001:0DB8:0001:/48 的外部网络之间实现的。

从单个管理域(内部网络)发送到全局网络(外部网络)中主机的数据包中的源地址 FD01:0203:0405:/48 将转换为 2001:0DB8:0001:/48。来自外部网络的发往内部网络的数据包的目标地址为 2001:0DB8:0001:/48。此目标地址将映射到内部网络地址 FD01:0203:0405:/48,并将转发至内部网络主机。在这种情况下,假定两个子网的长度相同。如果它们不同,则较短的将通过后缀零扩展到较长的前缀长度。

用于 NPTv6 的地址映射算法是校验和中立的。转换后的 IP 报头将生成相同的 IPv6 伪报头校验和。校验和采用标准互联网校验和算法计算得出。在 IPv6 前缀转换期间所做的更改将被对 IPv6 地址的其他部分所做的计算更改所抵消。这会导致使用互联网校验和(如 TCP 和 UDP)的传输层为同一数据报的内部和外部形式计算相同的 IPv6 伪报头校验和,并且无需修改传输层标头即可更正校验和值。该算法可以映射入站数据包和出站数据包的地址。

NPTv6 转换器适用于分段数据包和启用了 IP 选项的数据包。NPTv6 所需的配置更改将在下一节中介绍。

通过定义逻辑服务接口、服务集和服务集规则来配置路由器以处理服务。它们定义了如何将服务应用于数据包。

用于静态 v4-v4 源地址内联 NAT 的内联服务逻辑接口 si-ifl 实施可重复用于内联 NPTv6。可以修改为 MS-DPC 实施的 NPTv6 配置以实现内联 NPTv6。服务集配置有两种类型:接口样式和下一跳样式。

对于下一跳样式服务,路由条目配置为将数据包引导至内联服务接口。在那里,数据包将通过服务规则。如果数据包与服务规则匹配,则会根据服务规则进行处理。对于接口样式服务,服务集直接配置在介质接口上,在流量离开和进入接口时对其产生影响。数据包由应用于介质接口的服务过滤器引导至内联服务接口。

示例:通过使用接口样式服务集在 IPv6 网络中配置无状态网络前缀转换,实现地址独立性

您可以在具有支持内联NAT的 MPC 的MX 系列路由器上配置 IPv6 网络中源地址前缀的无状态转换(IPv6 到 IPv6)。NPTv6 转换器转换源地址前缀,无需重新计算数据包的传输层校验和。NPTv6 定义了一种在内部和外部网络之间进行 IPv6 网络前缀转换的无状态方法。NPTv6 不会维护转换器中每个节点或每个流的状态。您可以使用该show services nat mappings nptv6 (internal | external)命令分别查看内部地址和外部地址的 NPTv6 的 NAT 映射。您还可以使用 和 show services inline nat pool 命令show services inline nat statistics显示有关配置了 NPTv6 的内联 NAT 的信息。

注意:

配备基于 Trio 的 FPC (MPC) 的 MX 系列路由器支持此功能。

此示例介绍如何在具有 MPC 的 MX 系列路由器上使用接口样式服务集为 IPv6 数据包配置无状态源前缀转换,并包含以下部分:

要求

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

  • 一台带有 MPC 的 MX 系列路由器。

  • 适用于 MX 系列路由器的 Junos OS 15.1R1 或更高版本

IPv6 网络中使用接口样式服务集的无状态网络前缀转换概述和拓扑

对于接口样式服务,服务集直接配置在介质接口上,在流量离开和进入接口时对其产生影响。数据包由应用于介质接口的服务过滤器引导至内联服务接口。

通过配置服务集定义对服务规则进行定义和分组后,您可以将服务应用于路由器上安装的一个或多个接口。将服务集应用于接口时,它会自动确保将数据包定向至 PIC。

考虑使用接口样式服务集配置 NPTv6 的示例配置方案。内联服务接口 si-0/1/0 配置了为每秒 10 千兆位保留的带宽。si-0/1/0 接口由 inet6 系列定义。NAT 地址池 nptv6_pool 配置了地址 abcd:ef12:3456::/48。在输入方向上应用 NAT 规则,以对从源地址 1234:5678:9abc::/48 到达的数据包执行 NPTv6 转换。对于源地址 1234:5678:9abc::/48 且符合 NAT 规则条件的数据包,将分配来自 NAT 地址池的地址。服务集 ss_nptv6 是使用 NAT 规则指定的。配置了千兆以太网接口 ge-5/0/0,并将服务集应用于此接口。

配置

要使用接口样式服务集为 IPv6 配置无状态网络前缀转换,请执行以下作:

CLI 快速配置

要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改详细信息,以便与网络配置匹配,然后将命令复制并粘贴到 [edit] 层级的 CLI 中:

配置接口

为要由服务集处理的流量配置接口

为服务内联 (si-) 接口配置带宽

配置 NAT 池和规则

配置服务集

过程

分步程序

下面的示例要求您在各个配置层级中进行导航。有关导航 CLI 的信息,请参阅 《CLI 用户指南》中的在配置模式下使用 CLI 编辑器

要使用接口样式服务集为 IPv6 配置无状态网络前缀转换:

  1. 配置内联服务 (si-) 接口。

  2. 为服务集要处理的流量配置接口。

  3. 配置服务内联 (si-) 接口的带宽。

  4. 配置 NAT 池和规则。

  5. 配置服务集

结果

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

验证

要确认配置工作正常,请执行以下作:

验证 NAT 池映射

目的

验证现有 NAT 地址池和 IPv6 网络前缀转换的映射。

行动

在作模式下,使用以下 show services nat mappings nptv6 命令:

意义

输出显示了 NAT 地址和端口之间的映射,用于外部和内部地址的 IPv6 无状态网络前缀转换。将显示最初使用 NAT 发送和转换的地址和端口详细信息。

验证内联 NAT 池和统计信息

目的

验证 IPv6 网络前缀转换的内联 NAT 池和统计信息。

行动

在作模式下,使用以下 show services inline nat 命令:

意义

输出显示有关内联 NAT 地址转换的信息,例如需要进行 NAT 处理的数据包数、未转换的数据包以及指定服务集和 si- 接口的转换错误的数据包。

示例:通过使用下一跳样式服务集在 IPv6 网络中配置无状态网络前缀转换,实现地址独立性

您可以在支持内联NAT的 MPC 的MX 系列路由器上配置 IPv6 网络中源地址前缀的无状态转换(IPv6 到 IPv6)。NPTv6 转换器转换源地址前缀,无需重新计算数据包的传输层校验和。NPTv6 定义了一种在内部和外部网络之间进行 IPv6 网络前缀转换的无状态方法。NPTv6 不在转换器中维护每个节点或每个流状态。您可以使用 show services nat mappings nptv6 (internal | external) 命令分别查看内部地址和外部地址的 NPTv6 NAT 映射。您还可以使用 show services inline nat statistics 和 show services inline nat pool 命令显示有关配置了 NPTv6 的内联 NAT 的信息。

注意:

配备基于 Trio 的 FPC (MPC) 的 MX 系列路由器支持此功能。

此示例介绍如何在具有 MPC 的 MX 系列路由器上使用下一跃点样式服务集为 IPv6 数据包配置无状态源前缀转换,并包含以下部分:

要求

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

  • 一台带有 MPC 的 MX 系列路由器。

  • 适用于 MX 系列路由器的 Junos OS 15.1R1 或更高版本

IPv6 网络中使用下一跳样式服务集的无状态网络前缀转换概述和拓扑

下一跳服务集是一种基于路由的应用特定服务的方法。只有发往特定下一跃点的数据包才会通过创建显式静态路由来提供服务。当需要将服务应用于整个虚拟专用网 (VPN) 路由和转发 (VRF) 表时,或者当路由决策确定需要执行服务时,此配置非常有用。

对于下一跳样式服务,路由条目配置为将数据包引导至内联服务接口。数据包通过服务规则进行验证。如果数据包与服务规则匹配,则根据服务规则进行处理。

考虑使用下一跳样式服务集配置 NPTv6 的示例配置方案。内联服务接口 si-0/1/0 配置了为每秒 10 千兆位保留的带宽。si-0/1/0 接口由 inet6 系列定义。NAT 地址池 nptv6_pool 配置了地址 abcd:ef12:3456::/48。在输入方向上应用 NAT 规则,以对从源地址 1234:5678:9abc::/48 到达的数据包执行 NPTv6 转换。对于源地址 1234:5678:9abc::/48 且符合 NAT 规则条件的数据包,将分配来自 NAT 地址池的地址。服务集配置为转发下一跃点,服务接口 si-0/1/0.1 与网络内应用的服务集相关联。用于内网的下一跳服务接口参数,以及与在网络外应用的服务集关联的 SI-/1/0.2 参数。服务集 ss_nptv6 是使用 NAT 规则指定的。服务接口域是为 si- 接口指定的,其中内部服务域配置为 si-0/1/0.1,外部服务域配置为 si-0/1/0.2。路由实例 inst1 配置为实例类型为 VRF 实例。接口 si-0/1/0.1 和接口 ge-5/0/0 与 inst1 相关联。内部和外部接口域与使用 inside-service-interface 和 outside-service-interface 语句指定的域匹配。系统会为 NAT 事件配置一个策略,其中包含拒绝所有数据包的作。

配置

要使用下一跃点样式服务集为 IPv6 配置无状态网络前缀转换,请执行以下作:

CLI 快速配置

要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改详细信息,以便与网络配置匹配,然后将命令复制并粘贴到 [edit] 层级的 CLI 中:

配置内联接口

为内联服务配置带宽

配置 NAT 池和规则

配置服务集

配置路由实例

配置策略和作修饰符

过程

分步程序

下面的示例要求您在各个配置层级中进行导航。有关导航 CLI 的信息,请参阅 《CLI 用户指南》中的在配置模式下使用 CLI 编辑器

要使用下一跳样式服务集为 IPv6 配置无状态网络前缀转换:

  1. 为 NAT 服务配置内联接口。

  2. 设置内联服务的带宽。

  3. 配置 NAT 池和规则。

  4. 使用与 NAT 池关联的 NAT 规则配置服务集。

  5. 配置使用配置的 si- 接口的路由实例。

  6. 为 NAT 数据包配置策略和作修饰符。

结果

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

验证

要确认配置工作正常,请执行以下作:

验证 NAT 池映射

目的

验证现有 NAT 地址池和 IPv6 网络前缀转换的映射。

行动

在作模式下,使用以下 show services nat mappings nptv6 命令:

意义

输出显示有关内联 NAT 地址转换的信息,例如需要进行 NAT 处理的数据包数、未转换的数据包以及指定服务集和 si- 接口的转换错误的数据包。

验证内联 NAT 池和统计信息

目的

验证 IPv6 网络前缀转换的内联 NAT 池和统计信息。

行动

在作模式下,使用以下 show services inline nat 命令:

意义

输出显示了 NAT 地址和端口之间的映射,用于外部和内部地址的 IPv6 无状态网络前缀转换。将显示最初使用 NAT 发送和转换的地址和端口详细信息。