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 版本开始,MS-MPC 和 MS-MIC 支持确定性 NAPT 44,Junos OS 14.2R7 和更高版本的 14.2 版本,以及 Junos OS 15.1R3 及更高版本的 15.1 版本。从 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 池/from 子句。

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

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

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

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

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

使用 translation-type deterministic-napt44 时,应至少配置一个非除 'from' 地址/范围。错误:配置签出失败

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

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

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

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

确定性 NAT 池不能与其他转换类型一起使用。此外,确定性 NAT 池不能同时用于确定性 NAPT44 和确定性 NAPT64 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 和更高版本的 14.2 版本以及 Junos OS 15.1R3 和更高版本的 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在层次结构级别上[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 版的版本,请在层次结构级别使用[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 选项,以便配置端口的顺序分配。