在此页面上
确定性 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)。
算法用法 – 假设以下配置:
services { nat { pool src-pool { address-range low 32.32.32.1 high 32.32.32.254; port { automatic { random-allocation; } deterministic-block-allocation { block-size 249; } } } rule det-nat { match-direction input; term t1 { from { source-address { 10.1.0.0/16; } } then { translated { source-pool src-pool; translation-type { deterministic-napt44; } } } }
正向翻译
Pr_Offset = Pr_Prefix – Base_Pr_Prefix
Pr_Port_Offset = Pr_Offset * Block_Size
Rounded_Port_Range_Per_IP = ceil[(Nr_Addr_PR_Prefix/Nr_Addr_PU_Prefix)] * Block_Size
Pu_Prefix = Base_Public_Prefix + 楼层(Pr_Port_Offset / Rounded_Port_Range_Per_IP)
Pu_Start_Port = Pu_Port_Range_Start + (Pr_Port_Offset % Rounded_Port_Range_Per_IP)
使用示例配置并假设来自 10.1.1.250:5000 的订阅者流:
Pr_Offset = 10.1.1.250 – 10.1.0.1 = 505
Pr_Port_Offset = 505 * 249 = 125,745
Rounded_Port_Range_Per_IP = ceil[(65, 533/254)] * 249 = 259 * 249 = 64,491
Pu_Prefix = 32.32.32.1 + 底价 (125,745 /64,491) = 32.32.32.1 +1 =32.32.32.2
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 会随机分配其范围内的任何端口,因为指定了随机分配。
反向翻译
Pu_Offset = Pu_Prefix – Base_Pu_Prefix
Pu_Port_Offset = (Pu_Offset * Rounded_Port_Range_Per_IP) + (Pu_Actual_Port – Pu_Port_Range_Start)
Subscriber_IP = Base_Pr_Prefix + 楼层(Pu_Port_Offset / Block_Size)
反向翻译确定如下。假设流返回到 32.32.32.2:62278。
Pu_Offset = 32.32.32.2 – 32.32.32.1 = 1
Pu_Port_Offset = (1 * 64,491) + (62,280 - 1024) = 125,747
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 显示了这些限制及其错误消息。
限制 |
错误消息 |
---|---|
确定性 NAT 块的总数必须大于或等于配置的 |
NAT 池中的地址数和端口块组合数小于 'from' 子句中的地址数 |
IPv6 地址不应用于确定性 NAT 池/自子句。 |
池 p1 中转换类型为 deterministic-napt44 的无效 IP 地址 或 已有一个范围配置了 v4 地址范围 |
|
使用转换类型确定性 napt44,如果池由多个规则或术语共享,则应配置相同的“发件人”地址/范围 |
该 |
使用转换类型确定性 napt44,应至少配置一个非“发件人”地址/范围。错误:配置签出失败 |
子句地址中的 |
重叠地址,在“例外”条目之间的“发件人”子句中 |
用于确定性 NAPT 的 NAT 池中的地址不应与任何其他 NAT 池中的地址重叠。 |
NAT 池 det-nat-pool1 与服务集使用的 det-nat-pool 重叠 sset_det-nat 错误:配置检出失败 |
确定性 NAT 池不能与其他转换类型一起使用。此外,确定性 NAT 池不能同时用于确定性 NAPT44 和确定性 NAPT64 NAT 规则。 |
确定性 NAT 池不能与其他转换类型一起使用 |
确定性 NAPT44 必须使用具有确定性端口块分配配置的源池。 |
确定性 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 池,请执行以下操作:
参见
为确定性 NAPT 配置 NAT 规则
要为确定性 NAPT 配置 NAT 规则,请执行以下操作:
为确定性 NAT 配置服务集
要为确定性 NAPT 配置服务集,请执行以下操作:
更改历史记录表
功能支持由您使用的平台和版本决定。使用功能资源管理器确定您的平台是否支持某个 功能 。
sequential
选项,使您能够配置端口的顺序分配。