持久 NAT 和 NAT64
众所周知,网络地址转换器 (NAT) 会对有效负载中携带 IP 地址的应用造成非常严重的问题。遇到此问题的应用程序包括 VoIP 和 IP 多媒体。持久 NAT 改进了 NAT 行为,并定义了一组 NAT 要求行为,这对 VOIP 应用程序的工作很有用。NAT64 是一种转换机制,用于根据 IP/ICMP 转换算法转换数据包标头,将 IPv6 数据包转换为 IPv4 数据包,反之亦然。
了解持久 NAT 和 NAT64
持久 NAT 允许应用程序在通过 NAT 防火墙时使用会话遍历NAT 公用事业 (STUN) 协议。持久 NAT 可确保来自同一内部传输地址(内部 IP 地址和端口)的所有请求映射到同一反身传输地址(由最靠近 STUN 服务器的 NAT 设备创建的公共 IP 地址和端口)。
NAT64 是一种将 IPv6 数据包转换为 IPv4 数据包(反之亦然)的机制,允许 IPv6 客户端使用单播 UDP、TCP 或 ICMP 联系 IPv4 服务器。它是网络地址转换协议转换 (NAT-PT) 的增强功能。
NAT64 支持以下各项:
-
与端点无关的映射
-
独立于端点的过滤和与地址相关的过滤
NAT64 和持久 NAT 的映射和过滤行为是相同的。
可以在瞻博网络设备上配置以下类型的持久性 NAT:
-
任何远程主机 — 来自特定内部 IP 地址和端口的所有请求都映射到同一个反身传输地址。任何外部主机都可以通过将数据包发送到反身传输地址来向内部主机发送数据包。
-
目标主机 — 来自特定内部 IP 地址和端口的所有请求都映射到同一个反身传输地址。外部主机可以通过将数据包发送到反身传输地址来将数据包发送到内部主机。内部主机之前必须已向外部主机的 IP 地址发送过数据包。
-
目标主机端口 — 来自特定内部 IP 地址和端口的所有请求都映射到同一个反身传输地址。外部主机可以通过将数据包发送到反身传输地址来将数据包发送到内部主机。内部主机之前必须已向外部主机的 IP 地址和端口发送过数据包。
当使用 IPv6 地址配置时,NAT64 不支持目标主机端口配置。
您可以使用源 NAT 规则配置任何持久 NAT 类型。源 NAT 规则作可以使用源 NAT 池(带或不带端口转换)或出口接口。持久 NAT 不适用于目标 NAT,因为持久 NAT 绑定基于从内部到外部的传出会话。
端口过载在 Junos OS 中仅用于正常接口 NAT 流量。持久 NAT 不支持端口过载,您必须在 [edit security nat source] 层次结构级别使用以下选项之一显式禁用端口过载:
-
端口过载关闭
-
端口过载系数 1
要配置安全策略以允许或拒绝持久性 NAT 流量,可以使用两个新的预定义服务 -junos-stun 和 junos-persistent-nat。
持久 NAT 不同于持久地址功能(请参阅 了解源 NAT 池的持久地址)。永久地址功能适用于设备上配置的源 NAT 池的地址映射。持久 NAT 功能适用于外部 NAT 设备上的地址映射,并针对特定的源 NAT 池或出口接口进行配置。此外,持久 NAT 旨在与 STUN 客户端/服务器应用程序一起使用。
使用 功能资源管理器 确认平台和版本对特定功能的支持。
查看 特定于平台的持久 NAT 绑定支持行为部分 ,了解与您的平台相关的注释。
了解 NAT (STUN) 协议的会话遍历公用事业
许多视频和语音应用程序在 NAT 环境中无法正常工作。例如,与 VoIP 配合使用的会话启动协议 (SIP) 对应用数据中的 IP 地址和端口号进行编码。如果请求方和接收方之间存在 NAT 防火墙,则数据中 IP 地址和端口号的转换会使信息无效。
此外,NAT 防火墙不会为传入的 SIP 消息维护针孔。这会迫使 SIP 应用程序不断刷新带有 SIP 消息的针孔,或者使用 ALG 跟踪注册,网关设备可能支持也可能不支持该功能。
NAT 会话遍历公用事业 (STUN) 协议首先在 RFC 3489(通过网络地址转换器 (NAT) 简单遍历用户数据报协议 (UDP) 中定义,然后在 RFC 5389(NAT 会话遍历公用事业)中定义,是一种简单的客户端/服务器协议。STUN 客户端向 STUN 服务器发送请求,后者将响应返回给客户端。STUN 客户端通常是需要公共 IP 地址和/或端口的应用程序的一部分。STUN 客户端可以驻留在终端系统(例如 PC 或网络服务器)中,而 STUN 服务器通常连接到公共互联网。
STUN 客户端和 STUN 服务器都必须由应用程序提供。瞻博网络不提供 STUN 客户端或服务器。
STUN 协议允许客户端:
发现应用是否位于 NAT 防火墙后面。
确定正在使用的 NAT 绑定类型。
了解反身传输地址,即最靠近 STUN 服务器的 NAT 设备分配的 IP 地址和端口绑定。(STUN 客户端和 STUN 服务器之间可能存在多个级别的 NAT。)
客户端应用程序可以使用 SIP 和 H.323 等协议中的 IP 地址绑定信息。
了解 NAT64 IPv6 前缀到 IPv4 地址持久转换
NAT64 机制使 IPv6 客户端能够通过将 IPv6 地址转换为 IPv4 地址(反之亦然)来联系 IPv4 服务器。但是,在双转换方案(如 464XLAT)中使用标准 NAT64 的纯 IPv6 网络,某些 IPv4 应用和服务无法正常工作。在这些方案中,需要地址持久转换。
图 1 展示了 464XLAT 架构,其中 IPv4 数据包在客户端转换器 (CLAT) 上转换为 IPv6 数据包,然后通过仅支持 IPv6 的网络,然后在提供商端转换器 (PLAT) 上转换回 IPv4 数据包,从而访问核心网络中的全局仅限 IPv4 的内容。此架构结合使用 CLAT 上的无状态转换和 PLAT 上的有状态转换。
当设备充当 PLAT 时,它负责在一个特定的 IPv6 前缀与一个转换后的 IPv4 地址之间保持粘性映射关系。设备将 IPv6 前缀视为单个用户。此映射是通过使用该 address-persistent 功能在 IPv4 源 NAT 池中配置特定的 IPv6 前缀长度来实现的。
图 2 展示了在 CLAT 中配置的 NAT 规则,该规则将 IPv4 地址转换为带有地址持久性前缀的 IPv6 地址。通过 CLAT 上的无状态 NAT46 转换和 PLAT 上的状态 NAT64 转换,来自 IPv4 主机 192.168.1.2 的流量通过仅 IPv6 网络到达全局服务器 198.51.100.1。
上的 NAT64 转换
表 1 列出了其他 NAT 功能及其与地址持久性功能的兼容性。
| 功能 |
兼容 |
||
|---|---|---|---|
| PAT 池 |
IPv4 |
NAT IPv4 到 IPv6 |
否 |
| NAT IPv6 到 IPv4 |
是 |
||
| IPv6 |
NAT IPv4 到 IPv6 |
否 |
|
| NAT IPv6 到 IPv4 |
否 |
||
| 非 PAT 池 |
否 |
||
| 端口过载 |
是 |
||
| PAT 池中的持久 NAT |
是 |
||
| 端口块分配 |
是 |
||
| 可确定的 NAT |
否 |
||
| 地址池配对 |
否 |
||
| ALG (现有的 ALG NAT 转换,例如来自本机 IPv6 客户端的 FTP/PPTP/RTSP/DNS/SIP。) |
是 |
||
持久 NAT 和 NAT64 配置概述
要配置持久 NAT,请使用源 NAT 规则作指定以下选项(适用于源 NAT 池或出口接口):
持久性 NAT 的类型 — 以下类型之一:任何远程主机、目标主机或目标主机端口。
(选答)地址映射 — 此选项允许将来自特定内部 IP 地址的请求映射到同一反身 IP 地址;内部端口和反身端口可以是任何端口。使用任何端口的外部主机都可以通过将数据包发送到反身 IP 地址(使用配置的允许外部到内部流量的传入策略)来向内部主机发送数据包。如果未配置此选项,则持久 NAT 绑定适用于特定的内部和反身传输地址。
只有当持久 NAT 类型为任何远程主机且源 NAT 规则作为以下作之一时,才能指定该
address-mapping选项:具有 IP 地址变换功能的源 NAT 池
源 NAT 池,没有端口转换,也没有溢出池
(选答)不活动超时 — 当绑定条目的所有会话都已过期时,持久性 NAT 绑定保留在设备内存中的时间(以秒为单位)。当达到配置的超时时,绑定将从内存中删除。默认值为 300 秒。配置一个介于 60 到 7200 秒之间的值。
当持久性 NAT 绑定的所有会话都已过期时,绑定在指定的非活动超时期间内将保持在设备内存中的查询状态。当非活动超时期限到期时,查询绑定会自动从内存中删除(默认值为 300 秒)。您可以使用命令显式移除所有或特定的持久 NAT 查询绑定
clear security nat source persistent-nat-table。(选答)最大会话数 — 可与持久性 NAT 绑定关联的最大会话数。默认设置为 30 个会话。配置一个介于 8 到 100 之间的值。
对于接口 NAT,您需要在 [edit security nat source] 层次结构级别使用以下选项之一显式禁用端口过载:
端口过载关闭
端口过载系数 1
最后,您可以在安全策略中使用两种预定义服务来允许或拒绝 STUN 和持久 NAT 流量:
junos-stun— STUN 协议流量。junos-persistent-nat— 持久 NAT 流量。
junos-persistent-nat策略置于安全策略序列的末尾。或者,确认没有后续策略与策略下方
junos-persistent-nat的持久性 NAT 流量匹配。
对于任何远程主机或目标主机或目标主机端口的持久 NAT 类型,安全策略的方向是从内部到外部。
示例:配置地址持久 NAT64 池
此示例说明如何配置地址持久性 NAT64 池,以确保一个特定 IPv6 前缀(由配置的 IPv6 前缀长度计算)与一个转换后的 IPv4 地址之间存在粘性映射关系。
要求
开始之前,请确保现有 NAT 规则和池配置不与新规则和池配置冲突。
概述
在此示例中,您将在 IPv4 源NAT池中配置 IPv6 前缀长度 /64,以便NAT IPv6 到 IPv4 的转换。与 NAT 规则和 NAT 池匹配的流量在 IPv6 前缀和 IPv4 转换地址之间执行地址持久转换。此配置可用于双转换方案 464XLAT 的提供商端转换器 (PLAT),使 IPv4 服务能够在仅支持 IPv6 的网络上运行。
配置
CLI 快速配置
要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改详细信息,以便与网络配置匹配,将命令复制并粘贴到层次结构级别的 [edit] CLI 中,然后从配置模式进入。commit
set security nat source pool NAT64 address 198.51.100.240/32 to 198.51.100.254/32 set security nat source pool NAT64 address-persistent subscriber ipv6-prefix-length 64 set security nat source rule-set RS1 from zone trust set security nat source rule-set RS1 to zone untrust set security nat source rule-set RS1 rule R1 match source-address 2001:db8::/32 set security nat source rule-set RS1 rule R1 match destination-address 198.51.100.198/32 set security nat source rule-set RS1 rule R1 then source-nat pool NAT64
过程
分步程序
下面的示例要求您在配置层次结构中的各个级别之间进行导航。有关作说明,请参阅在 配置模式下使用 CLI 编辑器。
创建源 NAT 池。
[edit security nat source] user@host# set pool NAT64 address 198.51.100.240/32 to 198.51.100.254/32
指定源 NAT 池的 IPv6 前缀长度。
[edit security nat source] user@host# set pool NAT64 address-persistent subscriber ipv6-prefix-length 64
创建规则集。
[edit security nat source] user@host# set rule-set RS1 from zone trust user@host# set rule-set RS1 to zone untrust
符合规则。
[edit security nat source] user@host# set rule-set RS1 rule R1 match source-address 2001:db8::/32 user@host# set rule-set RS1 rule R1 match destination-address 198.51.100.198/32
提供规则匹配时要执行的作。
[edit security nat source] user@host# set security nat source rule-set RS1 rule R1 then source-nat pool NAT64
结果
在配置模式下,输入 show security nat 命令以确认您的配置。如果输出未显示预期的配置,请重复此示例中的配置说明进行更正。
[edit]
user@host# show security nat
source {
pool NAT64 {
address {
198.51.100.240/32 to 198.51.100.254/32;
}
address-persistent subscriber ipv6-prefix-length 64;
}
rule-set RS1 {
from zone trust;
to zone untrust;
rule R1 {
match {
source-address 2001:db8::/32;
destination-address 198.51.100.198/32;
}
then {
source-nat {
pool {
NAT64;
}
}
}
}
}
}
如果完成设备配置,请从配置模式进入。commit
示例:通过使用接口 NAT 配置持久 NAT 来支持网络配置 NAT
您可以使用源 NAT 规则配置任何持久 NAT 类型。此示例说明如何使用接口 IP 地址应用持久 NAT,以及如何将接口 IP 地址用作 NAT IP 地址,从而为特定的内部主机执行持久 NAT。它还说明了如何维护主机的永久地址 端口映射 行为和持久 NAT 过滤器行为。您必须禁用接口 NAT 的端口过载。
要求
概述
在运营商等级 NAT (CGN) 网络部署中,您可以将接口 IP 地址配置为 NAT 地址,以执行持久网络地址转换。这样,内部主机可以通过从内部到外部发起的传出流量创建一个源 NAT 映射关系。然后,外部主机通过共享NAT映射关系将流量发送到此接口NAT地址,从而将流量发送回此内部主机。
在此示例中,首先配置接口 NAT 规则集 int1 以匹配从接口 ge-0/0/1 到接口 ge-0/0/2 的流量,然后配置 NAT 规则 in1 以匹配特定的源地址和目标地址,以执行持久 NAT。执行接口 NAT 时, any remote host 您可以配置持久 NAT 类型。
对于源地址为 192.0.2.0/24(内部电话)和目标地址为 198.51.100.0/24 的数据包(包括 STUN 服务器、 SIP 代理服务器和外部电话),您可以使用持久 NAT 类型配置 any remote host 接口 NAT。然后禁用接口 NAT 的端口重载。
接下来,配置安全策略以允许任何远程主机持久 NAT 类型从外部网络(外部区域)到内部网络(内部区域)的持久 NAT 流量。
拓扑结构
图 3 显示了接口持久性 NAT 拓扑。
表 2 显示了在此示例中配置的参数。
参数 |
描述 |
|---|---|
外部区域 |
外部网络 |
内部区域 |
内部网络 |
External_phones2 |
外部网络的电话2地址 |
Internal_phone1 |
电话1 内部网络地址 |
SIP_proxy服务器 |
外部网络的 SIP 代理服务器地址 |
STUN 服务器 |
外部网络的 STUN 服务器地址 |
子网 198.51.100.1/32 |
目标 IP 地址 |
子网 192.0.2.2/32 |
源 IP 地址 |
ge-0/0/1 和 ge-0/0/2 |
用于流量方向的 NAT 接口 |
配置
过程
CLI 快速配置
要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改详细信息,以便与网络配置匹配,将命令复制并粘贴到层次结构级别的 [edit] CLI 中,然后从配置模式进入。commit
set security nat source rule-set int1 from interface ge-0/0/1.0 set security nat source rule-set int1 to interface ge-0/0/2.0 set security nat source rule-set int1 rule in1 match source-address 192.0.2.0/24 set security nat source rule-set int1 rule in1 match destination-address 198.51.100.0/24 set security nat source rule-set int1 rule in1 then source-nat interface persistent-nat permit any-remote-host set security nat source interface port-overloading off set security policies from-zone internal to-zone external policy stun_traffic match source-address internal_phones destination-address stun_server application junos-stun set security policies from-zone internal to-zone external policy sip_proxy_traffic match source-address internal_phones destination-address sip_proxy_server application junos-sip set security policies from-zone internal to-zone external policy sip_traffic match source-address internal_phones destination-address external_phones application junos-persistent-nat set security policies from-zone internal to-zone external policy sip_traffic then permit set security policies from-zone internal to-zone external policy stun_traffic then permit set security policies from-zone internal to-zone external policy sip_proxy_traffic then permit
分步程序
下面的示例要求您在各个配置层级中进行导航。有关如何执行此作的说明,请参阅《CLI 用户指南》中的在配置模式下使用 CLI 编辑器。
要配置接口 NAT 规则集,请执行以下作:
为接口 NAT 创建持久 NAT 规则。
[edit security nat source rule-set int1] user@host# set from interface ge-0/0/1.0 user@host# set to interface ge-0/0/2.0 user@host# set rule in1 match source-address 192.0.2.0/24 user@host# set rule in1 match destination-address 198.51.100.0/24 user@host# set rule in1 then source-nat interface persistent-nat permit any-remote-host
禁用接口 NAT 的端口过载。
[edit security] user@host# set nat source interface port-overloading off
配置安全策略以允许从内部 SIP 电话到外部 STUN 服务器的 STUN 流量。
[edit security policies] user@host# set from-zone internal to-zone external policy stun_traffic match source-address internal_phones destination-address stun_server application junos-stun
配置安全策略以允许从内部 SIP 电话到外部 SIP 代理服务器的 SIP 代理流量。
[edit security policies] user@host# set from-zone internal to-zone external policy sip_proxy_traffic match source-address internal_phones destination-address sip_proxy_server application junos-sip
配置安全策略以允许从外部 SIP 电话到内部 SIP 电话的 SIP 流量。
[edit security policies] user@host# set from-zone internal to-zone external policy sip_traffic match source-address internal_phones destination-address external_phones application junos-persistent-nat user@host# set from-zone internal to-zone external policy sip_traffic then permit user@host#set from-zone internal to-zone external policy stun_traffic then permit user@host#set from-zone internal to-zone external policy sip_proxy_traffic then permit
结果
在配置模式下,输入和show security natshow security policies命令以确认您的配置。如果输出未显示预期的配置,请重复此示例中的说明以更正配置。
[edit]
user@host# show security nat
source {
interface {
port-overloading off;
}
rule-set int1 {
from interface ge-0/0/1.0;
to interface ge-0/0/2.0;
rule in1 {
match {
source-address 192.0.2.0/24;
destination-address 198.51.100.0/24;
}
then {
source-nat {
interface {
persistent-nat {
permit any-remote-host;
}
}
}
}
}
}
}
[edit]
user@host# show security policies
from-zone internal to-zone external {
policy stun_traffic {
match {
source-address internal_phones;
destination-address stun_server;
application junos-stun;
}
then {
permit;
}
}
policy sip_proxy_traffic {
match {
source-address internal_phones;
destination-address sip_proxy_server;
application junos-sip;
}
then {
permit;
}
}
policy sip_traffic {
match {
source-address internal_phones;
destination-address external_phones;
application junos-persistent-nat;
}
then {
permit;
}
}
}
如果完成设备配置,请从配置模式进入。commit
验证
确认配置工作正常。
验证是否匹配和使用了规则
目的
验证是否匹配并使用了所有规则。
行动
在作模式下,输入命令 show security nat source persistent-nat-table all 。
user@host>show security nat source persistent-nat-table all
Internal Reflective Source Type Left_time/Curr_Sess_Num/ Source
In_IP In_Port I_Proto Ref_IP Ref_Port R_Proto NAT Pool Conf_time Max_Sess_Num NAT Rule
192.0.2.12 17012 udp 198.51.100.1 28153 udp interface any-remote-host 3528/3600 -/- in1
192.0.2.12 7078 udp 198.51.100.1 6133 udp interface any-remote-host -/300 1/30 in1
意义
输出显示持久性 NAT 信息的摘要。
验证是否已建立 NAT 流量会话
目的
验证会话是否已在设备上建立。
行动
在作模式下,输入命令 show security flow session 。
user@host>show security flow session Session ID: 6992, Policy name: sip_proxy_traffic/5, Timeout: 16, Valid In: 192.0.2.12/17012 --> 198.51.100.45/5060;udp, If: ge-0/0/1.0, Pkts: 4, Bytes: 1850 Out: 198.51.100.45/5060 --> 198.51.100.1/28153;udp, If: ge-0/0/2.0, Pkts: 5, Bytes: 2258 Session ID: 7382, Policy name: stun_traffic/4, Timeout: 16, Valid In: 192.0.2.12/7078 --> 198.51.100.49/3478;udp, If: ge-0/0/1.0, Pkts: 20, Bytes: 1040 Out: 198.51.100.49/3478 --> 198.51.100.1/6133;udp, If: ge-0/0/2.0, Pkts: 0, Bytes: 0
意义
该 show security flow session 命令显示设备上的活动会话以及每个会话的关联安全策略。输出显示使用专用源地址 192.0.2.12 进入设备的流量,该地址发往位于 198.51.100.45 的公共主机。此流的返回流量将传输到转换后的公共地址 198.51.100.1。
Session ID- 标识会话的编号。使用此 ID 可获取有关会话的更多信息,例如策略名称或进出数据包数。
sip_proxy_traffic— 允许从内部 SIP 电话到外部 SIP 代理服务器的 SIP 流量的策略名称。
In— 传入流(源和目标 IP 地址及其各自的源和目标端口号。会话是 UDP,此会话的源接口是 ge-0/0/1.0)。
Out— 反向流(源和目标 IP 地址及其各自的源和目标端口号。会话是 UDP,此会话的目标接口是 ge-0/0/2.0)。
stun_traffic— 允许从内部 SIP 电话到外部 STUN 服务器的 STUN 流量的策略名称。
示例:为 IPv6 客户端配置地址相关过滤
此示例说明如何使用 NAT64 为 IPv6 客户端配置地址相关过滤。
要求
开始之前:
确保设备上已启用 IPv6。
确保现有 NAT 规则和池配置不会与新的规则和池配置冲突。
概述
在此示例中,您使用 NAT64 将数据包从 IPv6 内部主机发送到 IPv4 外部主机,以及从 IPv4 外部主机发送到 IPv4 内部主机的数据包。
拓扑结构
配置
过程
CLI 快速配置
要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改详细信息,以便与网络配置匹配,将命令复制并粘贴到层次结构级别的 [edit] CLI 中,然后从配置模式进入。commit
set security nat static rule-set test_rs from interface ge-0/0/1 set security nat static rule-set test_rs rule test_rule match destination-address 2001:db8::/128 set security nat static rule-set test_rs rule test_rule then static-nat prefix 10.2.2.15/32 set security nat source pool myipv4 address 203.0.113.2 set security nat source rule-set myipv4_rs from interface ge-0/0/1 set security nat source rule-set myipv4_rs to interface ge-0/0/2 set security nat source rule-set myipv4_rs rule ipv4_rule match source-address 2001:db8::/96 set security nat source rule-set myipv4_rs rule ipv4_rule match destination-address 10.2.2.15 set security nat source rule-set myipv4_rs rule ipv4_rule then source-nat pool myipv4 set security nat source rule-set myipv4_rs rule ipv4_rule then source-nat pool persistent-nat permit target-host
分步程序
下面的示例要求您在各个配置层级中进行导航。有关作说明,请参阅在 配置模式下使用 CLI 编辑器。
要为 IPv6 客户端配置地址相关过滤:
为 NAT64 创建一组规则。
[edit security nat static] user@host# set rule-set test_rs from interface ge-0/0/1
符合规则。
[edit security nat static] user@host# set rule-set test_rs rule test_rule match destination-address 2001:db8::/128
提供规则匹配时要执行的作。
[edit security nat static] user@host# set rule-set test_rs rule test_rule then static-nat prefix 10.2.2.15/32
定义源地址池,并将地址添加到池中。
[edit security nat] user@host# set source pool myipv4 address 203.0.113.2
为 NAT64 创建另一组规则。
[edit security nat] user@host# set source rule-set myipv4_rs from interface ge-0/0/1
将规则与源地址进行匹配。
[edit security nat] user@host# set source rule-set myipv4_rs rule ipv4_rule match source-address 2001:db8::/96
将规则与目标地址进行匹配。
[edit security nat] user@host# set source rule-set myipv4_rs rule ipv4_rule match destination-address 10.2.2.15
提供规则匹配时要执行的作。
[edit security nat] user@host# set source rule-set myipv4_rs rule ipv4_rule then source-nat pool myipv4
配置持久 NAT。
[edit security nat] user@host# set source rule-set myipv4_rs rule ipv4_rule then source-nat pool persistent-nat permit target-host
结果
在配置模式下,输入 show nat source 命令以确认您的配置。如果输出未显示预期的配置,请重复此示例中的配置说明进行更正。
[edit security]
user@host#show nat source
pool myipv4 {
address {
203.0.113.2/32;
}
}
rule-set test_rs {
rule test_rule {
match {
destination-address 2001:db8::/128;
}
}
}
rule-set myipv4_rs {
from interface ge-0/0/1.0;
to interface ge-0/0/2.0;
rule ipv4_rule {
match {
source-address 2001:db8::/96;
destination-address 10.2.2.15/32;
}
then {
source-nat {
pool {
myipv4;
persistent-nat {
permit target-host;
}
}
}
}
}
}
}
如果完成设备配置,请从配置模式进入。commit
验证
确认配置工作正常:
验证配置是否已启用且是否正常工作
目的
验证配置是否已启用且正常工作。
行动
在作模式下,输入以下命令:
show security nat static rule test_ruleshow security nat source rule ipv4_ruleshow security nat source pool myipv4
示例:为 IPv6 客户端配置与端点无关的过滤
此示例说明如何使用 NAT64 为 IPv6 客户端配置与端点无关的过滤。
要求
开始之前:
确保设备上已启用 IPv6
确保现有 NAT 规则和池配置不会与新规则和池配置冲突。
概述
在此示例中,您使用 NAT64 将数据包从 IPv6 内部主机发送到 IPv4 外部主机,以及从 IPv4 外部主机发送到 IPv4 内部主机的数据包。
拓扑结构
配置
过程
CLI 快速配置
要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改详细信息,以便与网络配置匹配,将命令复制并粘贴到层次结构级别的 [edit] CLI 中,然后从配置模式进入。commit
set security nat static rule-set test_rs from interface ge-0/0/1 set security nat static rule-set test_rs rule test_rule match destination-address 2001:db8::/128 set security nat static rule-set test_rs rule test_rule then static-nat prefix 10.2.2.15/32 set security nat source pool myipv4 address 203.0.113.2 set security nat source rule-set myipv4_rs from interface ge-0/0/1 set security nat source rule-set myipv4_rs to interface ge-0/0/2 set security nat source rule-set myipv4_rs rule ipv4_rule match source-address 2001:db8::/96 set security nat source rule-set myipv4_rs rule ipv4_rule match destination-address 10.2.2.15 set security nat source rule-set myipv4_rs rule ipv4_rule then source-nat pool myipv4 set security nat source rule-set myipv4_rs rule ipv4_rule then source-nat pool persistent-nat permit any-remote-host
分步程序
下面的示例要求您在各个配置层级中进行导航。有关作说明,请参阅在 配置模式下使用 CLI 编辑器。
要为 IPv6 客户端配置与端点无关的过滤:
为 NAT64 创建一组规则。
[edit security nat static] user@host# set rule-set test_rs from interface ge-0/0/1
符合规则。
[edit security nat static] user@host# set rule-set test_rs rule test_rule match destination-address 2001:db8::/128
提供规则匹配时要执行的作。
[edit security nat static] user@host# set rule-set test_rs rule test_rule then static-nat prefix 10.2.2.15/32
定义源地址池,并将地址添加到池中。
[edit security nat] user@host# set source pool myipv4 address 203.0.113.2
为 NAT64 创建另一组规则。
[edit security nat] user@host# set source rule-set myipv4_rs from interface ge-0/0/1
将规则与源地址进行匹配。
[edit security nat] user@host# set source rule-set myipv4_rs rule ipv4_rule match source-address 2001:db8::/96
将规则与目标地址进行匹配。
[edit security nat] user@host# set source rule-set myipv4_rs rule ipv4_rule match destination-address 10.2.2.15
提供规则匹配时要执行的作。
[edit security nat] user@host# set source rule-set myipv4_rs rule ipv4_rule then source-nat pool myipv4
配置持久 NAT。
[edit security nat] user@host# set source rule-set myipv4_rs rule ipv4_rule then source-nat pool persistent-nat permit any-remote-host
结果
在配置模式下,输入 show security nat 命令以确认您的配置。如果输出未显示预期的配置,请重复此示例中的配置说明进行更正。
[edit security]
user@host#show security nat
source {
pool myipv6_prefix {
address {
2001:db8::/64;
}
}
pool myipv4 {
address {
203.0.113.2/32;
}
}
rule-set myipv6_rs {
from interface ge-0/0/1.0;
to interface ge-0/0/2.0;
rule ipv6_rule {
match {
source-address 10.1.1.0/30;
destination-address 2001:db8::2/96;
}
then {
source-nat {
pool {
myipv6_prefix;
}
}
}
}
}
rule-set myipv4_rs {
from interface ge-0/0/1.0;
to interface ge-0/0/2.0;
rule ipv4_rule {
match {
source-address 2001:db8::/96;
destination-address 10.2.2.15/32;
}
then {
source-nat {
pool {
myipv4;
persistent-nat {
permit target-host;
}
}
}
}
}
}
}
static {
rule-set test_rs {
from interface ge-0/0/1.0;
rule test_rule {
match {
destination-address 2001:db8::/128;
}
then {
static-nat {
prefix {
10.2.2.15/32;
}
}
}
}
}
}
如果完成设备配置,请从配置模式进入。commit
验证
确认配置工作正常:
验证配置是否已启用且工作正常
目的
验证配置是否已启用且正常工作。
行动
在作模式下,输入以下命令。
show security nat static rule test_ruleshow security nat source rule ipv4_ruleshow security nat source pool myipv4
示例:设置最大持久性 NAT 绑定数
此示例说明如何增加持久性 NAT 容量。
要求
开始之前,请参阅 了解持久性 NAT 和 NAT64。
概述
在此示例中,您启用最大化持久性 NAT 容量选项。要启用此选项,支持的中心点最大绑定容量大约可以增加到中心点会话容量的 1/8,最多可增加到 2M,支持的 SPU 最大绑定容量可以大约增加到每个 SPU 会话容量的 1/4。因此,CP 和每个 SPU 上的流会话容量都将减少 1/4。
在此示例中,您将会话容量启用为中心点的最大 20,000,000,每个 SPU 的最大会话容量为 1,100,000,具有最大会话配置。使用命令 maximize-persistent-nat-capacity 。
配置
过程
分步程序
要增加持久 NAT 容量:
设置最大化持久 NAT 容量选项。
[edit] user@host# set security forwarding-process application-services maximize-persistent-nat-capacity
如果完成设备配置,请提交配置。
[edit] user@host# commit
从作模式重新启动系统。
[edit] user@host# request system reboot
切换至最大化持久 NAT 容量模式或切换回常规模式时,必须重新启动设备。
如果要将设备切换回常规模式,请删除最大化持久 NAT 容量模式配置。
[edit] user@host# delete security forwarding-process application-services maximize-persistent-nat-capacity
持久 NAT 发夹概述
当流量在两个主机之间发送时,流量的源主机可能只能通过其公共 IP 地址来知道目标主机。实际上,目标主机可能与源主机位于同一专用地址空间中。发夹是按流量来源方向返回流量的过程,以此作为将流量传送到专用子网中的目标主机的一种方式。
通常,子网中的源主机可能无法识别流量用于同一子网中的目标主机,因为它仅通过其公共 IP 地址标识目标主机。NAT 分析 IP 数据包,并将数据包路由回正确的主机。
如果内部网络上的两台主机希望通过在 NAT 设备上使用绑定来相互通信,则需要 NAT 发夹支持。在这种情况下,NAT 设备从内部网络接收数据包并将其转发回内部网络。如果不支持发夹,则转发数据包将失败并被丢弃。
发夹使专用网络上的两个端点(主机 1 和主机 2)能够进行通信,即使它们只使用彼此的外部 IP 地址和端口。当主机 1 向主机 3 发送流量时,主机 1 的内部源 IP 地址和端口之间的 NAT 绑定在 NAT 表中与其外部 IP 地址和端口相关联。当主机 2 向主机 3 发送流量时,也会发生同样的情况。这样,主机1和主机2想要通信时,可以识别对方的外部IP地址。
例如,如果主机 1 与主机 2 通信,则使用 NAT(支持发夹)将包含主机 2 外部地址的数据包路由回主机 2 的内部地址。
图 4 中使用了以下参数:
主机 1 个 IP 地址 -
10.10.10.2/24主机 2 IP 地址 -
10.10.10.10/24区域内 IP 地址 -
10.10.10.254/24主机 3 IP 地址 -
198.51.100.2/24区域间 IP 地址 -
198.51.100.254/24主机 1 和主机 2 位于区域
reht0z中,主机 3 位于区域中reth1z
表 3 显示了此示例中使用的绑定表。
原始源 IP 地址 |
转换后的源 IP 地址 |
|---|---|
10.10.10.2/24 至 10.10.10.11/24 |
192.0.2.1/32 至 192.0.2.10/32 |
永久 NAT 发夹仅适用于任何远程主机永久 NAT 类型。要允许发夹,您必须配置安全策略以允许同一区域中端点之间的流量。实际上,两个端点可以位于两个不同的区域,只要两台主机中的任何一台只能看到对等方的公共地址。目标主机永久NAT和目标主机端口永久NAT不支持NAT发夹行为。只有任何远程主机持久 NAT 支持发夹行为。
示例:使用源 NAT 池配置具有地址变换功能的持久 NAT 发夹
此示例说明如何配置持久性 NAT 发夹。
要求
开始之前:
配置设备上的网络接口。请参阅 安全性设备接口用户指南。
创建安全区域并为其分配接口。请参阅 了解安全性区域。
概述
发夹允许转换来自专用网络的数据包,然后环回专用网络,而不是传递到公共网络。发夹功能允许使用 NAT 表中的相应记录来识别数据包已寻址到本地网络中的主机。然后转换目标 IP 地址并将数据包发送回本地网络(以及端口映射的情况)。这可以确保两台主机之间的流量正常工作。
拓扑结构
发夹使专用网络上的两个端点(主机 1 和主机 2)能够进行通信,即使它们只使用彼此的外部 IP 地址和端口。图 5 对此进行了说明。
当主机 1 向主机 3 发送流量时,主机 1 的内部源 IP 地址和端口之间的 NAT 绑定在 NAT 表中与其外部 IP 地址和端口相关联。当主机 2 向主机 3 发送流量时,也会发生同样的情况。这样,主机1和主机2想要通信时,可以识别对方的外部IP地址。
例如,如果主机 1 与主机 2 通信,则使用 NAT(支持发夹)将包含主机 2 外部地址的数据包路由回主机 2 的内部地址。
在 图 5 中,使用了以下参数:
主机 1 个 IP 地址 -
10.10.10.2/24主机 2 IP 地址 -
10.10.10.10/24区域内 IP 地址 -
10.10.10.254/24主机 3 IP 地址 -
198.51.100.2/24区域间 IP 地址 -
198.51.100.254/24主机 1 和主机 2 位于区域
reht0z中,主机 3 位于区域中reth1z
表 4 显示了此示例中使用的绑定表。
原始源 IP 地址 |
转换后的源 IP 地址 |
|---|---|
10.10.10.2/24 至 10.10.10.11/24 |
192.0.2.1/32 至 192.0.2.10/32 |
配置
过程
分步程序
要配置持久 NAT 发夹,请执行以下作:
配置接口。
[edit] user@host# set interfaces ge-11/0/0 unit 0 family inet address 10.10.10.254/24 user@host# set interfaces ge-11/0/1 unit 0 family inet address 198.51.100.254/24
创建区域(reth0z 和 reth1z)。
[edit] user@host# set security zones security-zone reth0z host-inbound-traffic system-services all user@host# set security zones security-zone reth0z host-inbound-traffic protocols all user@host# set security zones security-zone reth0z interfaces ge-11/0/0.0 user@host# set security zones security-zone reth1z host-inbound-traffic system-services all user@host# set security zones security-zone reth1z host-inbound-traffic protocols all user@host# set security zones security-zone reth1z interfaces ge-11/0/1.0
为 reth0z 和 reth1z 区域创建策略。
[edit] user@host# set security address-book global address subnet10 10.10.10.0/24 user@host# set security address-book global address subnet20 198.51.100.0/24 user@host# set security policies from-zone reth0z to-zone reth1z policy p1 match source-address subnet10 user@host# set security policies from-zone reth0z to-zone reth1z policy p1 match destination-address subnet20 user@host# set security policies from-zone reth0z to-zone reth1z policy p1 match application any user@host# set security policies from-zone reth0z to-zone reth1z policy p1 then permit user@host# set security policies default-policy deny-all
添加相同的区域策略以执行持久性 NAT 发夹。
user@host# set security policies from-zone reth0z to-zone reth0z policy p2 match source-address subnet10 user@host# set security policies from-zone reth0z to-zone reth0z policy p2 match destination-address subnet10 user@host# set security policies from-zone reth0z to-zone reth0z policy p2 match application any user@host# set security policies from-zone reth0z to-zone reth0z policy p2 then permit
为主机 1 和主机 2 (src1) 创建源 NAT 池。
[edit] user@host# set security nat source pool src1 address 192.0.2.1/32 to 192.0.2.10/32
指定主机 1 和主机 2 (src1) 的原始源 IP 地址范围的开头。
[edit] user@host# set security nat source pool src1 host-address-base 10.10.10.2/24
配置源 NAT 规则集 r1。
[edit] user@host# set security nat source rule-set r1 from zone reth0z user@host# set security nat source rule-set r1 to zone reth1z user@host# set security nat source rule-set r1 to zone reth0z user@host# set security nat source rule-set r1 rule rule1 match source-address 10.10.10.0/24 user@host# set security nat source rule-set r1 rule rule1 match destination-address 10.10.10.0/24 user@host# set security nat source rule-set r1 rule rule1 match destination-address 198.51.100.0/24 user@host# set security nat source rule-set r1 rule rule1 then source-nat pool src1 user@host# set security nat source rule-set r1 rule rule1 then source-nat pool persistent-nat permit any-remote-host user@host# set security nat source rule-set r1 rule rule1 then source-nat pool persistent-nat inactivity-timeout 900 user@host# set security nat source rule-set r1 rule rule1 then source-nat pool persistent-nat max-session-number 20
结果
在配置模式下,输入命令 show security nat 以确认您的配置。如果输出未显示预期的配置,请重复此示例中的配置说明进行更正。
[edit]
user@host# show security nat
source {
pool src1 {
address {
192.0.2.1/32 to 192.0.2.10/32;
}
host-address-base 10.10.10.2/24;
}
rule-set r1 {
from zone reth0z;
to zone [ reth0z reth1z ];
rule rule1 {
match {
source-address 10.10.10.0/24;
destination-address [10.10.10.0/24 198.51.100.0/24];
}
then {
source-nat {
pool {
src1;
persistent-nat {
permit any-remote-host;
inactivity-timeout 900;
max-session-number 20;
}
}
}
}
}
}
}
如果完成设备配置,请从配置模式进入。commit
验证
在创建绑定 1 的主机之间发送的流量
目的
验证从创建绑定 1 的主机(主机 1 和主机 3)之间发送的流量。
行动
sendip -d r28 -p ipv4 -iv 4 -is 10.10.10.2 -id 198.51.100.2 -p udp -us 69 -ud 69 198.51.100.2
Source-IP: 10.10.10.2
Source-port: 69
Dst-IP: 198.51.100.2
Dst-port: 69
Binding1 is below:
user@host>show security nat source persistent-nat-table all
Internal Reflective Source Type Left_time/ Curr_Sess_Num/ Source
In_IP In_Port Ref_IP Ref_Port NAT Pool Conf_time Max_Sess_Num NAT Rule
10.10.10.2 69 192.0.2.1 69 src1 any-remote-host -/900 1/20 rule1
在创建绑定 2 的主机之间发送的流量
目的
验证从创建绑定 2 的主机(主机 2 和主机 3)之间发送的流量。
行动
sendip -d r28 -p ipv4 -iv 4 -is 10.10.10.10 -id 198.51.100.2 -p udp -us 69 -ud 69 198.51.100.2
Source-IP: 10.10.10.10
Source-port: 69
Dst-IP: 198.51.100.2
Dst-port: 69
Binding2 is below:
user@host>show security nat source persistent-nat-table all
Internal Reflective Source Type Left_time/ Curr_Sess_Num/ Source
In_IP In_Port Ref_IP Ref_Port NAT Pool Conf_time Max_Sess_Num NAT Rule
10.10.10.2 69 192.0.2.1 69 src1 any-remote-host -/900 1/20 rule1
10.10.10.10 69 192.0.2.9 69 src1 any-remote-host -/900 1/20 rule1
在两个主机之间发送的流量
目的
验证从主机 1 发送到主机 2 的流量:
行动
user@host>show security flow session
sendip -d r28 -p ipv4 -iv 4 -is 10.10.10.2 -id 192.0.2.9 -p udp -us 69 -ud 69 192.0.2.9
Session ID: 100007628, Policy name: default-policy/2, Timeout: 52, Valid
In: 10.10.10.2/69 --> 192.0.2.9/69;udp, If: ge-0/0/0.0, Pkts: 2, Bytes: 112
Out: 10.10.10.10/69 --> 192.0.2.1/69;udp, If: ge-0/0/0.0, Pkts: 0, Bytes: 0
Total sessions: 1
特定于平台的持久性 NAT 绑定支持行为
使用 功能资源管理器 确认平台和版本对特定功能的支持。
使用下表查看平台的特定于平台的行为:
| 平台 | 差异 |
|---|---|
| SRX 系列 |
|