网络地址端口转换
为网络地址端口转换 (NAPT) 配置地址池概述
使用网络地址端口转换 (NAPT),您最多可以配置 32 个地址范围,每个范围最多 65,536 个地址。
该port
语句指定转换地址的端口分配。要配置端口的自动分配,请在层次结构级别包含port automatic
[edit services nat pool nat-pool-name]
语句。默认情况下,将按顺序分配端口。
从 Junos OS 14.2 版开始,您可以在层次结构级别将[edit services nat pool nat-pool-name]
选项包含在语句中port automatic
,sequential
以便按顺序分配指定范围内的端口。要配置特定范围的端口号,请在层次结构级别包含port range low minimum-value high maximum-value
语句[edit services nat pool nat-pool-name]
。
当 napt-44 池中可用端口总数的 99% 时,该 NAT 池上不允许新流量。
从 Junos OS 14.2 版开始,该 auto
选项将被隐藏并已弃用,仅出于向后兼容性而保留。在将来的软件版本中可能会将其完全删除。
Junos OS 提供了几种分配端口的替代方法:
NAPT 的循环分配
要为 NAT 池配置轮循机制分配,请在层次结构级别包含[edit services nat pool pool-name]
地址分配轮询配置语句。使用轮循机制分配时,先从范围中的每个地址分配一个端口,然后再对下一个范围中的每个地址重复此过程。为最后一个范围中的所有地址分配端口后,分配过程将环绕并为第一个范围内的地址分配下一个未使用的端口。
第一个连接分配给地址:端口 100.0.0.1:3333。
第二个连接分配给地址:端口 100.0.0.2:3333。
第三个连接分配给地址:端口 100.0.0.3:3333。
第四个连接分配给地址:端口 100.0.0.4:3333。
第五个连接分配给地址:端口 100.0.0.5:3333。
第六个连接分配给地址:端口 100.0.0.6:3333。
第七个连接分配给地址:端口 100.0.0.7:3333。
第八个连接分配给地址:端口 100.0.0.8:3333。
第九个连接分配给地址:端口 100.0.0.9:3333。
第十个连接分配给地址:端口 100.0.0.10:3333。
第 11 个连接分配给地址:端口 100.0.0.11:3333。
第 12 个连接分配给地址:端口 100.0.0.12:3333。
将发生环绕,并将第十三个连接分配给地址:端口 100.0.0.1:3334。
NAPT 的顺序分配
使用顺序分配时,仅当某个地址的所有可用端口都用尽时,才会选择 NAT 池中的下一个可用地址。
只能为 MS-DPC 以及 MS-100、MS-400 和 MS-500 多服务 PIC 配置顺序分配。MS-MPC 和 MS-MIC 卡仅使用轮询分配方法。
此旧版实现提供向后兼容性,不再推荐使用。
以下配置示例中名为 napt 的 NAT 池使用顺序实现:
pool napt { address-range low 100.0.0.1 high 100.0.0.3; address-range low 100.0.0.4 high 100.0.0.6; address-range low 100.0.0.8 high 100.0.0.10; address-range low 100.0.0.12 high 100.0.0.13; port { range low 3333 high 3334; } }
在此示例中,端口从第一个地址范围中的第一个地址开始分配,分配从此地址继续,直到所有可用端口都用完为止。使用完所有可用端口后,将分配下一个地址(在同一地址范围或以下地址范围内),并根据需要选择其所有端口。对于示例 napt 池,仅当使用了第一个范围内所有地址的所有端口时,才会分配元组地址端口 100.0.0.4:3333。
第一个连接分配给地址:端口 100.0.0.1:3333。
第二个连接分配给地址:端口 100.0.0.1:3334。
第三个连接分配给地址:端口 100.0.0.2:3333。
第四个连接分配给地址:端口 100.0.0.2:3334,依此类推。
保持 NAPT 的奇偶校验和范围
保留奇偶校验和保留范围选项可用于 NAPT,并且在 MS-DPC 和 MS-100、MS-400 和 MS-500 多服务 PIC 上受支持。对 MS-MPC 和 MS-MIC 的支持从 Junos OS 15.1R1 版开始。以下选项可用于 NAPT:
保持奇偶校验 — 使用命令为
preserve-parity
具有偶数源端口的数据包分配偶数端口,为具有奇数源端口的数据包分配奇数端口。保留范围 — 使用命令分配
preserve-range
0 到 1023 范围内的端口(假设原始数据包包含保留范围内的源端口)。这适用于控制会话,而不是数据会话。
NAPT 的地址池和与端点无关的映射
地址池
地址池或地址池配对 (APP) 可确保为源自同一内部主机的所有会话分配相同的外部 IP 地址。从池分配外部 IP 地址时,可以使用此功能。此选项不会影响端口利用率
地址池解决了应用程序打开多个连接的问题。例如,当会话初始协议 (SIP) 客户端发送实时传输协议 (RTP) 和实时控制协议 (RTCP) 数据包时,SIP 服务器通常要求它们来自同一 IP 地址,即使它们已受 NAT 约束。如果 RTP 和 RTCP IP 地址不同,接收终结点可能会丢弃数据包。任何协商端口的点对点 (P2P) 协议(假设地址稳定性)都受益于地址池配对。
以下是地址池的用例:
提供即时消息服务的站点要求聊天及其控制会话来自同一公共源地址。当用户登录到聊天时,控制会话会对用户进行身份验证。当用户启动聊天会话时,将开始不同的会话。如果聊天会话源自与身份验证会话不同的源地址,则即时消息服务器将拒绝聊天会话,因为它源自未经授权的地址。
某些网站(如网上银行网站)要求来自给定主机的所有连接都来自同一 IP 地址。
从 Junos OS 14.1 版开始,当您停用包含该服务集的地址池配对 (APP) 的服务集时,PIC 控制台上将显示消息,并清除该服务集的映射。这些消息在开始删除服务集时触发,并在完成服务集删除时再次生成。删除开始和结束时将显示以下示例消息:
11 月 15 日 08:33:13.974 日志:严重] SVC 集 ss1 (iid 5) 停用/删除:已启动 NAT 映射和流删除
11 月 15 日 08:33:14.674 日志:严重] SVC 集 ss1 (iid 5) 停用/删除:NAT 映射和流删除已完成
在服务集中包含大量APP的扩展环境中,会产生大量的消息,此过程需要一定的时间。我们建议您等到指示服务集删除完成的控制台消息完成后,再重新激活服务集。
与端点无关的映射和与端点无关的过滤
端点无关映射 (EIM) 可确保为来自给定主机的所有连接分配相同的外部地址 和 端口(如果这些连接使用相同的内部端口)。这意味着如果它们来自不同的源端口,您可以自由分配不同的外部地址。
EIM 和 APP 的区别如下:
APP确保分配相同的外部IP地址。
EIM 提供稳定的外部 IP 地址和端口(在一段时间内),外部主机可以连接到该地址和端口。端点独立过滤 (EIF) 控制哪些外部主机可以连接到内部主机。
从 Junos OS 14.1 版开始,如果停用包含该服务集的端点无关映射 (EIM) 映射的服务集,则会在 PIC 控制台上显示消息,并清除该服务集的映射。这些消息在开始删除服务集时触发,并在完成服务集删除时再次生成。删除开始和结束时将显示以下示例消息:
11 月 15 日 08:33:13.974 日志:严重] SVC 集 ss1 (iid 5) 停用/删除:已启动 NAT 映射和流删除
11 月 15 日 08:33:14.674 日志:严重] SVC 集 ss1 (iid 5) 停用/删除:NAT 映射和流删除已完成
在服务集中包含大量 EIM 映射的扩展环境中,会生成大量消息,此过程需要一些时间。我们建议您等到指示服务集删除完成的控制台消息完成后,再重新激活服务集。
NAPT 的安全端口块分配
具有 MS-DPC 的 MX 系列路由器和具有 MS-100、MS-400 和 MS-500 多服务 PICS 的 M 系列路由器支持端口块分配。从 Junos OS 14.2R2 版开始,带有 MS-MPC 和 MS-MIC 的 MX 系列路由器支持端口块分配。
运营商使用 IP 地址(RADIUS 或 DHCP)日志跟踪订阅者。如果他们使用 NAPT,则 IP 地址由多个订阅者共享,运营商必须跟踪 IP 地址和端口,这是 NAT 日志的一部分。由于端口的使用和重用速率非常高,因此由于大量消息难以存档和关联,因此使用日志跟踪订阅者变得困难。通过启用按块分配端口,端口块分配可以显著减少日志数量,从而更轻松地跟踪订阅者。
NAPT 的安全端口块分配
安全端口块分配可用于转换类型和 napt-44
stateful-nat64
。
分配端口块时,最近分配的块是当前活动块。对 NAT 端口的新请求从活动块提供服务。端口是从当前活动块中随机分配的。
配置安全端口块分配时,可以指定以下内容:
block-size
max-blocks-per-address
active-block-timeout
端口块分配的临时日志记录
通过端口块分配,我们为分配给订阅者的每组端口生成一个系统日志日志。这些日志基于 UDP,可能会在网络中丢失,特别是对于长时间运行的流。临时日志记录会触发以配置的时间间隔重新发送上述日志,用于在块的至少一个端口上具有流量的活动块。
通过将语句包含在 pba-interim-logging-interval
for sp- 接口下 services-options
来激活临时日志记录。
参见
NAPT实施方法的比较
表1 提供了可用的NAPT实施方法的功能比较。
特性/功能 |
动态端口分配 |
安全端口块分配 |
确定性端口块分配 |
---|---|---|---|
每个 IP 的用户数 |
高 |
中 |
低 |
安全风险 |
低 |
中 |
中 |
日志利用率 |
高 |
低 |
无(无需日志) |
降低安全风险 |
随机分配 |
主动阻止超时 功能 |
不适用 |
增加每个 IP 的用户数 |
不适用 |
配置多个较小的端口块,以最大化用户/公共 IP |
基于算法的端口分配 |
在 IPv4 网络中配置 NAPT
网络地址端口转换 (NAPT) 是一种将许多网络地址及其 TCP/UDP 端口转换为单个网络地址及其 TCP/UDP 端口的方法。可以在 IPv4 和 IPv6 网络中配置此转换。本节介绍在 IPv4 网络中配置 NAPT 的步骤。
要配置 NAPT,您必须在 [edit services nat]
层次结构级别配置用于动态转换源 IPv4 地址的规则。
要在 IPv4 网络中配置 NAPT,请执行以下操作:
以下示例将转换类型配置为 napt-44。
[edit services] user@host# show service-set s1 { nat-rules rule-napt-44; interface-service { service-interface ms-0/1/0; } } nat { pool napt-pool { address 10.10.10.0/32; port { automatic auto; } } rule rule-napt-44 { match-direction input; term t1 { then { translated { source-pool napt-pool; translation-type { napt-44; } } } } } } adaptive-services-pics { traceoptions { flag all; } }
将动态地址转换为小型池,并回退到 NAT
以下配置显示了从大型前缀到小型池的动态地址转换,将 /24 子网转换为包含 10 个地址的池。当源池 (src-pool) 中的地址耗尽时,NAT 由 NAPT 过载池 (pat-pool) 提供。
[edit services nat] pool src-pool { address-range low 192.16.2.1 high 192.16.2.10; } pool pat-pool { address-range low 192.16.2.11 high 192.16.2.12; port automatic auto; rule myrule { match-direction input; term myterm { from { source-address 10.150.1.0/24; } then { translated { source-pool src-pool; overload-pool pat-pool; translation-type napt-44; } } } }
使用小型池进行动态地址转换
以下配置显示了从大型前缀到小型池的动态地址转换,将 /24 子网转换为包含 10 个地址的池。来自前 10 个主机会话的会话将按照先到先得的原则从池中分配一个地址,任何其他请求都将被拒绝。分配了 NAT 的每个主机都可以参与多个会话。
[edit services nat] pool my-pool { address-range low 10.10.10.1 high 10.10.10.10; } rule src-nat { match-direction input; term t1 { from { source-address 192.168.1.0/24; } then { translated { translation-type dynamic-nat44; source-pool my-pool; } } } }
在 IPv6 网络中配置 NAPT
网络地址端口转换 (NAPT) 是一种将许多网络地址及其 TCP/UDP 端口转换为单个网络地址及其 TCP/UDP 端口的方法。可以在 IPv4 和 IPv6 网络中配置此转换。本节介绍在 IPv6 网络中配置 NAPT 的步骤。如果您使用的是 MS-MPC 或 MS-MIC,则不支持在 IPv6 网络中配置 NAPT。有关在 IPv4 网络中配置 NAPT 的信息,请参阅 在 IPv4 网络中配置 NAPT。
要配置 NAPT,您必须在 [edit services nat]
层次结构级别配置用于动态转换源 IPv6 地址的规则。
要在 IPv6 网络中配置 NAPT,请执行以下操作:
以下示例为 IPv6 网络配置动态源(地址和端口)转换或 NAPT。
[edit services] user@host# show service-set IPV6-NAPT-ServiceSet { nat-rules IPV6-NAPT-Rule; interface-service { service-interface sp-0/1/0; } } nat { pool IPV6-NAPT-Pool { address 2002::1/96; port automatic sequential; } rule IPV6-NAPT-Rule { match-direction input; term term1 { then { translated { source-pool IPV6-NAPT-Pool; translation-type { napt-66; } } } } } } adaptive-services-pics { traceoptions { flag all; } } }
示例:使用端口转换配置 NAT
此示例说明如何使用端口转换配置 NAT。
要求
此示例使用以下硬件和软件组件:
带有服务 DPC 的 MX 系列 5G 通用路由平台或带有服务 PIC 的 M 系列多服务边缘路由器
域名服务器 (DNS)
Junos OS 11.4 或更高版本
概述
此示例显示了完整的 CGN NAT44 配置和高级选项。
使用端口转换配置 NAT
程序
分步过程
要配置服务集:
-
配置服务集。
user@host# edit services service-set ss2
-
在配置模式下,转到
[edit services nat]
层次结构级别。[edit] user@host# edit services nat
-
定义必须用于动态转换的源地址池。对于 NAPT,请在配置源池时指定端口号。
[edit services nat] user@host# set pool pool name address source addresses user@host# set pool pool name port source ports
例如:
[edit services nat] user@host# set pool NAPT-Pool address 192.168.2.1/24; user@host# set pool NAPT-Pool port automatic
-
指定要使用的 NAT 规则。
[edit services service-set ss2]
host# set nat-rules r1 - 定义用于转换源地址的 NAT 规则。为此,请将规则
input
的语句设置为match-direction
。此外,定义一个术语napt-44
,用作转换类型,用于转换上一步中定义的池的地址。[edit services nat] user@host# set rule rule name match-direction input user@host# set rule rule name term term name from source-address source-address user@host# set rule rule name term term name then translated source-pool pool name user@host# set rule rule name term term name then translated translation-type napt-44
例如:
[edit services nat] user@host# set rule r1 match-direction input user@host# set rule r1 term t1 from source-address 10.10.10.1 user@host# set rule r1 term t1 then translated source-pool NAPT-Pool user@host# set rule r1 term t1 then translated translation-type napt-44
-
指定接口服务。
[edit services service-set ss2]
host# set interface-service service-interface sp-5/0/0
结果
user@host# show services service-sets sset2
service-set ss2 {
nat-rules r1;
interface-service {
service-interface sp-5/0/0;
}
}
nat {
pool NAPT-Pool {
address 192.168.2.1/24;
port automatic;
}
rule r1 {
match-direction input;
term t1 {
from {
source-address {
10.10.10.1/32;
}
}
then {
translated {
source-pool NAPT-Pool;
translation-type {
napt-44;
}
}
}
}
}
}
示例:具有接口服务集的 MS-MPC 上的 NAPT 配置
此示例说明如何将多服务模块化端口集中器 (MS-MPC) 用作服务接口卡,在 MX 系列路由器上使用端口转换 (NAPT) 配置网络地址转换。
要求
此示例使用以下硬件和软件组件:
MX 系列路由器
多服务模块化端口集中器 (MS-MPC)
Junos OS 13.2R1 或更高版本
概述
服务提供商已选择 MS-MPC 作为平台来提供 NAT 服务以容纳新用户。
配置
要使用 MS-MPC 作为服务接口卡配置 NAPT44,请执行以下任务:
CLI 快速配置
要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改任何必要的详细信息以匹配您的网络配置,然后将命令复制并粘贴到 [edit] 层次结构级别的 CLI 中。
set interfaces ge-0/2/0 unit 0 family inet address 10.255.248.2/24 set interfaces xe-1/1/0 unit 0 family inet address 10.255.247.2/24 set interfaces xe-1/1/0 unit 0 family inet service input service-set sset1 set interfaces xe-1/1/0 unit 0 family inet service output service-set sset1 set interfaces ms-3/0/0 unit 0 family inet set applications application-set accept-algs application junos-http set applications application-set accept-algs application junos-ftp set applications application-set accept-algs application junos-tftp set applications application-set accept-algs application junos-telnet set applications application-set accept-algs application junos-sip set applications application-set accept-algs application junos-rtcp set services stateful-firewall rule sf-rule1 match-direction input-output set services stateful-firewall rule sf-rule1 term sf-term1 from source-address 10.255.247.0/24 set services stateful-firewall rule sf-rule1 term sf-term1 from application-sets accept-algs set services stateful-firewall rule sf-rule1 term sf-term1 then accept set services nat pool napt-pool address 1.1.1.0/24 set services nat pool napt-pool port automatic * nat rule for napt set services nat rule nat-rule1 match-direction input set services nat rule nat-rule1 term nat-term1 from source-address 10.255.247.0/24 set services nat rule nat-rule1 term nat-term1 from application-sets accept-algs set services nat rule nat-rule1 term nat-term1 then translated source-pool napt-pool set services nat rule nat-rule1 term nat-term1 then translated translation-type napt-44 * nat rule for basic nat set services service-set sset1 stateful-firewall-rules sf-rule1 set services service-set sset1 nat-rules nat-rule1 set services service-set sset1 interface-service service-interface ms-3/0/0
配置接口
分步过程
配置 NAT 处理所需的接口。您将需要以下接口:
面向客户的界面,用于处理来自和传往客户的流量。
面向互联网的界面。
向面向客户的接口提供 NAT 和有状态防火墙服务的服务接口
为面向客户的界面配置接口。
user@host# edit [edit ] user@host# set interfaces xe-1/1/0 unit 0 family inet address 10.255.247.2/24 user@host# set interfaces xe-1/1/0 unit 0 family inet service input service-set sset1 user@host# set interfaces xe-1/1/0 unit 0 family inet service output service-set sset1
为面向互联网的接口配置接口。
[edit ] set interfaces ge-0/2/0 unit 0 family inet address 10.255.248.2/24
配置将服务连接到面向客户的接口的服务集的接口。在我们的示例中,接口驻留在 MS-MPC 上。
[edit ] user@host# set interfaces ms-3/0/0 unit 0 family inet
配置可接受的应用程序流量的应用程序集
分步过程
确定传入流量可接受的应用程序。
指定包含可接受的传入应用程序流量的应用程序集。
user@host# set applications application-set accept-algs application junos-http user@host# set applications application-set accept-algs application junos-ftp user@host# set applications application-set accept-algs application junos-tftp user@host# set applications application-set accept-algs application junos-telnet user@host# set applications application-set accept-algs application junos-sip user@host# set applications application-set accept-algs application junos-rtcp
结果
user@host#edit services applications application-set accept-algs user@host#show application junos-http; application junos-ftp; application junos-tftp; application junos-telnet; application junos-sip; application junos-
配置有状态防火墙规则
分步过程
配置将接受所有传入流量的有状态防火墙规则。
为所有输入和输出指定防火墙匹配
user@hos#t set services stateful-firewall rule sf-rule1 match-direction input-output
识别来自面向客户的界面的源地址和可接受的应用程序流量。
user@host# set services stateful-firewall rule sf-rule1 term sf-term1 from source-address 10.255.247.0/24 user@host# set services stateful-firewall rule sf-rule1 term sf-term1 from application-sets accept-algs user@host# set services stateful-firewall rule sf-rule1 term sf-term1 then accept
结果
user@host# edit services stateful-firewall user@host# show rule sf-rule1 { match-direction input-output; term sf-term1 { from { source-address { 10.255.247.0/24; } application-sets accept-algs; } then { accept; } } }
配置 NAT 池和规则
分步过程
通过自动端口分配配置 NAT 池和地址转换规则。
使用自动端口分配配置 NAT 池。
user@host# set services nat pool napt-pool address 1.1.1.0/24 user@host# set services nat pool napt-pool port automatic auto
使用定义的 NAT 池配置应用转换类型的
napt-44
NAT 规则。user@host# set services nat rule nat-rule1 term nat-term1 from application-sets accept-algs user@host# set services nat rule nat-rule1 term nat-term1 then translated source-pool napt-pool user@host# set services nat rule nat-rule1 term nat-term1 then translated translation-type napt-44
结果
user@host#edit services nat user@host#show pool napt-pool { address 1.1.1.0/24; port { automatic; } } rule nat-rule1 { match-direction input; term nat-term1 { from { source-address { 10.255.247.0/24; } application-sets accept-algs; } then { translated { source-pool napt-pool; translation-type { napt-44; } } } } }
配置服务集
分步过程
配置接口类型服务集。
指定应用于客户流量的 NAT 和有状态防火墙规则。
user@host set services service-set sset1 stateful-firewall-rules sf-rule1 user@host set services service-set sset1 nat-rules bat-rule1
指定将规则应用于客户流量的服务接口。
set services service-set sset1 interface-service service-interface ms-3/0/0
结果
user@host# edit services service-set sset1 user@host# show set services service-set sset1 stateful-firewall-rules sf-rule1 set services service-set sset1 nat-rules nat-rule1 set services service-set sset1 interface-service service-interface ms-3/0/0
更改历史记录表
功能支持由您使用的平台和版本决定。使用功能资源管理器确定您的平台是否支持某个 功能 。
[edit services nat pool nat-pool-name]
选项包含在语句中
port automatic
,
sequential
以便按顺序分配指定范围内的端口。
auto
选项将被隐藏并已弃用,仅出于向后兼容性而保留。
sequential
选项,使您能够配置端口的顺序分配。