NAT 配置概述
网络地址转换配置概述
要配置网络地址转换 (NAT),请完成以下高级步骤:
- 配置源地址和目标地址。有关更多信息,请参阅 配置源地址和目标地址网络地址转换概述。
- 定义用于 NAT 的地址或前缀、地址范围和端口。有关更多信息,请参阅 配置网络地址转换的地址池和端口概述
- 如果适用,请为网络地址端口转换 (NAPT) 配置地址池。有关更多信息,请参阅 为网络地址端口转换配置地址池 (NAPT) 概述。
- 配置 NAT 规则。在规则中,包括匹配方向、匹配条件、作和转换类型。有关更多信息,请参阅 网络地址转换规则概述。
- 配置用于 NAT 处理的服务集。在每个服务集中,定义用于处理入站和出站流量的接口以及 NAT 规则或规则集。有关更多信息,请参阅 配置网络地址转换服务集。
另见
配置源地址和目标地址 网络地址转换概述
您必须配置特定地址、前缀或地址范围边界:
以下地址虽然在 中
inet.0
有效,但不能用于 NAT 转换:0.0.0.0/32
127.0.0.0/8(环路)
128.0.0.0/16(火星人)
191.255.0.0/16(火星人)
192.0.0.0/24(火星人)
223.255.255.0/24(火星人)
224.0.0.0/4(组播)
240.0.0.0/4(保留)
255.255.255.255(广播)
在
inet.0
路由表中指定为有效但不支持 NAT 转换的地址是orlonger
匹配过滤器类型。您无法在 NAT 池中指定此类地址前缀内的任何区域。在具有 MS-MPC 和 MS-MIC 的 MX 系列路由器上,如果配置的前缀长度等于或大于 /16 的 NAT 地址池,则 PIC 不包含足够的内存来配置配置的池。此外,如果尝试配置许多池的总 IP 地址数超过 /16,则可能会出现内存利用率问题。在这种情况下,将生成一条系统日志记录消息,指出无法创建 NAT 池名称,并且服务集未激活。在 MS-MPC 和 MS-MIC 上,不得配置前缀长度大于或等于 /16 的 NAT 池。
您可以在语句和 NAT 规则术语的子句中
from
指定一个或多个 IPv4 地址前缀pool
。这样,您就可以配置从私有子网到公有子网的源转换,而无需为子网中的每个地址定义规则术语。此方法无法配置目标转换。更多信息,请参阅配置 NAT 规则示例。配置静态源 NAT 时,在
[edit services nat pool pool-name]
层级配置的前address
缀大小必须大source-address
于在[edit services nat rule rule-name term term-name from]
层级配置的前缀范围。source-address
前缀范围还必须映射到语句中的pool
单个子网或 IPv4 或 IPv6 地址范围。前缀范围未使用source-address
的任何池地址都将保持未使用状态。池不能共享。在 [
edit services nat pool nat-pool-name
] 层次结构级别使用address
语句配置 NAT 地址池前缀大小时,可用 IP 地址列表中不包括子网地址和广播地址。例如,如果address 10.11.12.0/28
在 NAT 池中使用,则地址 10.11.12.0(子网地址)和 10.11.12.15(广播地址)不可用。
当您包含可更改 IP 地址的 NAT 配置时,它可能会影响路由器配置中其他位置的转发路径功能,例如源类用法 (SCU)、目标类用法 (DCU)、基于过滤器的转发或面向特定 IP 地址或前缀的其他功能。
NAT 配置也可能影响路由协议作,因为当路由协议数据包通过自适应服务 (AS) 或多服务 PIC 时,协议对等、邻接方和接口地址可能会被更改。
另见
配置地址池和端口以进行网络地址转换概述
配置 NAT 池
您可以使用语pool
句定义用于网络地址转换 (NAT) 的地址(或前缀)、地址范围和端口。要配置信息,请在[edit services nat]
层次结构级别包含pool
语句。
从 Junos OS 14.2 版开始,按如下方式配置 NAT 池。从 Junos OS 16.1 版开始, limit-ports-per-address
该语句受支持。
[edit services nat] pool nat-pool-name { address ip-prefix</prefix-length>; address-range low minimum-value high maximum-value; limit-ports-per-address number; port { automatic (sequential | random-allocation); range low minimum-value high maximum-value random-allocation; preserve-parity; preserve-range { } }
在 Junos OS 14.1 及更低版本中,按如下方式配置 NAT 池:
[edit services nat] pool nat-pool-name { address ip-prefix</prefix-length>; address-range low minimum-value high maximum-value; port (automatic | range low minimum-value high maximum-value); preserve-parity; preserve-range { } }
要为传统 NAT 配置池,请指定目标池或源池。
使用静态源 NAT 和动态源 NAT,您可以指定多个 IPv4 地址(或前缀)和 IPv4 地址范围。单个池最多可支持 32 个前缀或地址范围(或组合)。
使用静态目标 NAT,您还可以在单个术语中指定多个地址前缀和地址范围。多个目标 NAT 术语可以共享一个目标 NAT 池。但是,地址的 from
网络掩码或范围必须小于或等于目标池地址的网络掩码或范围。如果将池定义为大于所需大小,则不会使用某些地址。例如,如果将池大小定义为 100 个地址,而规则仅指定 80 个地址,则不会使用池中的最后 20 个地址。
有关特定转换类型的约束,请参阅 网络地址转换规则概述。
使用源静态 NAT,前缀和地址范围不能在单独的池之间重叠。
在地址范围内, low
该值必须小于该 high
值的数字。配置多个地址范围和前缀时,将首先耗尽前缀,然后耗尽地址范围。
为动态源 NAT 指定端口时,地址范围限制为最多 65,000 个地址,总计 (65,000 x 65,535) 或 4,259,775,000 个流。不带地址端口转换的动态 NAT 池支持多达 65,535 个地址。静态源 NAT 的池大小没有限制。
保持射程并保持奇偶校验
您可以将运营商等级 NAT (CGN) 配置为在为出站连接分配源端口时保留数据包源端口的范围或奇偶校验。您可以通过在[edit services nat pool poolname port]
层次结构级别包含preserve-range
和 preserve-parity
配置语句,在 NAT 池定义下配置保留奇偶校验和保留范围选项。
具有 MS-DPC 的 MX 系列路由器以及具有 MS-100、MS-400 和 MS-500 多服务 PIC 的 M Series 路由器支持保持范围和保持奇偶校验。从 Junos OS 15.1R1 版开始,配备 MS-MPC 和 MS-MIC 的 MX 系列路由器支持保留范围和保持奇偶校验。
保留范围 - RFC 4787, 单播 UDP 的网络地址转换 (NAT) 行为要求,定义了两个范围:0 到 1023 和 1024 到 65,535。
preserve-range
当配置了旋钮且传入端口属于这些范围之一时,CGN 仅从该范围内分配一个端口。但是,如果范围内没有可用端口,则端口分配请求将失败,并且不会创建该会话。故障反映在计数器和系统日志记录上,但不会生成 Internet 控制消息协议 (ICMP) 消息。如果未配置此旋钮,则分配基于配置的端口范围,而不考虑包含传入端口的端口范围。例外情况是某些具有特殊区域的应用级网关 (ALG),例如 hello。保留奇偶校验 — 配置旋钮后
preserve-parity
,重庆网络将分配一个与传入端口具有相同或奇数奇偶校验的端口。如果传入端口号为奇数或偶数,则传出端口号应相应为奇数或偶数。如果所需奇偶校验的端口号不可用,则端口分配请求将失败,不会创建会话,并且数据包将被丢弃。
在不配置池的情况下指定目标和源前缀
您可以直接指定 NAT 中使用的目标或源前缀,而无需配置池。
要配置信息,请在[edit services nat]
层次结构级别包含rule
语句:
[edit services nat] rule rule-name { term term-name { then { translated { destination-prefix prefix; } } } }
网络地址转换规则概述
要配置 NAT 规则,请在[edit services nat]
层次结构级别包含语rule
rule-name
句:
[edit services nat] allow-overlapping-nat-pools ; apply-groups; apply-groups-except; pool pool-name; port-forwarding port-forwarding-name; rule rule-name { match-direction (input | output); term term-name { from { application-sets set-name; applications [ application-names ]; destination-address (address | any-unicast) <except>; destination-address-range low minimum-value high maximum-value <except>; destination-prefix-list list-name <except>; source-address (address | any-unicast) <except>; source-address-range low minimum-value high maximum-value <except>; source-prefix-list list-name <except>; } then { no-translation; translated { address-pooling paired; clat-prefix clat-prefix; destination-pool nat-pool-name; destination-prefix destination-prefix; dns-alg-pool dns-alg-pool; dns-alg-prefix dns-alg-prefix; filtering-type endpoint-independent; mapping-type endpoint-independent; overload-pool overload-pool-name; overload-prefix overload-prefix; source-pool nat-pool-name; source-prefix source-prefix; translation-type { (basic-nat-pt | basic-nat44 | basic-nat66 | dnat-44 | dynamic-nat44 | napt-44 | napt-66 | napt-pt | stateful-nat464 | stateful-nat64 | twice-basic-nat-44 | twice-dynamic-nat-44 | twice-napt-44); } } syslog; } } }
每个规则都必须包含一个 match-direction
语句,用于指定应用匹配的方向。
ACX 系列路由器仅 input 支持作为匹配方向。
此外,每个 NAT 规则都由一组术语组成,类似于 防火墙过滤器。术语由以下内容组成:
from
语句 - 指定包含和排除的匹配条件和应用程序。then
语句 — 指定路由器软件要执行的作和作修饰符。
以下部分介绍了 NAT 的组件如何规则:
配置 NAT 规则的匹配方向
每个规则都必须包含一个match-direction
语句,用于指定应用匹配的方向。要配置应用匹配的位置,请在[edit services nat rule rule-name]
层次结构级别包含语match-direction
句:
[edit services nat rule rule-name] match-direction (input | output);
匹配方向用于通过多服务 DPC 和多服务 PIC 的流量。将数据包发送到 PIC 时,会随身携带方向信息。数据包方向是根据以下条件确定的:
对于接口服务集,数据包的方向由数据包是进入还是离开应用服务集的接口决定。
使用下一跳服务集时,数据包的方向由用于将数据包路由到多服务 DPC 或多服务 PIC 的接口决定。如果使用内部接口路由数据包,则输入数据包方向。如果使用外部接口将数据包定向到 PIC 或 DPC,则输出数据包方向。有关内部和外部接口的详细信息,请参阅 配置要应用于服务接口的服务集。
在多服务 DPC 和多服务 PIC 上,将执行流查找。如果未找到流,则执行规则处理。将考虑服务集中的所有规则。在规则处理期间,系统会将数据包方向与规则方向进行比较。仅考虑方向信息与数据包方向匹配的规则。
在 NAT 规则中配置匹配条件
要配置 NAT 匹配条件,请在[edit services nat rule rule-name term term-name]
层次结构级别包含语from
句:
[edit services nat rule rule-name term term-name] from { application-sets set-name; applications [ application-names ]; destination-address (address | any-unicast) <except>; destination-address-range low minimum-value high maximum-value <except>; destination-prefix-list list-name <except>; source-address (address | any-unicast) <except>; source-address-range low minimum-value high maximum-value <except>; source-prefix-list list-name <except>; }
要配置传统 NAT,您可以使用目标地址、目标地址范围、源地址或源地址范围作为匹配条件,就像配置防火墙过滤器一样;有关更多信息,请参阅 《路由策略、防火墙过滤器和流量监管器用户指南》。
或者,您可以通过在[edit policy-options]
层次结构级别包含语句,然后在 NAT 规则中包含 prefix-list
destination-prefix-list
或 source-prefix-list
语句来指定源前缀或目标前缀的列表。有关示例,请参阅配置有状态防火墙规则。
translation-type
如果 NAT 规则语then
句中的语句设置为 stateful-nat-64,则语句中的 或 destination-prefix-list
from
指定的destination-address-range
范围必须在语句中then
语句指定的destination-prefix
范围内。
如果 NAT 规则中至少有一个 NAT 术语启用了地址池配对 (APP) 功能(通过在[edit services nat rule rule-name term term-name then translated]
层次结构级别包含该address-pooling
语句,则 NAT 规则中所有其他术语如果使用与启用了 APP 的术语的地址池相同的 NAT 地址池,则必须启用 APP。否则,如果在未启用 APP 的情况下将 NAT 规则术语添加到包含其他启用了 APP 的术语的规则中,则该 NAT 规则中所有启用了 APP 的术语都会丢弃与 NAT 规则中指定条件匹配的流量。
对于具有 MS-MIC 和 MS-MPC 的 MX 系列路由器,尽管地址池配对 (APP) 功能是在 NAT 规则中启用的(通过在[edit services nat rule rule-name term term-name then translated]
层次结构级别包含address-pooling
语句),但这是 NAT 池的一个特征。此类启用了 APP 的 NAT 池无法与未配置 APP 的 NAT 规则共享。
配置 NAT 时,如果有任何流量发往以下地址,且与 NAT 流或 NAT 规则不匹配,则该流量将被丢弃:
使用目标转换时在
from destination-address
语句中指定的地址使用源转换时在源 NAT 池中指定的地址
在 NAT 规则中配置作
要配置 NAT作,请在[edit services nat rule rule-name term term-name]
层次结构级别包含语then
句:
[edit services nat] rule rule-name { term term-name { from { destination-address-range low minimum-value high maximum-value <except>; destination-prefix-list list-name <except>; } then { destination-prefix destination-prefix; }
[edit services nat rule rule-name term term-name] then { no-translation; syslog; translated { clat-prefix clat-prefix; destination-pool nat-pool-name; destination-prefix destination-prefix; source-pool nat-pool-name; source-prefix source-prefix; translation-type (basic-nat-pt | basic-nat44 | basic-nat66 | dnat-44 | dynamic-nat44 | napt-44 | napt-66 | napt-pt | stateful-nat464 | stateful-nat64 | twice-basic-nat-44 | twice-dynamic-nat-44 | twice-napt-44); } } }
该
no-translation
语句允许您指定要从 NAT 中排除的地址。配备 MS-DPC 的 MX 系列路由器以及配备 MS-100、MS-400 和 MS-500 多服务 PIC 的 M Series 路由器支持该
no-translation
语句。从 Junos OS 15.1R1 版开始,配备 MS-MPC 和 MS-MIC 的 MX 系列路由器支持该no-translation
语句。语
system log
句允许您在系统日志记录工具中记录警报。、
destination-pool
、 和 语句指定通过在[edit services nat]
层次结构级别包含pool
语句来定义的寻址信息;有关更多信息,请参阅为网络地址转换配置地址池和端口概述。source-prefix
source-pool
destination-prefix
语
translation-type
句指定用于源流量或目标流量的 NAT 类型。选项有basic-nat-pt
、 、basic-nat44
、basic-nat66
、dnat-44
dynamic-nat44
napt-44
napt-66
napt-pt
stateful-nat464
stateful-nat64
twice-basic-nat-44
twice-dynamic-nat-44
twice-napt-44
在 Junos OS 13.2 版及更低版本中,CLI 未强制实施以下限制: 如果 translation-type
NAT 规则语then
句中的语句设置为 stateful-nat-64,则语句中的 或 from
destination-prefix-list
指定的destination-address-range
范围需要在语句中then
语句指定的destination-prefix
范围内。从 Junos OS 13.3R1 版开始,将强制执行此限制。
配置转换类型
声明九个选项 translation-type
的实施细节如下:
basic-nat44
—此选项无需端口映射即可实现源 IP 地址的静态转换。您必须在规则的匹配条件中配置from source-address
语句。语句中指定的地址范围的大小必须等于或小于源池。您必须指定源池或目标前缀。引用的池可以包含多个地址,但不能指定转换端口。注意:在接口服务集中,发往匹配条件中指定的源地址的所有数据包都会自动路由到服务 PIC,即使没有服务集与接口相关联也是如此。
注意:Junos OS 11.4R3 之前的版本只能在单个服务集中使用源 NAT 池。从 Junos OS 11.4R3 版及更高版本开始,您可以在多个服务集中重用源 NAT 池。
basic-nat66
—此选项在 IPv6 网络中实现源 IP 地址的静态转换,而无需端口映射。配置与basic-nat44
实现类似,但使用 IPv6 地址。如果您使用的是 MS-MPC 或 MS-MIC,则
basic-nat66
该选项不可用。basic-nat-pt
—此选项用于转换 IPv6 主机的地址,因为这些主机将会话发起至外部域中的 IPv4 主机,反之亦然。此选项始终通过 DNS ALG 实现。您必须定义 IPv4 地址的源池和目标池。您必须配置一个规则并定义两个术语。在from
两个term
语句的语句中配置 IPv6 地址。then
在规则内第一项的语句中,同时引用源池和目标池并配置dns-alg-prefix
。在同一规则中第二个术语的语句中then
配置源前缀。如果您使用的是 MS-MPC 或 MS-MIC,则
basic-nat-pt
该选项不可用。deterministic-napt44
—此选项实现基于算法的目标端口和 IP 地址块分配。这可以确保传入(源)IP 地址和端口始终映射到相同的目标 IP 地址和端口,因此无需进行地址转换日志记录。使用deterministic-napt44
时,还必须在[edit services nat pool poolname port]
层次结构级别使用deterministic-port-block-allocation
。配备 MS-DPC 的 MX 系列路由器以及配备 MS-100、MS-400 和 MS-500 多服务 PIC 的 M Series 路由器支持该
deterministic-napt44
选项。deterministic-napt44
如果您使用带有 MS-MPC 或 MS-MIC 的 MX 系列路由器,则该选项仅在 Junos OS 14.2R7 及更高版本、14.2 版本以及 15.1R3 及更高版本 15.1 版本中受支持。dnat-44
—此选项无需端口映射即可实现目标 IP 地址的静态转换。池地址空间的大小必须大于或等于目标地址空间。必须指定destination pool
语句的名称。引用的池可以包含多个地址、范围或前缀,只要池中的 NAT 地址数大于语句中from
的目标地址数即可。您必须在[edit services nat rule rule-name term term-name from]
层次结构级别只包含一个destination-address
值;如果是前缀,则大小必须小于或等于池前缀大小。池中值不匹配的任何地址将保持未使用状态,因为池不能在多个术语或规则之间共享。dynamic-nat44
—此选项无需端口映射即可实现源 IP 地址的动态转换。您必须指定source-pool
.引用的池必须包含配置address
(用于仅地址转换)。dynamic-nat44
仅地址选项支持将多达 16,777,216 个地址转换为较小大小的池。来自源地址范围的请求将分配给池中的地址,直到池用完,并且任何其他请求都将被拒绝。分配给主机的 NAT 地址将用于来自该主机的所有并发会话。只有在该主机的所有会话过期后,地址才会释放到池中。此功能使路由器能够在多个专用主机之间共享一些公共 IP 地址。由于所有专用主机可能不会同时创建会话,因此它们可以共享一些公共 IP 地址。napt-44
—此选项可通过端口映射实现源 IP 地址的动态转换。必须指定source-pool
语句的名称。引用的池必须包含配置port
。如果将端口配置为自动或指定了端口范围,则表示使用 网络地址端口转换 (NAPT)。napt-66
—此选项使用 IPv6 地址的端口映射实现源 IP 地址的动态地址转换。配置与napt-44
实现类似,但使用 IPv6 地址。如果您使用的是 MS-MPC 或 MS-MIC,则
napt-66
该选项不可用。napt-pt
—此选项对目标 IP 地址的源地址和静态转换实现动态地址和端口转换。必须指定source-pool
语句的名称。引用的池必须包含端口配置(用于 NAPT)。此外,您必须配置两个规则,一个用于 DNS 流量,另一个用于其余流量。用于 DNS 流量的规则应启用 DNS ALG,并dns-alg-prefix
应配置语句。此外,必须在第二个规则中使用语句中dns-alg-prefix
配置的前缀,以便将目标 IPv6 地址转换为 IPv4 地址。如果您使用的是 MS-MPC 或 MS-MIC,则
napt-pt
该选项不可用。stateful-nat464
—此选项对源 IP 地址实施 464XLAT 提供商端转换器 (PLAT) 地址转换,对目标 IPv4 地址实施 IPv6 前缀删除转换。您必须在 [edit services nat pool] 层次结构级别上指定用于转换的 IPv4 地址。必须在将 IPv6 地址转换为 IPv4 的规则中引用此池。仅当使用 MS-MPC 或 MS-MIC 时,该
stateful-nat464
选项才可用,并且从 Junos OS 17.1R1 版开始受支持。stateful-nat64
—此选项将实现源 IP 地址的动态地址和端口转换,以及目标 IP 地址的前缀删除转换。您必须指定用于在[edit services nat pool]
层次结构级别进行转换的 IPv4 地址。必须在将 IPv6 地址转换为 IPv4 的规则中引用此池。twice-basic-nat-44
—此选项对 IPv4 地址实施静态源和静态目标转换,从而合并basic-nat44
源地址和dnat-44
目标地址。MS-DPC 以及 MS-100、MS-400 和 MS-500 多服务 PIC 支持该
twice-basic-nat-44
选项。twice-basic-nat-44
从 Junos OS 15.1R1 版开始,MS-MPC 和 MS-MIC 支持该选项。twice-dynamic-nat-44
—此选项可实现 IPv4 地址的源动态和目标静态转换,将源地址和dnat-44
目标地址组合在一起dynamic-nat44
。MS-DPC 以及 MS-100、MS-400 和 MS-500 多服务 PIC 支持该
twice-dynamic-nat-44
选项。twice-dynamic-nat-44
从 Junos OS 15.1R1 版开始,MS-MPC 和 MS-MIC 支持该选项。twice-napt-44
—此选项可对 IPv4 地址实施源 NAPT 和目标静态转换,将源地址和dnat-44
目标地址组合在一起napt-44
。MS-DPC 以及 MS-100、MS-400 和 MS-500 多服务 PIC 支持该
twice-napt-44
选项。twice-napt-44
从 Junos OS 15.1R1 版开始,MS-MPC 和 MS-MIC 支持该选项。
有关 NAT 方法的详细信息,请参阅 RFC 2663,IP 网络地址转换器 (NAT) 术语和注意事项。
为非 NAT-T 对等方的 IPsec 直通配置 NAT 规则
在 Junos OS 17.4R1 版之前,MX 系列路由器上的 Junos VPN Site Secure IPsec 功能套件不支持网络地址转换-遍历 (NAT-T)。从 Junos OS 14.2R7、15.1R5、16.1R2 和 17.1R1 版本开始,您可以在不符合 NAT-T 的 IPsec 对等方之间通过 NAPT-44 和 NAT64 规则传递 IKEv1 和 IPsec 数据包。仅支持 ESP 隧道模式。此功能仅在 MS-MPC 和 MS-MIC 上受支持。
要为 NAPT-44 或 NAT64 的 IPsec 直通配置 NAT 规则:
配置 IKE ALG 应用程序。请参阅 配置应用程序属性。
将应用程序添加到应用程序集。请参阅 配置应用程序集。
配置 NAT 池。请参阅 配置地址池和端口以进行网络地址转换概述。
配置 NAT 规则:
配置规则的匹配方向。请参阅 配置 NAT 规则的匹配方向。
将其中一个匹配条件配置为您在步骤 2 中配置的用于 IKE 和 IPsec 直通的应用程序集。
[edit services nat rule rule-name term term-name from] user@host# set application-sets set-name
配置其他匹配条件。请参阅 在 NAT 规则中配置匹配条件。
将转换类型配置为 NAPT-44 或 NAT64。
[edit services nat rule rule-name term term-name then translated] user@host# set translation-type (napt-44 | stateful-nat64)
配置其他 NAT作。请参阅 在 NAT 规则中配置作。
将 NAT 规则分配给服务集。
[edit services] user@host# set service-set service-set-name nat-rules rule-name
另见
保护 CGN 设备免受拒绝服务 (DOS) 攻击
您现在可以选择有助于防止或最大程度地减少拒绝服务尝试 (DOS) 攻击影响的配置选项。
映射刷新行为
在实现用于配置 NAT 映射刷新行为的新选项(如本主题中所述)之前,当入站或出站流处于活动状态时,对话将保持活跃。这仍然是默认行为。现在,您还可以仅为入站流或仅为出站流指定映射刷新。要配置映射刷新行为,请在[edit services nat rule rule-name term term-name then translated secure-nat-mapping]
层次结构级别包含mapping-refresh (inbound | outbound | inbound-outbound)
语句。
EIF 入站流量限制
以前。EIF 映射上的入站连接数仅受系统上允许的最大流量的限制。您现在可以配置 EIF 允许的入站流数。要限制 EIF 映射上的入站连接数,请在[edit services nat rule rule-name term term-name then translated secure-nat-mapping]
层次结构级别包含eif-flow-limit number-of-flows
语句。
运营商级 NAT 实施:最佳实践
以下主题介绍了运营商级 NAT 实施的最佳实践:
- 将 APP 与 MS-DPC 配合使用时,使用轮询地址分配
- 仅在需要时使用 EIM 功能
- 根据预期的用户会话数定义端口块分配块大小
- 在正在运行的系统上更改端口块分配配置时的注意事项
- 不要分配大于所需大小的 NAT 池
- 仅在需要时为 NAT 配置系统日志记录
- 限制丢失 IP 片段的影响
- 请勿使用容易产生数据包路由环路的配置
- 非活动超时
- 启用流控制转储
将 APP 与 MS-DPC 配合使用时,使用轮询地址分配
如果使用的是 MS-DPC,并且在 NAT 规则中配置了地址池配对 (APP),则应为 NAT 池使用轮询地址分配。
APP 功能将专用 IP 地址映射到 NAT 池中该专用 IP 地址的所有 NAT 会话的同一公共 IP 地址。
NAT 池的顺序地址分配是 MS-DPC 上的默认设置,在分配下一个 IP 地址之前,先为公共 IP 地址分配所有端口。顺序分配与 APP 一起可能会导致将多个专用主机映射到同一个公共 IP 地址,从而导致公共 IP 地址的端口快速耗尽,而 NAT 池中的其余 IP 地址仍提供其他端口。
另一方面,循环分配将 NAT 池中的下一个 IP 地址分配给下一个需要转换的专用 IP 地址,从而减少一个公共 IP 地址的所有端口耗尽的几率。
有关 APP 和轮询地址分配的详细信息,请参阅 配置网络地址端口转换 (NAPT) 地址池概述。
MS-MPC 和 MS-MIC 仅使用轮询分配。
以下示例演示轮询地址分配。
[edit services] nat pool natpool-1 { port { automatic; } address-allocation round-robin; mapping-timeout 120; }
仅在需要时使用 EIM 功能
请勿在包含 Junos ALG 的 NAT 规则术语中使用与端点无关的映射 (EIM)。EIM 为来自专用主机的特定会话分配相同的外部 NAT 地址和端口,但会增加处理开销。EIM 对任何 Junos ALG 都没有好处,因为这些 Junos ALG 已经使用了 EIM 使用的功能。
为重复使用源端口并依赖 CGNAT 设备为发送到不同目标的所有流量维护相同地址和端口映射的应用启用 EIM。例如,将 EIM 用于主机游戏应用程序(如 Xbox 和 PS4)或使用单边自地址修复方法 (UNSAF) 的应用程序。请参阅(IETF RFC 3424 IAB 跨网络地址转换单边自地址固定 (UNSAF) 的注意事项)。
有关 EIM 的详细信息,请参阅 为网络地址端口转换 (NAPT) 配置地址池概述。
以下示例在 NAT 规则中使用了 Junos SIP ALG,因此 未 使用 EIM。
[edit services nat] rule natrule-1 { match-direction input; term1 { from { applications junos-sip; } } then { translated { source-pool natpool-3; translation-type { napt-44; } address-pooling paired; } } }
根据预期的用户会话数定义端口块分配块大小
对于安全端口块分配和确定性端口块分配,请定义一个端口块分配块大小,该大小是用户预期平均活动会话数的 2 到 4 倍。例如,如果预计用户平均有大约 200 到 250 个 NAT 会话处于活动状态,则将块大小配置为 512 或 1024 可提供自由分配。
如果您使用 MX 系列作为 NAT 设备推出安全端口块分配,并且不确定您的订阅者用户配置文件和流量配置文件,如果您有足够的 NAT IP 地址来处理估计的专用订阅者峰值数,请将端口块大小设置为 1024。NAT IP 地址数乘以 62 为您提供了端口块大小为 1024(每个 IP 地址有 62 个块)可以处理的专用订阅者数。然后,使用 show services nat pool detail
命令密切监控 MX 系列路由器,以确定是否需要更改块大小。
如果可以分配给 NAT 池的 IP 地址数量有限,请注意不要让块大小过大。使端口块大小足够大,以便有效地将块分配给您的订阅者,可能会导致所有端口块被捆绑。
安全端口块分配会将端口块分配给 NAT44 或 NAT64 的特定用户。安全端口块分配通过每个端口块仅生成一个系统日志来限制系统日志消息的数量。
但是,不正确的块大小配置可能会导致 NAT 资源使用效率低下或出现性能问题。例如,当用户连接到需要为单个 HTML 页面建立大量套接字的网站时,必须分配相应数量的新端口。端口块大小应足够大,以防止持续分配新块。如果专用订阅者的并发会话数超过活动端口块中的可用端口数,则将扫描分配给订阅者的其他端口块以查找可用端口,或者从可用块池中为订阅者分配新块。扫描已分配的端口块和分配其他块可能会导致设置新会话和加载网页时出现延迟。
有关端口块分配的更多信息,请参阅配置安全端口块分配和配置确定性 NAPT。
以下示例将端口块大小设置为 1024。
[edit services nat] pool natpool-1 { address-range low 192.0.2.0 high 192.0.2.10; port { automatic; secure-port-block-allocation { block-size 1024; max-blocks-per-user 8; active-block-timeout 300; } } mapping-timeout 300; }
在正在运行的系统上更改端口块分配配置时的注意事项
在使用 MS-MPC 或 MS-MIC 时,在正在运行的系统上更改安全端口块分配或确定性端口块配置之前,请做好 NAT 会话快速中断的计划。配置更改会导致重新创建所有当前 NAT 会话。
在使用 MS-DPC 时更改正在运行的系统上的端口块分配配置之前,请做好服务中断计划。更改配置后,必须重新启动 MS-DPC,如果无法重新启动,则必须停用并重新激活服务集。
对端口块分配配置的更改包括:
更改任何 NAT 池 PBA 配置。
将 PBA NAT 池更改为非 PBA NAT 池。
将非 PBA NAT 池更改为 PBA NAT 池。
有关配置端口块分配的更多信息,请参阅配置安全端口块分配和配置确定性 NAPT。
不要分配大于所需大小的 NAT 池
MS-MPC 和 MS-MIC
将 NAPT44 用作 MS-MIC 或 MS-MPC 的转换类型时,请勿配置大于峰值会话速率所需的 NAT 池,否则会占用宝贵的 IPv4 资源。每个会话(也称为会话)包括两个流:入口流和出口流。每个会话都需要一个端口,并且池中的每个 IP 地址的端口范围为 1024-65535 (64K),因此 NAT 池大小不需要大于:
峰值对话数/64K
将 NAPT44 用作 MS-MIC 的转换类型时,建议最大 NAT 池大小为 128 个地址(/25 网络)。
将 NAPT44 用作 MS-MPC 的转换类型时,建议最大 NAT 池大小为 256 个地址(/24 网络)。
对 MS-MIC 使用 NAPT-44 时,建议的最大 NAT 池大小为 128 个 IP 地址,因为 MS-MIC 最多支持 1400 万个流或 700 万个对话,这需要 700 万个端口。共有 700 万个端口和 128 个 IP 地址,每个 IP 地址的端口范围为 1024-65535。
使用 NAPT-44 时,MS-MPC 上每个插槽的最大建议 NAT 池大小为 256 个 IP 地址,因为每个插槽最多支持 3000 万个流或 1500 万个对话,这需要 1500 万个端口。共有 1500 万个端口和 256 个 IP 地址可用,每个 IP 地址的端口范围为 1024-65535。
您可以使用比建议值更大的池,并且使用端口块分配 (PBA) 功能的配置可能需要更大的池。这是因为 PBA 将端口块分配给专用 IP 地址,这会更改池效率模型。
有关配置 NAT 池的详细信息,请参阅 配置网络地址转换地址池和端口池概述。
MS-DPC
使用 NAPT44 作为 MS-DPC 的转换类型时,请勿配置大于峰值流速所需的 NAT 池,否则会占用宝贵的 IPv4 资源。每个会话包括两个流(每个正向流对应 1 个反向流)。每个会话都需要一个端口,并且池中的每个 IP 地址的端口范围为 1024-65535 (64K),因此 NAT 池大小不需要大于:
峰值对话数/64K
使用 NAPT44 作为 MS-DPC 的转换类型时,请勿配置具有超过 64 个地址的 NAT 池(/26 网络)。
MS-DPC 的最大 NAT 池大小为 64 个 IP 地址,因为 MS-DPC 最多支持 800 万个流或 400 万个对话,最多需要 400 万个端口。共有 400 万个端口和 64 个 IP 地址可用,每个 IP 地址的端口范围为 1024-65535。如果启用了 APP、EIM 和 EIF,则 MS-DPC 最多支持 580 万个流或 290 万个对话,因此最大 NAT 池大小会更小。
有关配置 NAT 池的详细信息,请参阅 配置网络地址转换地址池和端口池概述。
仅在需要时为 NAT 配置系统日志记录
不要为安全端口块分配配置启用每个会话的系统日志记录。
不要为确定性 NAT 配置启用系统日志记录。
如果可能,请在服务集级别(而不是在服务接口级别)启用系统日志记录。
在生产网络中,始终将日志消息发送到外部系统日志服务器。这样可避免在本地记录消息时向路由引擎增加 CPU 负载。
指定系统日志类以将日志记录限制为您感兴趣的应用程序类。
如果在 NAT 规则术语内配置系统日志记录,请使用状态防火墙规则限制到达 NAT 规则术语的流量。
系统日志消息可能会对服务卡的性能产生负面影响,具体取决于创建和删除会话的频率。服务卡创建的所有系统日志消息都需要在服务卡上进行 CPU 处理,而系统日志消息本身构成通过 MX 系列路由器发送并与用户流量竞争以到达外部日志服务器的流量。
安全端口块分配无需为每个会话配置日志,因为您知道块和块大小,并且可以派生分配给每个用户的端口。
确定性 NAT 完全不需要记录,因为有关端口分配的所有信息都可以用数学方式推导出来。
以下示例将日志记录限制为 NAT 事件,并将日志消息发送到外部日志服务器 203.0.113.4
[edit services service-set S-SET-1] class { nat-logs; } syslog { host 203.0.113.4; }
在 NAT 规则术语中配置系统日志记录时,所有进入 NAT 规则术语的流量都会生成日志,这可能会导致日志记录过多。这可能会导致达到日志记录速率限制,并且您将丢失确实需要的日志。
有关为 NAT 配置系统日志记录的详细信息,请参阅 配置 NAT 会话日志。
限制丢失 IP 片段的影响
对于为 NAT 配置的服务接口,通过配置以下配置来限制分段丢失或延迟的影响:
数据包的最大分段数
丢失片段的最长等待时间
为 NAT 配置的服务卡接收的 IP 分段在到达时会进行缓冲。这允许在 NAT 处理完全重组的数据包之前对数据包进行完整性检查。 缺失或延迟的分片可能会导致已接收的分片被保留,直到内部缓冲区已满并清除,从而导致 CPU 使用开销并减少流量转发。
配置数据包可以拥有的最大分片数并限制丢失分片的等待时间可以减少内部缓冲区已满的几率。
以下示例将最大片段数设置为 10,将最大等待时间设置为 3 秒。
[edit interfaces ms-0/0/0] services-options { fragment-limit 10; reassembly-timeout 3; }
请勿使用容易产生数据包路由环路的配置
通过确保仅允许预期流量到达服务卡并由服务集 NAT 规则处理来防止数据包路由环路。您可以通过以下方式执行此作:
如果可能,在 NAT 规则下配置源地址范围。
配置防火墙过滤器,使其仅接受下一跃点样式服务集中的 NAT 规则要提供服务的流量。
数据包转发引擎和服务卡之间的数据包循环会导致服务卡的 CPU 使用率持续过高。数据包环路可能是由服务卡接收来自意外的专用源网络的流量所导致的。当 NAT 处理意外流量时,会创建一个针孔,如果是 EIF,可能会创建许多针孔。如果返回流量通过服务卡返回,则这些针孔会导致路由环路。
以下示例显示了一个防火墙过滤器,该过滤器仅允许来自 198.51.100.0/24 的流量到达服务接口 ms-1/0/0,即下一跃点服务集的内部接口。
[edit firewall filter to_be_serviced] term 1 { from } address { } 198.51.100.0/24; } then accept; } term 2 { then disard; } [edit interfaces ms-1/0/0] unit 1 { family intet { filter { output to_be_serviced; } } service-domain inside; }
有关配置防火墙过滤器的详细信息,请参阅 《路由策略、防火墙过滤器和流量监管器用户指南》。
以下示例显示了一个 NAT 规则,该规则仅处理来自 198.51.100.0/24 的流量(其他流量到达服务接口,但未进行处理)。
[edit services nat] rule rule_1 { match-direction input; term t1 { from { source-address { 198.51.100.0/24; } } then { translated { source-pool pool1; translation-type { napt-44; } } } } }
有关配置 NAT 规则的详细信息,请参阅 网络地址转换规则概述。
非活动超时
仅为用户定义的应用程序设置非活动超时,这些应用程序可能需要 NAT 会话映射在内存中保留的时间长于 30 秒的默认 NAT 非活动超时。例如,HTTP 或 HTTPS 银行应用程序可能需要 30 秒以上的非活动状态,因为用户必须输入数据。
在更改现有非活动超时之前,请在高峰时段多次运行以下命令。然后在进行更改后运行命令,并验证这些更改是否未使 MX 系列路由器的 NAT 资源或服务卡的内存不足。
以下示例演示将 HTTPS 和 HTTP 应用程序的非活动超时设置为 1800 秒。
[edit applications] application https { inactivity-timeout 1800; destination-port 443; protocol tcp; } application http { inactivity-timeout 1800; destination-port 443; protocol tcp; }
有关配置用户定义的应用程序的详细信息,请参阅 配置应用程序属性。
您需要权衡为所有流量设置高不活动超时的风险。虽然对于某些用户定义的应用程序来说,默认的 30 秒非活动超时时间可能太低,但将超时值设置得太高可能会占用 NAT 资源。例如,设置高不活动超时值可能会占用任何在创建几分钟后处于非活动状态的 TCP 会话。如果客户端或服务器的 FIN 或 RST 未完全关闭 TCP 会话,则该会话将位于内存中,并占用分配给它的 NAT 资源,直到超时值过期。
设置影响每个 UDP 和 TCP 端口的更高的非活动超时可能很危险,尤其是对于 DNS 等 UDP 流量。与 TCP 不同,UDP 除了超时之外无法结束会话,因此所有 UDP 会话都将在完全不活动超时值内保持活动状态。
以下示例不是推荐的配置,因为它为所有 TCP 和 UDP 流量设置了高非活动超时值。
[edit applications] application UDP-All { protocol UDP; source-port 1-65535; inactivity-timeout 3600; } application TCP-All { protocol TCP; source-port 1-65535; inactivity-timeout 3600; }
我们没有具体的建议非活动超时值。正确的非活动超时值取决于几个因素,包括:
最终用户的网络上使用哪些应用
例如,Apple 表示,以下 Apple 服务需要 60 分钟的非活动超时,这些服务需要较长的连接寿命:
Apple 推送服务:入站 TCP 端口 5223
Exchange Active Sync:入站 TCP 端口 443
MobileMe:入站 TCP 端口 5222 和 5223
如何使用 NAT 解决方案,例如,作为 Gi NAT 设备或企业边缘路由器
NAT 池有多大
每张服务卡在高峰负载期间接收的流量
您有多少可用内存
启用流控制转储
为在生产网络中处理 NAT 流量的任何服务卡启用流转储控制选项。此选项可检测服务卡何时锁定,写入核心转储,瞻博网络可以分析该转储以确定该卡锁定的原因,并通过重新启动服务卡来恢复该转储。
对于 MS-MIC 和 MS-MPC,在 pc- 接口下设置流控转储选项,该接口用于将控制流量从路由引擎发送到服务卡。以下示例显示了服务接口为 ms-2/1/0 时的配置。
[edit interfaces pc-2/1/0] multiservice-options { flow-control-options { dump-on-flow-control; } }
对于 MS-DPC,在 sp- 接口下设置流转储控制选项。以下示例显示了服务接口为 sp-2/1/0 时的配置。
[edit interfaces sp-2/1/0] multiservice-options { flow-control-options { dump-on-flow-control; } }
另见
变更历史表
是否支持某项功能取决于您使用的平台和版本。使用 功能浏览器 查看您使用的平台是否支持某项功能。
limit-ports-per-address
该语句受支持。