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 和更高版本以及 Junos OS 版 15.1R3 和更高版本 15.1R3 和更高版本开始,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 命令显示正向和反向映射。但是,如果重新配置确定性端口块分配块大小或 NAT 规则的 from 子句,映射将发生变化。为了提供有关映射的历史信息,我们建议您编写脚本来显示先前配置的特定映射。

确定的 NAPT 限制

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

表 1:确定的 NAPT 提交约束

限制

错误信息

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

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

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

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

已经配置了 v4 地址范围的范围

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

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

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

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

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

重叠地址,位于 'except' 条目之间的 'from' 子句中

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

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

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

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

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

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

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

转换类型 deterministic-napt44 不需要地址分配轮询

分配给确定性 NAT 池的 IP 地址总数应小于或等于 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 和更高版本以及 Junos OS 15.1R3 版和更高版本 15.1R3 和更高版本开始,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语句在[edit services nat pool nat-pool-name]层次结构级别提供的port automaticrandom-allocation 选项是互斥的。您可以包括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 规则

要为确定性 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 引入了该选项,使您能够配置端口的顺序分配。