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 系列路由器支持确定性 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。

如果确定性 NAPT 规则子句中的 from 源地址没有前缀 /32,则除非配置 include-boundary-addresses

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

确定性 NAPT 的优势

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

了解确定性 NAPT 算法

实现确定性 NAPT 的有效性取决于您对订阅者需求的分析。您提供的块大小指示在适用的 NAT 规则中指定的子句中 from ,将为每个传入订阅者地址提供多少端口。分配算法计算偏移值以确定传出 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)])

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

  • Base_PR_Prefix — NAT 规则子句中 from 第一个可用的 NAT 前 IPv4 订阅者地址。

  • Base_PU_Prefix — 在 NAT 池中配置的第一个可用的 NAT 后 IPv4 订阅者地址。

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

  • Pr_Offset — 在 NAT 规则的子句中 from ,从第一个可用的 NAT 前 IPv4 订阅者地址转换的前 NAT IP 地址的偏移量。PR_Offset = Pr_Prefix – Base_Pr_Prefix。

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

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

  • Pu_Start_Port — 来自给定Pr_Prefix的流的 NAT 后启动端口

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

  • Nr_Addr_PR_Prefix — NAT规则子句中 from 可用的NAT前IPv4订阅者地址数。

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

  • Rounded_Port_Range_Per_IP — 每个NAT后IP地址可用的端口数。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-hostshow services nat deterministic-nat nat-port-block 命令显示正向和反向映射。但是,如果重新配置确定性端口块分配块大小或 from NAT 规则的子句,映射将更改。为了提供有关映射的历史信息,我们建议您编写可以显示先前配置的特定映射的脚本。

确定性 NAPT 限制

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

表 1:确定性 NAPT 提交约束

限制

错误消息

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

NAT 池中的地址数和端口块组合数小于 'from' 子句中的地址数

IPv6 地址不应用于确定性 NAT 池/自子句。

池 p1 中转换类型为 deterministic-napt44 的无效 IP 地址

已有一个范围配置了 v4 地址范围

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

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

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

使用转换类型确定性 napt44,应至少配置一个非“发件人”地址/范围。错误:配置签出失败

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

重叠地址,在“例外”条目之间的“发件人”子句中

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

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

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

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

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

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

如果配置了,则 address-allocation round-robin 提交会导致显示警告,指示转换类型确定性 napt44 不需要此技术,因此将被忽略。

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

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

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

配置确定性 NAPT

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

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

为确定性 NAPT 配置 NAT 池

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

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

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

    从 Junos OS 14.2R1 版开始,引入了该sequential选项,使您能够配置端口的顺序分配。sequential语句在port automatic层次结构级别可用的 [edit services nat pool nat-pool-name]random-allocation 选项是互斥的。您可以包括sequential顺序分配选项和random-allocation随机委派端口选项。缺省情况下,如果在层次结构级别仅[edit services nat pool nat-pool- name]包含port automatic语句,则会按顺序分配端口。

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

  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 规则

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

  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
从 Junos OS 版本 17.3R1 开始,MS-MPC 和 MS-MIC 支持确定性 NAPT 44
17.3R1
从 Junos OS 版本 17.3R1 开始,MS-MPC 和 MS-MIC 支持确定性 NAPT44
14.2R1
从 Junos OS 14.2R1 版开始,引入了该 sequential 选项,使您能够配置端口的顺序分配。