Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

确定性NAT

确定性 NAPT 概述

您可以配置确定性 NAPT44,确保原始源 IPv4 地址和端口始终映射到相同的 NAT 后 IPv4 地址和端口范围,并且给定已转换外部 IPv4 地址和端口的反向映射始终映射到相同的内部 IPv4 地址。您可以配置确定性 NAPT64,确保原始源 IPv6 地址和端口始终映射到相同的 NAT 后 IPv4 地址和端口范围,并且给定已转换外部 IPv4 地址和端口的反向映射始终映射到相同的内部 IPv6 地址。确定性 NAPT 使用基于算法的目标端口块分配。

具有 MS-DPC 的 MX 系列路由器和具有 MS-100、MS-400 和 MS-500 多服务 PIC 的 M Series 路由器上支持确定性 NAPT44。从 Junos OS 版本 17.3R1 开始、Junos OS 版本 14.2R7 和更高版本 14.2 以及 Junos OS 版本 15.1R3 和更高版本 15.1 中,MS-MPC 和 MS-MIC 支持确定性 NAPT 44。从Junos OS版本17.4R1,MS-MPC 和 MS-MIC 上支持确定性 NAPT64。

from如果确定性 NAPT 规则 语句中的源地址没有 /32 的前缀,则源地址范围的网络和广播地址将未经转换,除非您配置 include-boundary-addresses

有关如何配置确定性 NAPT 的详细信息,请参阅 配置确定性 NAPT

确定性 NAPT 的好处

  • 由于 IP 地址始终映射到相同的外部 IP 地址和端口范围,因此无需地址转换日志记录,并且给定已转换外部 IP 地址和端口的反向映射始终映射到相同的内部 IP 地址。

了解确定性 NAPT 算法

确定 NAPT 实施的有效性取决于对订阅者需求的分析。您提供的块大小表示每个 from 传入订阅者地址的可用端口数(从适用规则中指定语句NAT数。分配算法计算一个偏差值,以确定传出 IP 地址和端口。反向算法用于获取发起用户地址。

注意:

为了在不使用日志的情况下跟踪订阅者,ISP 必须使用反向算法从转换的地址获取订阅者(源)地址。

以下变量用于向前计算(专用用户 IP 地址到公共 IP 地址)和反向计算(公共 IP 地址到专用用户 IP 地址):

  • Pr_Prefix — 任何预NAT IPv4 用户地址。

  • Pr_Port — 任何预NAT协议端口。

  • Block_Size — 配置为可用于每个端口的端口Pr_Prefix。

    如果 block-size 配置为零,则计算块大小的方法计算如下:

    块大小 = int(64512/ceil[(Nr_Addr_PR_Prefix/Nr_Addr_PU_Prefix)])

    其中每个公共 IP 地址的最大可用端口范围为 64512。

  • Base_PR_Prefix — 第一个NAT规则语句中的 IPv4 用户 from 地址预NAT地址。

  • Base_PU_Prefix — 在 NAT池中配置的第一个可用 IPv4 用户NAT地址。

  • Pu_Port_Range_Start — 第一个可用后NAT端口。这是 1024

  • Pr_Offset NAT - 正在从 NAT 规则语句的第一个可用 NAT IPv4 from 订阅者地址转换的预转换 IP 地址NAT的偏差。PR_Offset = Pr_Prefix – Base_Pr_Prefix。

  • PR_Port_Offset — 前 IP 地址的NAT乘以块大小。PR_Port_Offset = Pr_Offset * Block_Size。

  • Pu_Prefix — 给定NAT的后地址Pr_Prefix。

  • Pu_Start_Port — NAT流后启动端口Pr_Prefix

  • Pu_Actual_Port — 在反向NAT上的后端口。

  • Nr_Addr_PR_Prefix — 服务规则语句NAT可用 IPv4 from 订阅者地址的可用NAT数。

  • Nr_Addr_PU_Prefix — 在 NAT池中配置的可用 IPv4 地址NAT数。

  • Rounded_Port_Range_Per_IP — 每个 IP 地址的可用NAT数。Rounded_Port_Range_Per_IP = ceil[(Nr_Addr_PR_Prefix/Nr_Addr_PU_Prefix)] * Block_Size。

  • Pu_Offset — 从第一个可用后NAT地址的后 IP 地址NAT偏差。Pu_Offset = Pu_Prefix – Base_Pu_Prefix。

  • Pu_Port_Offset— 将后 NAT 端口与 1024 后端口的偏差添加到产品后 NAT IP 地址的偏差以及每个后NAT IP 地址的可用端口数。Pu_Port_Offset = (Pu_Offset * Rounded_Port_Range_Per_IP) + (Pu_Actual_Port – Pu_Port_Range_Start)。

算法用法 – 采用以下配置:

前向转换

  1. Pr_Offset = Pr_Prefix – Base_Pr_Prefix

  2. Pr_Port_Offset = Pr_Offset * Block_Size

  3. Rounded_Port_Range_Per_IP = ceil[(Nr_Addr_PR_Prefix/Nr_Addr_PU_Prefix)] * Block_Size

  4. Pu_Prefix = Base_Public_Prefix + 楼层(Pr_Port_Offset/Rounded_Port_Range_Per_IP)

  5. Pu_Start_Port = Pu_Port_Range_Start + (Pr_Port_Offset % Rounded_Port_Range_Per_IP)

使用示例配置并假设订阅者流来源为 10.1.1.250:5000:

  1. Pr_Offset = 10.1.1.250 – 10.1.0.1 = 505

  2. Pr_Port_Offset = 505 * 249 = 125,745

  3. Rounded_Port_Range_Per_IP = ceil[(65,533/254)] * 249 = 259 * 249 = 64,491

  4. Pu_Prefix = 32.32.32.1 + 地板(125,745 /64,491) = 32.32.32.1 +1 =32.32.32.2

  5. Pu_Start_Port = 1,024 + (125,745 % 64,491) = 62278

    • 10.1.1.250 转换为 32.32.32.2。

    • 开始端口为 62278。根据配置的块大小,订阅者可以使用 249 个端口。可用端口范围涵盖端口 62278 到 62526(含)。

    • 由于指定了随机分配,因此特定流 10.1.1.250:5000 将随机分配其范围内的任何端口。

反向转换

  1. Pu_Offset = Pu_Prefix – Base_Pu_Prefix

  2. Pu_Port_Offset = (Pu_Offset * Rounded_Port_Range_Per_IP) + (Pu_Actual_Port – Pu_Port_Range_Start)

  3. Subscriber_IP = Base_Pr_Prefix + 楼层(Pu_Port_Offset/Block_Size)

反向转换的确定方式如下。假设一个流返回 32.32.32.2:62278。

  1. Pu_Offset = 32.32.32.2 – 32.32.32.1 = 1

  2. Pu_Port_Offset = (1 * 64,491) + (62,280 - 1024) = 125,747

  3. Subscriber_IP = 10.1.0.1 + 地板(125,747 / 249) = 10.1.0.1 + 505 = 10.1.1.250

    注意:

    反向转换中,只能派生原始专用 IP 地址,而不是使用中的原始端口。这已足够细粒度地满足执法要求。

配置确定性 NAPT show services nat deterministic-nat internal-host 后,您可以使用 和 show services nat deterministic-nat nat-port-block 命令显示向前和反向映射。但是,如果重新配置确定性端口块分配 from 块大小或该规则中的 语句,映射NAT更改。为了提供有关映射的历史信息,我们建议您编写可显示先前配置的特定映射的脚本。

确定性 NAPT 限制

配置确定性 NAPT 时,必须注意以下限制。违反任何限制会导致提交错误。限制及其错误消息如表 1 所示

表 1:确定 NAPT 提交约束

限制

错误消息

确定性组块的NAT必须大于或等于配置的 from 语句地址。这意味着,Rounded_Port_Range_Per_IP值必须小于或等于 64,512。

"from"语句中NAT地址和端口块组合的地址数小于

IPv6 地址不应用于确定性池/NAT语句中。

具有转换类型确定-napt44 的池 p1 中的无效 IP 地址

已配置了一系列 v4 地址范围

如果 from 跨多个术语/规则使用相同的确定性NAT池,则语句地址应相同。如果跨 from 多个术语/规则使用同一个确定性NAT池,则仅应指定一个语句 address/range。

如果由多个规则或术语共享池,则使用转换类型的确定性 napt44,应该配置相同的"from"地址/范围

语句 from 必须至少具有一个源地址。

使用转换类型确定性 napt44,至少应配置一个非非(从)地址/范围。错误:配置检查失败

语句地址中的 except 条目之间不应有 from 地址重叠。

重叠地址,在"除"条目之间的"from"语句中

用于确定 NAPT 的NAT池的地址不应与任何其他服务池中的地址NAT重叠。

NAT池 det-nat-pool1 与服务集使用的 det-nat 池重叠 sset_det-nat 错误:配置检查失败

确定性NAT池不能与其他转换类型一起使用。此外,确定性安全NAT可用于确定性 NAPT44 和确定性 NAPT64 规则NAT。

确定性NAT池不能与其他转换类型一起使用

确定性 NAPT44 必须使用具有确定性端口块分配配置的源池。

确定性 NAPT44 必须使用具有确定性端口块分配配置的源池

如果 address-allocation round-robin 配置了提交,则显示警告,表示转换类型确定性 napt44 不需要此技术并忽略。

转换类型确定性 napt44 不需要地址分配轮询

分配给确定性安全池的 IP 地址总数应小于或NAT 224 (16777216)。

具有确定性 napt44 转换的池中的地址数量最多限于16777216 (2^24)

配置确定性 NAPT

具有 MS-DPC 的 MX 系列路由器和具有 MS-100、MS-400 和 MS-500 多服务 PIC 的 M Series 路由器上支持确定性 NAPT44。从 Junos OS 版本 17.3R1 开始、Junos OS 版本 14.2R7 和更高版本 14.2 以及 Junos OS 版本 15.1R3 和更高版本 15.1 中,MS-MPC 和 MS-MI44 支持确定性 NAPT44。从Junos OS版本17.4R1,MS-MPC 和 MS-MIC 上支持确定性 NAPT64。

要配置确定性 NAPT,请执行以下操作:

配置NAT池以用于确定 NAPT

要配置NAT确定 NAPT 的组池:

  1. [edit services nat pool poolname]在 层次结构级别,创建一个池。
  2. 定义要转换的地址范围,指定范围或描述范围的地址前缀的上限和较低限制。

  3. 要配置自动端口分配,请指定顺序或随机分配。
    注意:

    从Junos OS版本14.2R1,sequential将引入 选项以使您能够配置端口的连续分配。random-allocation语句sequential在 层次结构port automatic级别中提供的 和 [edit services nat pool nat-pool-name] 选项相互排斥。您可包含顺序sequential分配选项和random-allocation端口随机授权选项。默认情况下,如果仅包含 port automatic 层次结构级别的 语句,将进行端口[edit services nat pool nat-pool- name]连续分配。

    对于版本低于 Junos OS 版本14.2R1, auto 使用 层级的选项配置自动顺序 [edit services nat pool nat-pool-name port automatic] 端口分配。

  4. 要配置要分配的端口范围,请指定端口的低值和高值。如果未配置自动端口分配,则必须配置一系列的端口。
    注意:

    如果指定要分配的端口范围,语句 automatic 将被忽略。

  5. 配置确定性端口块分配。指定 块大小 或接受 512 的默认值。

    include-boundary-addresses您还可以指定在使用 NAT 池时,是否希望转换 NAT 规则源地址范围中最低和最高的地址(网络和广播地址)。如果源地址的前缀为 /32,则会自动转换最低和最高的地址。

    例如:

    注意:

    为了让配置 deterministic-port-block-allocation 更改生效,只要更改以下任一选项,都必须重新启动服务 nat pool PIC:

    • addressaddress-range

    • port range

    • port deterministic-port-block-allocation block-size

配置确定性 NAPT NAT规则

要配置确定NAT NAPT 的一般规则:

  1. 配置NAT规则名称。
  2. 将NAT匹配方向配置为输入。
  3. 指定通过规则转换NAT地址。

    要指定一个地址:

    要指定地址范围:

  4. 指定包含NAT信息流地址的组池。
  5. 将转换类型配置为确定性 NAPT44 或确定性 NAPT64。

配置服务集以确定NAT

要配置确定 NAPT 的服务集:

  1. 定义服务集。
  2. 配置需要单个服务接口的接口服务,或需要内外服务接口的下一跳跃服务。

  3. 指定NAT集使用的组规则或规则集。
版本历史记录表
释放
描述
17.4R1
从Junos OS版本17.4R1,MS-MPC 和 MS-MIC 上支持确定性 NAPT64。
17.4R1
从Junos OS版本17.4R1,MS-MPC 和 MS-MIC 上支持确定性 NAPT64。
17.3R1
从版本 1 开始,MS-MPC 和 MS-MIC 支持确定性 NAPT 44 Junos OS 17.3R1。
17.3R1
MS-MPC 和 MS-MIC 支持确定性 NAPT44,从版本 1 开始Junos OS NAPT44 17.3R1
14.2R1
从Junos OS版本14.2R1,将引入一个连续选项来使您能够配置端口的连续分配。