网络地址转换概述
Junos Address Aware 网络寻址概述
Junos Address Aware 网络寻址提供用于转换 IP 地址的网络地址转换 (NAT) 功能。这一点尤为重要,因为互联网编号分配机构 (IANA) 在 2011 年初分配了最后一大块 IPv4 地址。
本主题包含以下部分:
- NAT 的优势
- NAT 概念和设施概述
- IPv4 到 IPv4 基本 NAT
- 确定性 NAPT
- 静态目标 NAT
- 两次 NAT
- IPv6 NAT
- 应用级网关 (ALG) 支持
- 带有 DNS ALG 的 NAT-PT
- 动态 NAT
- 状态式 NAT64
- 464XLAT
- 双堆栈精简版
- Junos Address Aware 网络寻址线卡支持
NAT 的优势
NAT 支持广泛的网络目标,包括:
-
将专用网络上的一组主机地址隐藏在公共地址池后面,以保护主机地址免受网络攻击的直接目标,并避免 IPv4 地址耗尽
-
提供根据业务需求过渡到 IPv6 并确保用户和服务不间断增长的工具
-
提供 IPv4–IPv6 共存
NAT 概念和设施概述
Junos Address Aware 网络寻址为 IPv4 和 IPv6 网络提供运营商级 NAT (CGN),并促进不同类型网络之间的流量传输。
Junos Address Aware 网络寻址支持多种 NAT 转换选项集:
-
静态源转换 — 允许您隐藏专用网络。它具有原始地址和转换地址之间的一对一映射;映射是静态配置的。有关更多信息,请参阅 基本 NAT 。
-
确定性 NAPT — 通过确保原始源 IPv4 或 IPv6 地址和端口始终映射到相同的 NAT 后 IPv4 地址和端口范围,无需进行地址转换日志记录。
-
动态源转换 — 包括两个选项:动态仅地址源转换和 网络地址端口转换 (NAPT):
-
静态目标转换 — 允许您访问选定的专用服务器。它具有转换后的地址和目标地址之间的一对一映射;映射是静态配置的。有关更多信息,请参阅 静态目标 NAT。
-
协议转换 — 当会话跨 IPv4 或 IPv6 边界启动时,允许您从池中以静态或动态方式分配地址。有关更多信息,请参阅 配置 NAT-PT、使用 DNS ALG 的 NAT-PT 和 有状态 NAT64。
-
使用软线将 IPv4 数据包封装到 IPv6 数据包中 — 使数据包能够通过软线传输到运营商级 NAT 端点,在该端点中,它们会经过源 NAT 处理以隐藏原始源地址。有关更多信息,请参阅 IPv4 到 IPv6 过渡的隧道服务概述。
Junos Address Aware 网络寻址支持 IETF RFC 和互联网草案中所述的 NAT 功能,如标准参考中的“支持的 NAT 和 SIP 标准”中所示。
并非所有接口类型都支持所有类型的 NAT。请参阅按 接口卡类型划分的 Junos Address Aware 的运营商等级 NAT 功能比较,其中列出了支持的接口上可用的功能。
IPv4 到 IPv4 基本 NAT
基本网络地址转换或基本 NAT 是一种将 IP 地址从一个组映射到另一个组的方法,对最终用户透明。网络地址端口转换 (NAPT) 是一种将多个网络地址及其 TCP/UDP 端口转换为单个网络地址及其 TCP/UDP 端口的方法。这两种作(称为传统 NAT)共同提供了一种机制,用于将具有专用地址的领域连接到具有全局唯一注册地址的外部领域。
RFC 3022( 传统 IP 网络地址转换器)中指定的传统NAT由 Junos Address Aware 网络寻址 提供全面支持。此外,源地址还支持 NAPT。
基本 NAT
使用基本 NAT 时,系统会留出一个外部地址块,用于在私有域中的主机发起会话时将地址转换为外部域。对于从专用网络出站的数据包,基本 NAT 转换源 IP 地址和相关字段,例如 IP、TCP、UDP 和 ICMP 标头校验和。对于入站数据包,基本 NAT 转换目标 IP 地址和上面列出的校验和。
基本 NAT 支持发夹。
NAPT
使用 NAPT 使专用网络的组件能够共享单个外部地址。NAPT 将专用网络的传输标识符(例如,TCP 端口号、UDP 端口号或 ICMP 查询 ID)转换为单个外部地址。NAPT 可以与基本 NAT 结合使用,以将外部地址池与端口转换结合使用。
对于从专用网络出站的数据包,NAPT 转换源 IP 地址、源传输标识符(TCP/UDP 端口或 ICMP 查询 ID)和相关字段,例如 IP、TCP、UDP 和 ICMP 标头校验和。对于入站数据包,NAPT 会转换目标 IP 地址、目的地传输标识符以及 IP 和传输标头校验和。
在配备 MS-MIC 和 MS-MPC 的 MX 系列路由器上,如果配置了 NAPT44 NAT 规则,并且欺骗数据包的源 IP 地址等于 NAT 池,并且 NAT 规则匹配条件失败,则数据包将在服务 PIC 和数据包转发引擎之间连续循环。在这种情况下,建议手动清除会话并创建过滤器来阻止 NAT 池 IP 欺骗。
NAPT 支持发夹。
确定性 NAPT
使用确定性 NAPT44 来确保原始源 IPv4 地址和端口始终映射到相同的 NAT 后 IPv4 地址和端口范围,并且给定转换的外部 IPv4 地址和端口的反向映射始终映射到相同的内部 IP 地址。这样就无需进行地址转换日志记录。从 Junos OS 17.4R1 版开始,MS-MPC 和 MS-MIC 支持确定性 NAPT64。确定性 NAPT64 可确保原始源 IPv6 地址和端口始终映射到相同的 NAT 后 IPv4 地址和端口范围,并且给定转换的外部 IPv4 地址和端口的反向映射始终映射到相同的内部 IPv6 地址。
静态目标 NAT
使用静态目标 NAT 将外部流量的目的地址转换为目标池中指定的地址。目标池包含一个地址,没有端口配置。
有关静态目标 NAT 的详细信息,请参阅 RFC 2663,IP 网络地址转换器 (NAT) 术语和注意事项。
两次 NAT
在两次 NAT 中,当数据包遍历 NAT 路由器时,源地址和目标地址都会受到转换。要转换的源信息可以是“仅地址”,也可以是“地址和端口”。例如,当连接两个网络时,如果一个网络中的所有或部分地址与另一个网络中的地址重叠(无论网络是专用网络还是公共网络),则可以使用两次 NAT。在传统 NAT 中,仅转换其中一个地址。
要配置两次 NAT,必须为匹配方向、池或前缀和转换类型指定目标地址和源地址。
如果在同一服务集中配置了两次NAT,则可以根据状态防火墙、NAT或服务等级 (CoS) 规则为 ICMP 和 traceroute 配置应用级网关 (ALG)。这些 ALG 不能应用于数据包网关控制协议 (PGCP) 创建的流量。两次 NAT 不支持其他 ALG。默认情况下,两次 NAT 功能会影响嵌入在 ICMP 错误消息有效负载中的 IP、TCP 和 UDP 报头。
Junos Address Aware NAT 完全支持在 RFC 2663《 IP 网络地址转换器 (NAT) 术语和注意事项》中指定的网络寻址。
IPv6 NAT
IPv6 到 IPv6 NAT (NAT66) 在互联网草案 draft-mrw-behave-nat66-01 中定义, IPv6 到 IPv6 网络地址转换 (NAT66) 得到 Junos Address Aware 网络寻址的完全支持。
应用级网关 (ALG) 支持
Junos Address Aware 网络寻址支持许多 ALG。您可以使用 NAT 规则根据 ALGS 过滤传入流量。有关详细信息,请参阅 网络地址转换规则概述。
带有 DNS ALG 的 NAT-PT
NAT-PT 和域名系统 (DNS) ALG 用于促进 IPv6 主机与 IPv4 主机之间的通信。当跨 IPv4 或 IPv6 边界启动会话时,NAT-PT 会使用 IPv4 地址池动态地将地址分配给 IPv6 节点。入站和出站会话必须遍历同一 NAT-PT 路由器,以便跟踪这些会话。RFC 2766, 网络地址转换 - 协议转换 (NAT-PT)“建议使用 NAT-PT 在仅支持 IPv6 的节点和仅支持 IPv4 的节点之间进行转换, 而不要 在 IPv6 节点之间进行 IPv6 到 IPv6 的转换或在 IPv4 节点之间进行 IPv4 到 IPv4 的转换。
DNS 是一种分布式分层命名系统,适用于连接到互联网或专用网络的计算机、服务或任何资源。DNS ALG 是一种特定于应用的代理,允许 IPv6 节点与 IPv4 节点进行通信,反之亦然。
当 DNS ALG 与 NAT-PT 结合使用时,DNS ALG 会将 DNS 查询和响应中的 IPv6 地址转换为相应的 IPv4 地址,反之亦然。IPv4 名称到地址的映射保存在带有“A”查询的 DNS 中。IPv6 名称到地址的映射通过“AAAA”查询保存在 DNS 中。
对于 IPv6 DNS 查询,请在层次结构级别使用[edit applications application application-name]该do-not-translate-AAAA-query-to-A-query语句。
动态 NAT
动态 NAT 流如 图 1 所示。
使用动态 NAT,可以将专用 IP 地址(源)映射到从已注册(公共)IP 地址池中绘制的公共 IP 地址。池中的 NAT 地址是动态分配的。动态分配地址还允许多个专用主机使用多个公共 IP 地址,这与源静态 NAT 所需的同等大小的池相反。
有关动态地址转换的详细信息,请参阅 RFC 2663,IP 网络地址转换器 (NAT) 术语和注意事项。
状态式 NAT64
有状态 NAT64 流如 图 2 所示。
状态式 NAT64 是一种迁移到 IPv6 网络,同时处理 IPv4 地址耗尽的机制。通过允许仅支持 IPv6 的客户端使用单播 UDP、TCP 或 ICMP 联系 IPv4 服务器,多个仅支持 IPv6 的客户端可以共享相同的公共 IPv4 服务器地址。为了允许共享 IPv4 服务器地址,NAT64 将传入的 IPv6 数据包转换为 IPv4(反之亦然)。
将状态 NAT64 与 DNS64 结合使用时,IPv6 客户端或 IPv4 服务器通常不需要进行任何更改。DNS64 不在本文档的范围内,因为它通常作为当前部署的 DNS 服务器的增强功能来实现。
Junos Address Aware 网络寻址 完全支持在 RFC 6146《 有状态 NAT64:从 IPv6 客户端到 IPv4 服务器的网络地址和协议转换》中指定的状态 NAT64。
464XLAT
从 Junos OS 17.1R1 版开始,您可以配置 464XLAT 提供商端传输器 (PLAT)。仅在 MS-MIC 和 MS-MPC 上受支持。 464XLAT 为具有专用地址的 IPv4 客户端提供了一种简单且可扩展的技术,以通过 IPv6 网络连接到 IPv4 主机。464XLAT 在客户端-服务器模型中仅支持 IPv4,因此不支持 IPv4 对等通信或入站 IPv4 连接。
客户端转换器 (CLAT) 不是瞻博网络产品,它通过在 IPv6 /96 前缀中嵌入 IPv4 源地址和目标地址,将 IPv4 数据包转换为 IPv6,然后通过 IPv6 网络将数据包发送到 PLAT。PLAT 将数据包转换为 IPv4,并通过 IPv4 网络将数据包发送至 IPv4 主机(参见 图 3)。
XLAT464具有无需维护 IPv4 网络和分配额外公共 IPv4 地址的优势。
CLAT 可以驻留在仅支持 IPv6 的移动网络中的最终用户移动设备上,从而允许移动网络提供商为其用户 and 推出 IPv6,支持移动设备上仅支持 IPv4 的应用(参见 图 4)。
双堆栈精简版
双栈精简版 (DS-Lite) 流如 图 5 所示。
DS-Lite 使用 IPv4-over-IPv6 隧道穿过 IPv6 接入网络,达到运营商级 IPv4-IPv4 NAT。向后兼容 IPv4,有利于在互联网上分阶段引入 IPv6。
带有 MS-DPC 的 MX 系列路由器和带有 MS-100、MS-400 和 MS-500 多服务 PIC 的 M Series 路由器支持 DS-Lite。从 Junos OS 17.4R1 版本开始,带有 MS-MPC 和 MS-MIC 的 MX 系列路由器支持 DS-Lite。从 Junos OS 19.2R1 版本开始,MX 虚拟机箱和 MX 宽带网络网关 (BNG) 路由器支持 DS-Lite。
Junos Address Aware 网络寻址线卡支持
以下线卡提供 Junos Address Aware 网络寻址技术:
-
多服务密集端口集中器 (MS-DPC)
-
MS-100、MS-400 和 MS-500 多服务 PIC
-
多服务模块化端口集中器 (MS-MPC) 和多服务模块化接口卡 (MS-MIC)
-
模块化端口集中器(内联 NAT)。
有关每种卡支持的特定 NAT 类型的列表,请参阅 按接口卡类型划分的 Junos Address Aware 的运营商级 NAT 功能比较。
也可以看看
IPv6 过渡方案示例
Junos OS 支持 Junos OS 客户所需的许多 IPv6 转换方案。以下是部分示例:
示例 1:非 IPv6 接入网络的 IPv4 耗尽
图 6 描述了互联网服务提供商 (ISP) 未对其 IPv4 网络进行显著更改的情景。此方法使 IPv4 主机能够访问 IPv4 互联网,并且 IPv6 主机能够访问 IPv6 互联网。双栈主机在使用 IPv4 接入服务时可被视为 IPv4 主机,在使用 IPv6 接入服务时可将其视为 IPv6 主机。
这种方法必须部署两种新型设备:双栈家庭网关和双栈运营商级网络地址转换 (NAT)。双栈家庭网关集成了 IPv4 转发和 v6-over-v4 隧道功能。它还可以集成 v4-v4 NAT 功能。双栈运营商级 NAT (CGN) 集成了 v6-over-v4 隧道和运营商级 v4-v4 NAT 功能。
示例 2:IPv6 接入网络的 IPv4 耗尽
在 图 7 所示的场景中,ISP 网络仅支持 IPv6。
双堆栈精简版 (DS-Lite) 解决方案支持仅支持 IPv6 的 ISP。这种方法的最佳业务模式是,客户端设备 (CPE) 集成了将 IPv6 隧道连接到 IPv4 骨干网、将 IPv4 隧道连接到 IPv6 骨干网的功能,并能自动检测需要哪种解决方案。
并非特定 ISP 的所有客户都必须同时从 IPv4 访问切换到 IPv6 访问;事实上,通过逐步切换客户组(例如,连接到单一接入点的所有客户组),可以更好地管理过渡。事实证明,与全面转换相比,这种渐进式方法应该更容易进行计划、安排和执行。
示例 3: 移动网络的 IPv4 耗尽
移动网络的复杂性要求采用灵活的迁移方法,以确保在过渡期间将中断降至最低,并最大限度地提高向后兼容性。NAT64 可用于启用 IPv6 设备与 IPv4 主机通信,而无需修改客户端。
Junos OS 运营商级 NAT 实施概述
Junos OS 允许您根据用于实施的服务接口类型来实施和扩展运营商等级网络地址转换 (CGNAT) 解决方案:
多服务密集端口集中器 (MS-DPC) — 第 3 层服务包用于为 MS-DPC 自适应服务 PIC 配置 NAT。此解决方案提供 Junos Address Aware 网络寻址概述中所述的 NAT 功能。
MS-100、MS-400 和 MS-500 多服务 PIC — 第 3 层服务包用于为多服务 PIC 配置 NAT。此解决方案提供 Junos Address Aware 网络寻址概述中所述的 NAT 功能。
多服务模块化端口集中器 (MS-MPC) 和多服务模块化接口卡 (MS-MIC) — MS-MPC 和 MS-MIC 经过预配置,可以配置运营商级 NAT。此解决方案提供 Junos Address Aware 网络寻址概述中所述的 NAT 功能。
模块化端口集中器 (MPC) 线卡的内联 NAT) — 内联 NAT 利用 MPC 线卡的服务功能,允许在数据平面上经济高效地实施 NAT 功能,如 内联网络地址转换概述中所述。
也可以看看
按接口卡类型划分的 Junos Address Aware 的运营商等级 NAT 功能比较
表 1 总结了 Junos OS 运营商级 NAT 实现之间的功能差异。
从 Junos OS 17.2R1 版开始,MPC5E 和 MPC6E 支持内联 NAT。
从 Junos OS 17.4R1 版开始,MPC7E、MPC8E 和 MPC9E 支持内联 NAT。
功能 |
MS-DPC MS-100 MS-400 MS-500 |
MS-MPC MS-MIC |
MPC1、MPC2、MPC3、MPC5E、MPC6E、MPC7E、MPC8E 和 MPC9E 内联 NAT |
|---|---|---|---|
静态源 NAT |
是的 |
是的 |
是的 |
动态源 NAT - 仅地址 |
是的 |
是的 |
不 |
动态源 NAT - 具有安全端口块分配的 NAPT 端口转换 |
是的 |
是(动态源 NAT - 从 Junos OS 14.2R2 版开始,MS-MPC 和 MS-MIC 支持具有安全端口块分配的 NAPT 端口转换) |
不 |
动态源 NAT - 采用确定性端口块分配的 NAPT44 端口转换 |
是的 |
yes(动态源NAT - 从 Junos OS 17.3R1 版本开始,MS-MPC 和 MS-MIC 支持具有确定性端口块分配的 NAPT44 端口转换,Junos OS 14.2R7 和更高版本的 14.2 版本,15.1R3 及更高版本的 15.1 版本,以及 16.1R5 及更高版本的 16.1 版本) |
不 |
动态源 NAT - 具有确定性端口块分配的 NAPT64 端口转换 |
不 |
是(从 Junos OS 17.4R1 版开始,MS-MPC 和 MS-MIC 支持动态源 NAT - 具有确定性端口块分配的 NAPT64 端口转换) |
不 |
静态目标 NAT |
是的 |
是的 |
是的
注意:
目标 NAT 可以间接实现。请参阅 内联网络地址转换概述 |
两次 NAT |
是的 |
是(从 Junos OS 15.1R1 版开始,MS-MPC 和 MS-MIC 支持两次 NAT) |
是的
注意:
可以间接实现两次 NAT。请参阅 内联网络地址转换概述 |
NAPT - 保留奇偶校验和范围 |
是的 |
是(NAPT - 从 Junos OS 15.1R1 版开始,MS-MPC 和 MS-MIC 支持保留奇偶校验和范围) |
不 |
NAPT - APP/EIF/EIM |
是的 |
是的 |
不 |
IKE ALG |
不 |
是(从 Junos OS 14.2R7、15.1R5、16.1R2 和 17.1R1 版开始) |
不 |
状态式 NAT64 |
是的 |
是的 |
不 |
带 APP/EIM/EIF 的有状态 NAT64 |
不 |
是的 |
不 |
带 ALG 的有状态 NAT64
|
不 |
是的 |
不 |
DS-Lite |
是的 |
是(从 Junos OS 版 17.4R1 开始,MS-MPC 和 MS-MIC 支持 DS-Lite) |
不 |
第 6 名 |
是的 |
不 |
不 |
6 对 4 |
是的 |
不 |
不 |
464XLAT |
不 |
是(从 Junos OS 17.1R1 版开始) |
不 |
跨 NAT 池的重叠地址 |
是的 |
是的 |
不 |
| 过载池 |
是的 |
不 |
不 |
端口控制协议 |
是的 |
是(从 Junos OS 17.4R1 版开始,MS-MPC 和 MS-MIC 支持使用 NAPT44 的端口控制协议。从 Junos OS 18.2R1 版开始,MS-MPC 和 MS-MIC 上的端口控制协议可支持 DS-Lite。PCP 提供了一种机制来控制上游设备(例如NAT44和防火墙设备)转发的传入数据包,以及一种减少应用激活流量的机制。 |
不 |
CGN-PIC |
是的 |
不 |
不 |
AMS 支持 |
不 |
是的 |
不 |
端口转发 |
是的 |
是(从 Junos OS 17.4R1 版开始,MS-MPC 和 MS-MIC 支持端口转发。) |
不 |
无翻译 |
是的 |
是(从 Junos OS 15.1R1 版开始,不支持 MS-MPC 和 MS-MIC 进行转换) |
是的 |
表 2 按线卡类型总结了转换类型的可用性。
翻译类型 |
MS-DPC MS-100 MS-400 MS-500 |
MS-MPC MS-MIC |
MPC1、MPC2、MPC3、MPC5E、MPC6E、MPC7E、MPC8E 和 MPC9E 内联 NAT |
|---|---|---|---|
|
是的 |
是的 |
是的 |
|
是的 |
不 |
不 |
|
是的 |
不 |
不 |
|
是的 |
是( |
不 |
|
不 |
是( |
不 |
|
是的 |
是的 |
不 |
|
是的 |
是的 |
不 |
|
是的 |
是的 |
不 |
|
是的 |
不 |
不 |
|
是的 |
不 |
不 |
|
不 |
是(从 Junos OS 17.1R1 版开始) |
不 |
|
是的 |
是的 |
不 |
|
是的 |
是( |
是( |
|
是的 |
是( |
不 |
|
是的 |
是( |
不 |
可用于 Junos OS 地址感知 NAT 的 ALG
表 3 中列出的以下应用级别网关 (ALG) 支持在列出的平台上进行 NAT 处理。
要查看这些 Junos OS 默认应用程序的实施详细信息(端口、协议等),请在表中找到 Junos OS 默认 ALG 名称,然后在 中 groups查找列出的名称。例如,有关 TFTP 的详细信息,请按图中查找 junos-tftp 。
Junos OS 提供了 junos-alg,它使其他 ALG 能够通过处理 ALG 注册、导致慢速路径数据包流经已注册的 ALG 以及将 ALG 事件传输到 ALG 插件来运行。 junos-alg ALG 在 MS-MPC 和 MS-MIC 平台上自动可用,无需进一步配置。
在具有 MS-MIC 和 MS-MPC 的MX 系列路由器上,网络地址端口转换 (NAPT) 不支持远程 shell (RSH) 和远程登录 (rlogin) 应用层网关 (ALG)。
user@host# show groups junos-defaults applications application junos-tftp application-protocol tftp; protocol udp; destination-port 69;
表 3 汇总了可用于服务接口卡的 Junos OS 地址感知 NAT 的 ALG。
ALG |
MS-DPC |
MS-MPC、MS-MIC |
Junos OS 默认 ALG 名称 |
|---|---|---|---|
基本 TCP ALG |
是的 |
是的 |
注意:
不支持特定的 Junos OS ALG。但是,默认情况下,名为 TCP 跟踪器的功能可执行分段排序和重新传输以及连接跟踪,以及 TCP 连接的验证。 |
基本 UDP ALG |
是的 |
是的 |
注意:
TCP 跟踪器对 UDP 执行有限完整性和验证检查。 |
BOOTP |
是的 |
不 |
|
DCE RPC 服务 |
是的 |
是的 |
|
DNS |
是的 |
是的 |
|
DNS |
不 |
不 |
|
FTP |
是的 |
是的 |
|
网守 RAS(从 Junos OS 17.1R1 版开始) |
不 |
是的 |
|
H323 |
不 |
是的 |
|
ICMP |
是的 |
是的
注意:
在 Junos OS 14.1 及更低版本中,默认情况下会处理 ICMP 消息,但不提供 PING ALG 支持。从 Junos OS 14.2 开始,默认情况下会处理 ICMP 消息,并提供 PING ALG 支持。 |
|
IIOP |
是的 |
不 |
|
IKE ALG |
不 |
是的
注意:
从 Junos OS 14.2R7、15.1R5、16.1R2 和 17.1R1 版本开始,MS-MPC 和 MS-MIC 支持 IKE ALG ALG。 |
|
IP |
是的 |
TCP 跟踪器在这些平台上默认可用,但执行有限完整性和验证检查。 |
|
NETBIOS |
是的 |
不 |
|
网络秀 |
是的 |
不 |
|
PPTP |
是的 |
是的 |
|
真实音频 |
是的 |
不 |
|
Sun RPC 和 RPC 端口映射服务 |
是的 |
是的 |
|
RTSP |
是的 |
是的 |
|
SIP |
是的 |
是的 |
SIP
注意:
对于在 MS-MIC 和 MS-MPC 接口卡上进行 NAT 处理的 SIP 会话限制为 12 小时(720 分钟)。MS-DPC 上的 SIP 会话没有时间限制。 |
SNMP |
是的 |
不 |
|
SQLNET |
是的 |
是的 |
|
TFTP |
是的 |
是的 |
|
跟踪路由 |
是的 |
是的 |
|
Unix 远程 Shell 服务 |
是的 |
是的
注意:
网络地址端口转换 (NAPT) 不支持远程 Shell (RSH) ALG。 |
|
WINFrame |
是的 |
不 |
|
TALK-UDP |
不 |
是的 |
|
MS RPC |
不 |
是的 |
|
也可以看看
默认情况下可用于 ACX500 路由器上的 Junos OS 地址感知 NAT 的 ALG
ACX500 路由器上的 NAT 处理支持表 4 中列出的以下应用级别网关 (ALG)。
要查看这些 Junos OS 默认应用程序的实施详细信息(端口、协议等),请在表中找到 Junos OS 默认 ALG 名称,然后在 中 groups查找列出的名称。例如,有关 TFTP 的详细信息,请按图中查找 junos-tftp 。
仅 ACX500 室内路由器支持用于 NAT 的 ALG。
Junos OS 提供了 junos-alg,它使其他 ALG 能够通过处理 ALG 注册、导致慢速路径数据包流经已注册的 ALG 以及将 ALG 事件传输到 ALG 插件来运行。 junos-alg ALG 在 ACX500 路由器上自动可用,无需进一步配置。
ACX500 路由器上的网络地址端口转换 (NAPT) 不支持远程登录 (rlogin) 应用层网关 (ALG)。
| ALG |
ACX500 路由器 |
Junos OS 默认 ALG 名称 |
|---|---|---|
| 基本 TCP ALG |
是的 |
注意:
不支持特定的 Junos OS ALG。但是,默认情况下,名为 TCP 跟踪器的功能可执行分段排序和重新传输以及连接跟踪,以及 TCP 连接的验证。 |
| 基本 UDP ALG |
是的 |
注意:
TCP 跟踪器对 UDP 执行有限完整性和验证检查。 |
| DNS |
是的 |
|
| FTP |
是的 |
|
| ICMP |
是的
注意:
默认情况下会处理 ICMP 消息,但不提供 PING ALG 支持。 |
|
| TFTP |
是的 |
|
| Unix 远程 Shell 服务 |
是的
注意:
网络地址端口转换 (NAPT) 不支持远程 Shell (RSH) ALG。 |
|
ALG 支持详细信息
本部分包含有关 ALG 的详细信息。它包括以下内容:
基本 TCP
此 ALG 对 TCP 数据包执行基本的完整性检查。如果发现错误,将生成以下异常事件和系统日志消息:
-
TCP 源端口或目标端口 0
-
TCP 标头长度检查失败
-
TCP 序列号为零,未设置任何标志
-
设置了 TCP 序列号零和 FIN/PSH/RST 标志
-
TCP FIN/RST 或 SYN(URG|鳍片|RST) 标志已设置
TCP ALG 执行以下步骤:
-
当路由器收到 SYN 数据包时,ALG 会创建 TCP 正向和反向流,并将其分组到 会话中。它跟踪 TCP 三次握手。
-
SYN 防御机制跟踪 TCP 连接建立状态。它希望 TCP 会话在很短的时间间隔(目前为 4 秒)内建立。如果在此期间未建立 TCP 三次握手,则会话将终止。
-
激活机制可检测具有无响应端点的 TCP 会话。
-
仅当流量与 ICMP 数据中指定的选择器信息匹配时,才允许 ICMP 错误。
基本 UDP
此 ALG 对 UDP 报头执行基本的健全性检查。如果发现错误,将生成以下异常事件和系统日志消息:
-
UDP 源端口或目标端口 0
-
UDP 标头长度检查失败
UDP ALG 执行以下步骤:
-
当收到第一个数据包时,ALG 会创建双向流以接受正向和反向 UDP 会话流量。
-
如果会话空闲时间超过允许的最大空闲时间(默认值为 30 秒),则流将被删除。
-
仅当流量与 ICMP 数据中指定的选择器信息匹配时,才允许 ICMP 错误。
DNS
域名系统 (DNS) ALG 处理与定位域名并将其转换为 IP 地址相关的数据。ALG 通常在端口 53 上运行。ALG 监控 DNS 查询和回复数据包,仅支持 UDP 流量。ALG 不支持有效负载转换。DNS ALG 仅在收到回复或达到空闲超时时关闭会话。
以下是配置 DNS ALG 的示例:
-
创建 NAT 接口。
[edit] services { service-set set-dns { nat-rules nat-dns; interface-service { service-interface ms-0/2/0; } } -
配置 NAT 池。
[edit] services { nat { pool p-napt { address 10.1.1.1/32; } } } -
为 DNS ALG 定义 NAT 规则。
[edit] services { nat { rule nat-dns { match-direction input; term term1 { from { source-address { 10.50.50.2/32; } applications junos-dns-udp;; } then { translated { source-pool p-napt; translation-type { basic-nat44; } } } } } } -
将服务集绑定到接口。
[edit] interfaces { ge-0/1/0 { media-type copper; unit 0 { family inet { service { input { service-set set-dns; } output { service-set set-dns; } } address 10.50.50.1/24; } } } ge-0/1/1 { media-type copper; unit 0 { family inet { address 10.60.60.1/24; } } } ms-0/2/0 { unit 0 { family inet; } } }
FTP
FTP 是 RFC 959 中指定的文件传输协议。除了主控制连接外,还为客户端和服务器之间的任何数据传输进行数据连接;主机、端口和方向通过控制通道进行协商。
对于非被动模式 FTP,Junos OS 状态防火墙服务会扫描客户端到服务器应用数据中的 PORT 命令,该命令提供服务器连接到的 IP 地址和端口号。对于被动模式 FTP,Junos OS 状态防火墙服务会扫描客户端到服务器的应用数据中的 PASV 命令,然后扫描服务器到客户端的响应中的 227 响应,其中包含客户端连接到的 IP 地址和端口号。
还有一个额外的复杂性:FTP 以 ASCII 表示这些地址和端口号。因此,当地址和端口被重写时,TCP 序列号可能会发生变化,此后NAT服务需要通过对所有后续数据包执行序列NAT来保持 SEQ 和 ACK 编号中的此增量。
要支持状态防火墙和 NAT 服务,您需要在 TCP 端口 21 上配置 FTP ALG 以启用 FTP 控制协议。ALG 执行以下任务:
-
自动为动态数据连接分配数据端口和防火墙权限
-
为动态协商的数据连接创建流
-
在主动和被动模式下监控控制连接
-
使用适当的 NAT 地址和端口信息重写控制数据包
在 ACX500 上,要使无源 FTP 在未启用 FTP 应用层网关 (ALG) 的情况下正常工作(通过未在层次结构级别指定application junos-ftp[edit services nat rule rule-name term term-name from]该语句),您必须启用已启用的地址池配对 (APP) 功能(通过在层次结构级别包含address-pooling[edit services nat rule rule-name term term-name then translated]该语句)。此类配置会导致数据和控制 FTP 会话接收相同的 NAT 地址。
以下是配置 FTP ALG 的示例:
-
创建 NAT 接口。
[edit] services { service-set set-ftp { nat-rules nat-ftp; interface-service { service-interface ms-0/2/0; } } -
配置 NAT 池。
[edit] services { nat { pool p-napt { address 10.30.30.0/24; port { range low 9000 high 9010; } } } -
为 FTP ALG 定义 NAT 规则。
[edit] services { nat { rule nat-ftp { match-direction input; term term1 { from { source-address { 10.10.10.0/24; } applications junos-ftp; } then { translated { source-pool p-napt; translation-type { napt-44; } } } } } } -
将服务集绑定到接口。
[edit] interfaces { ge-0/1/0 { media-type copper; unit 0 { family inet { service { input { service-set set-ftp; } output { service-set set-ftp; } } address 10.10.10.1/24; } } } ge-0/1/1 { media-type copper; unit 0 { family inet { address 10.10.10.1/24; } } } ms-0/2/0 { unit 0 { family inet; } } }
ICMP
互联网控制消息协议 (ICMP) 在 RFC 792 中定义。Junos OS 允许按特定类型或特定类型代码值过滤 ICMP 消息。缺少专门配置的类型和代码的 ICMP 错误数据包会与相反方向的任何现有流量进行匹配,以检查错误数据包的合法性。通过过滤器匹配的 ICMP 错误数据包需要进行 NAT 转换。
ICMP ALG 始终使用 ICMP 序列号以有状态方式跟踪 ping 流量。仅当存在具有相应序列号的回显请求时,才会转发每个回显回复。对于任何 ping 流,只能转发 20 个回显请求而不收到回显回复。配置动态 NAT 时,将转换 PING 数据包标识符,以允许 NAT 池中的其他主机使用相同的标识符。
如果需要协议,支持 NAT 服务需要配置 ICMP ALG。您可以配置 ICMP 类型和代码以进行其他过滤。
TFTP
简单文件传输协议 (TFTP) 在 RFC 1350 中规定。初始 TFTP 请求被发送到 UDP 目标端口 69。可以创建其他流来 获取 或 放置 单个文件。支持 NAT 服务需要为 UDP 目标端口 69 配置 TFTP ALG。
以下是配置 TFTP ALG 的示例:
-
创建 NAT 接口。
[edit] services { service-set set-tftp { nat-rules nat-tftp; interface-service { service-interface ms-0/2/0; } } -
配置 NAT 池。
[edit] services { nat { pool p-napt { address 10.1.1.1/32; } } } -
为 TFTP ALG 定义 NAT 规则。
[edit] services { nat { rule nat-tftp { match-direction input; term term1 { from { source-address { 10.50.50.2/32; } applications junos-tftp; } then { translated { source-pool p-napt; translation-type { dynamic-nat44; } } } } } } -
将服务集绑定到接口。
[edit] interfaces { ge-0/1/0 { media-type copper; unit 0 { family inet { service { input { service-set set-tftp; } output { service-set set-tftp; } } address 10.50.50.1/24; } } } ge-0/1/1 { media-type copper; unit 0 { family inet { address 10.60.60.1/24; } } } ms-0/2/0 { unit 0 { family inet; } } }
UNIX 远程 Shell 服务
UNIX 远程 shell 服务的基础有三种协议:
-
执行 — 远程命令执行;使客户机系统上的用户能够在远程系统上执行命令。从客户端 (
rcmd) 到服务器 (rshd) 的第一个命令使用已知的 TCP 端口 512。可以根据 的rcmd请求打开第二个 TCP 连接。第二个连接的客户端端口号将作为 ASCII 字符串发送到服务器。 -
登录 — 更广为人知的名称
rlogin;使用众所周知的 TCP 端口 513。有关详细信息,请参阅 RFC 1282。不需要特殊的防火墙处理。 -
Shell — 远程命令执行;使客户机系统上的用户能够在远程系统上执行命令。从客户端 (
rcmd) 到服务器 (rshd) 的第一个命令使用已知的 TCP 端口 514。可以根据 的rcmd请求打开第二个 TCP 连接。第二个连接的客户端端口号将作为 ASCII 字符串发送到服务器。
NAT 远程 Shell 服务要求分配的任何动态源端口都在 512 到 1023 的端口范围内。如果配置 NAT 池,则此端口范围专门保留给远程 shell 应用程序。
以下是配置 RSH ALG 的示例:
-
创建 NAT 接口。
[edit] services { service-set set-rsh { nat-rules nat-rsh; interface-service { service-interface ms-0/2/0; } } -
配置 NAT 池。
[edit] services { nat { pool p-napt { address 10.1.1.1/32; } } } -
为 RSH ALG 定义 NAT 规则。
[edit] services { nat { rule nat-rsh { match-direction input; term term1 { from { source-address { 510.0.50.2/32; } applications junos-rsh; } then { translated { source-pool p-napt; translation-type { dynamic-nat44; } } } } } } -
将服务集绑定到接口。
[edit] interfaces { ge-0/1/0 { media-type copper; unit 0 { family inet { service { input { service-set set-rsh; } output { service-set set-rsh; } } address 10.50.50.1/24; } } } ge-0/1/1 { media-type copper; unit 0 { family inet { address 10.60.60.1/24; } } } ms-0/2/0 { unit 0 { family inet; } } }
也可以看看
变更历史表
是否支持某项功能取决于您使用的平台和版本。使用 功能资源管理器 确定您的平台是否支持某个功能。
deterministic-napt64支持 MS-MPC 和 MS-MIC
stateful-nat464
twice-dynamic-nat-44支持 MS-MPC 和 MS-MIC
twice-basic-nat-44支持内联 NAT
twice-dynamic-nat-44支持 MS-MPC 和 MS-MIC
twice-dynamic-napt-44支持 MS-MPC 和 MS-MIC
deterministic-napt44支持 MS-MPC 和 MS-MIC