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 池。
您可以在语句和
poolNAT 规则术语的子句中from指定一个或多个 IPv4 地址前缀。这样可以配置从专用子网到公共子网的源转换,而无需为子网中的每个地址定义规则术语。此方法无法配置目标转换。有关更多信息,请参阅 示例:配置 NAT 规则。配置静态源 NAT 时,
address在层级配置的[edit services nat pool pool-name]前缀大小必须大于在层级配置[edit services nat rule rule-name term term-name from]的source-address前缀范围。source-address前缀范围还必须映射到语句中的pool单个子网或 IPv4 或 IPv6 地址范围。前缀范围未使用source-address的任何池地址都将保持闲置状态。池不能共享。在 [
edit services nat pool nat-pool-name] 层次结构级别使用语句配置 NAT 地址池前缀大小address时,子网地址和广播地址不会包含在可用 IP 地址列表中。例如,如果您在address 10.11.12.0/28NAT 池中使用,则地址 10.11.12.0(子网地址)和 10.11.12.15(广播地址)不可用。
如果加入可更改 IP 地址的 NAT 配置,则可能会影响路由器配置中其他位置的转发路径功能,例如源类使用 (SCU)、目标类使用 (DCU)、基于过滤器的转发或其他面向特定 IP 地址或前缀的功能。
NAT 配置也可能会影响路由协议作,因为当路由协议数据包传输自适应服务 (AS) 或多服务 PIC 时,协议对等、邻接方和接口地址可能会发生变更。
也可以看看
为网络地址转换配置地址和端口池概述
配置 NAT 池
pool您可以使用该语句定义用于网络地址转换 (NAT) 的地址(或前缀)、地址范围和端口。要配置信息,请在层次结构级别包含pool[edit services nat]该语句。
从 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-parity configuration 语句,在 preserve-range 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 仅从该范围分配端口。但是,如果范围内没有可用端口,则端口分配请求将失败,并且不会创建该会话。故障会反映在计数器和系统日志记录上,但不会生成互联网控制消息协议 (ICMP) 消息。如果未配置此旋钮,则根据配置的端口范围进行分配,而不考虑包含传入端口的端口范围。例外的是某些具有特殊区域的应用级网关 (ALG),例如 hello。保留奇偶校验 — 配置旋钮后
preserve-parity,CGN 将分配一个与传入端口具有相同偶数或奇奇偶校验的端口。如果传入端口号为奇数或偶数,则传出端口号应相应为奇数或偶数。如果所需奇偶校验的端口号不可用,则端口分配请求将失败,不会创建会话,并且数据包将被丢弃。
指定目标和源前缀而不配置池
您可以直接指定 NAT 中使用的目标或源前缀,而无需配置池。
要配置信息,请在层次结构级别包含[edit services nat]该rule语句:
[edit services nat] rule rule-name { term term-name { then { translated { destination-prefix prefix; } } } }
网络地址转换规则概述
要配置 NAT 规则,请在层次结构级别包含[edit services nat]该rulerule-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,可以使用目标地址、目标地址范围、源地址或源地址范围作为匹配条件,其配置方式与配置防火墙过滤器的方式相同;有关更多信息,请参阅 路由策略、防火墙过滤器和流量监管器用户指南。
或者,您可以通过在层次结构级别包含prefix-list[edit policy-options]语句,然后在 NAT 规则中包含 destination-prefix-list or source-prefix-list 语句来指定源或目标前缀列表。有关示例,请参阅示例:配置有状态防火墙规则。
如果 NAT 规则语句中的then语句设置为 stateful-nat-64,语translation-type句中 from 或 destination-address-range 指定的destination-prefix-list范围必须在语句中then 语destination-prefix句指定的范围内。
如果 NAT 规则中至少有一个 NAT 术语启用了地址池配对 (APP) 功能(通过在层次结构级别包含address-pooling[edit services nat rule rule-name term term-name then translated]语句,则 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 中排除的地址。no-translation带有 MS-DPC 的 MX 系列路由器以及带有 MS-100、MS-400 和 MS-500 多服务 PIC 的 M Series 路由器支持该语句。从 Junos OS 15.1R1 版开始,配备 MS-MPC 和 MS-MIC 的 MX 系列路由器支持该no-translation语句。该
system log语句使您能够在系统日志记录工具中记录警报。destination-pool、 、source-pooldestination-prefix和source-prefix语句指定通过在层次结构级别包含[edit services nat]语句来pool定义的寻址信息;有关更多信息,请参阅为网络地址转换配置地址和端口池概述。该
translation-type语句指定用于源或目标流量的 NAT 类型。选项包括basic-nat-pt、 、dnat-44stateful-nat64twice-basic-nat-44twice-dynamic-nat-44basic-nat66napt-44twice-napt-44dynamic-nat44napt-66napt-ptstateful-nat464basic-nat44
在 Junos OS 13.2 及更早版本中,CLI 未实施以下限制: 如果 NAT 规则语句中的then语句设置为 stateful-nat-64,则translation-type语句中 from 或 destination-address-range 指定的destination-prefix-list范围需要在语句中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 地址的源池和目标池。您必须配置一个规则和定义两个术语。在两个term语句的语句中from配置 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如果将 MX 系列路由器与 MS-MPC 或 MS-MIC 配合使用,则仅 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 地址的静态源和静态目标转换,从而将源地址和dnat-44目标地址合并。basic-nat44MS-DPC 以及 MS-100、MS-400 和 MS-500 多服务 PIC 支持该
twice-basic-nat-44选项。从 Junos OS 15.1R1 版开始,MS-MPC 和 MS-MIC 支持该twice-basic-nat-44选项。twice-dynamic-nat-44— 此选项用于实现 IPv4 地址的源动态和目标静态转换,并合并dynamic-nat44源地址和dnat-44目标地址。MS-DPC 以及 MS-100、MS-400 和 MS-500 多服务 PIC 支持该
twice-dynamic-nat-44选项。从 Junos OS 15.1R1 版开始,MS-MPC 和 MS-MIC 支持该twice-dynamic-nat-44选项。twice-napt-44— 此选项用于实施 IPv4 地址的源 NAPT 和目标静态转换,并组合napt-44用于源地址和dnat-44目标地址。MS-DPC 以及 MS-100、MS-400 和 MS-500 多服务 PIC 支持该
twice-napt-44选项。从 Junos OS 15.1R1 版开始,MS-MPC 和 MS-MIC 支持该twice-napt-44选项。
有关 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 版本开始,您可以通过 NAPT-44 和 NAT64 规则在不符合 NAT-T 标准的 IPsec 对等方之间传递 IKEv1 和 IPsec NAT 数据包。仅支持 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 映射刷新行为的新选项之前,当入站或出站流处于活动状态时,对话会保持活动状态。这仍然是默认行为。现在,您还可以为仅入站流或仅出站流指定映射刷新。要配置映射刷新行为,请在层次结构级别包含mapping-refresh (inbound | outbound | inbound-outbound)[edit services nat rule rule-name term term-name then translated secure-nat-mapping]该语句。
EIF 入站流量限制
提到过。EIF 映射上的入站连接数仅受系统上允许的最大流量的限制。您现在可以配置 EIF 允许的入站流数。要限制 EIF 映射上的入站连接数,请在层次结构级别包括eif-flow-limit number-of-flows[edit services nat rule rule-name term term-name then translated secure-nat-mapping]该语句。
运营商等级 NAT 实施:最佳实践
以下主题介绍了运营商级 NAT 实施的最佳实践:
- 将 APP 与 MS-DPC 一起使用时,使用轮询地址分配
- 仅在需要时使用 EIM 功能
- 根据预期用户会话数定义端口块分配块大小
- 在正在运行的系统上更改端口块分配配置时的注意事项
- 不要分配大于需要的 NAT 池
- 仅在需要时配置 NAT 的系统日志记录
- 限制 IP 分段丢失的影响
- 请勿使用容易出现数据包路由环路的配置
- 不活动超时
- 在流控制时启用转储
将 APP 与 MS-DPC 一起使用时,使用轮询地址分配
如果使用的是 MS-DPC,并且在 NAT 规则中配置了地址池配对 (APP),则应为 NAT 池使用轮询地址分配。
APP 功能将私有 IP 地址映射到该私有 IP 地址的所有 NAT 会话的 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 对已采用 EIM 使用的任何 Junos ALG 均没有好处。
对于重复使用源端口并依赖于 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 网络)。
将 NAPT-44 用于 MS-MIC 时,建议的最大 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;
}
有关配置防火墙过滤器的详细信息,请参阅 路由策略、防火墙过滤器和流量监管器用户指南。
以下示例显示仅处理来自 198.51.100.0/24 的流量(其他流量到达服务接口,但未被处理)的 NAT 规则。
[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 会话映射在内存中保留的时间超过默认的 NAT 非活动超时 30 秒。例如,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;
}
有关配置用户定义的应用程序的详细信息,请参阅 配置应用程序属性。
您需要权衡为所有流量设置较高的非活动超时风险。虽然对于某些用户定义的应用程序来说,默认NAT 30 秒的非活动超时可能太低,但将超时值设置得太高可能会占用NAT资源。例如,设置较高的非活动超时值可能会占用任何在创建后仅几分钟就处于非活动状态的 TCP 会话。如果 TCP 会话未被客户端或服务器的 FIN 或 RST 完全关闭,则会话将位于内存中并占用分配给它的 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 流量的任何服务卡启用 dump-on-flow-control 选项。此选项可检测服务卡何时被锁定,写入瞻博网络可分析的核心转储以确定卡锁定的原因,并通过重新启动服务卡来恢复服务卡。
对于 MS-MIC 和 MS-MPC,请在 pc- 接口下设置 dump-on-flow-control 选项,用于将控制流量从路由引擎发送到服务卡。以下示例显示了如果服务接口为 ms-2/1/0 的配置。
[edit interfaces pc-2/1/0]
multiservice-options {
flow-control-options {
dump-on-flow-control;
}
}
对于 MS-DPC,请在 sp- 接口下设置 dump-on-flow 控制选项。以下示例显示了如果服务接口为 sp-2/1/0 的配置。
[edit interfaces sp-2/1/0]
multiservice-options {
flow-control-options {
dump-on-flow-control;
}
}
也可以看看
变更历史表
是否支持某项功能取决于您使用的平台和版本。使用 功能资源管理器 确定您的平台是否支持某个功能。
limit-ports-per-address 语句。