帮助我们改善您的体验。

让我们了解您的想法。

您是否能抽出两分钟的时间完成一份问卷调查?

Announcement: Try the Ask AI chatbot for answers to your technical questions about Juniper products and solutions.

close
header-navigation
keyboard_arrow_up
close
keyboard_arrow_left
网络地址转换用户指南
Table of Contents Expand all
list Table of Contents

机器翻译对您有帮助吗?

starstarstarstarstar
Go to English page
免责声明:

我们将使用第三方机器翻译软件翻译本页面。瞻博网络虽已做出相当大的努力提供高质量译文,但无法保证其准确性。如果对译文信息的准确性有任何疑问,请参阅英文版本. 可下载的 PDF 仅提供英文版.

持久 NAT 和 NAT64

date_range 03-Apr-25

众所周知,网络地址转换器 (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 不支持 target-host-port 配置。

您可以使用源 NAT 规则配置任何持久性 NAT 类型。源 NAT 规则作可以使用源 NAT 池(带或不带端口转换)或出口接口。持久 NAT 不适用于目标 NAT,因为持久 NAT 绑定基于从内部到外部的传出会话。

在 Junos OS 中,端口重载仅用于正常接口 NAT 流量。持久 NAT 不支持端口重载,您必须在 [edit security nat source] 层级使用以下选项之一显式禁用端口重载:

  • 端口过载关闭

  • 端口重载因素 1

要配置安全策略以允许或拒绝持久性 NAT 流量,可以使用两个新的预定义服务 —junos-stunjunos-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)中,某些 IPv4 应用和服务无法通过具有标准 NAT64 的纯 IPv6 网络正常工作。在这些场景中,需要地址持久转换。

图 1 展示了 464XLAT 架构,其中 IPv4 数据包在客户端转换器 (CLAT) 上转换为 IPv6 数据包,然后通过纯 IPv6 网络,再在提供商端转换器 (PLAT) 上转换回 IPv4 数据包,从而访问核心网络中的全局纯 IPv4 内容。此架构结合使用 CLAT 上的无状态转换和 PLAT 上的有状态转换。

图 1:464XLAT 架构 464XLAT Architecture

当设备充当 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。

图 2:PLAT NAT64 Translation on the PLAT 上的 NAT64 转换

表 1 列出了其他 NAT 功能及其与地址持久功能的兼容性。

表 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 秒)时,查询绑定会自动从内存中删除。您可以使用 clear security nat source persistent-nat-table 命令显式删除所有或特定的持久性 NAT 查询绑定。

  • (选答)最大会话数 — 可与持久 NAT 绑定关联的最大会话数。默认设置为 30 个会话。配置一个介于 8 到 100 之间的值。

对于接口 NAT,您需要在 [edit security nat source] 层级使用以下选项之一显式禁用端口过载:

  • 端口过载关闭

  • 端口重载因素 1

最后,您可以在安全策略中使用两个预定义服务来允许或拒绝 STUN 和持久性 NAT 流量:

  • junos-stun- STUN 协议流量。

  • junos-persistent-nat—持久 NAT 流量。

对于任何远程主机或目标主机或目标主机端口持久 NAT 类型,安全策略的方向为从内部到外部。

示例:配置地址持久 NAT64 池

此示例说明如何配置地址持久性 NAT64 池,以确保一个特定 IPv6 前缀(由配置的 IPv6 前缀长度计算)与一个转换的 IPv4 地址之间存在粘性映射关系。

要求

开始之前,请确保现有 NAT 规则和池配置不会与新规则和池配置冲突。

概述

在此示例中,您在 IPv4 源 NAT 池中为 NAT IPv6 到 IPv4 的转换配置 IPv6 前缀长度为 /64。与 NAT 规则和 NAT 池匹配的流量会在 IPv6 前缀和 IPv4 转换地址之间执行地址持久转换。此配置可在双转换方案 464XLAT 中的提供商端转换器 (PLAT) 上使用,以使 IPv4 服务能够在仅 IPv6 网络上工作。

配置

CLI 快速配置

要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改详细信息,以便与网络配置匹配,将命令复制并粘贴到层 [edit] 级的 CLI 中,然后从配置模式进入 commit

content_copy zoom_out_map
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 编辑器

  1. 创建源 NAT 池。

    content_copy zoom_out_map
    [edit security nat source]
    user@host# set pool NAT64 address 198.51.100.240/32 to 198.51.100.254/32
    
  2. 指定源 NAT 池的 IPv6 前缀长度。

    content_copy zoom_out_map
    [edit security nat source]
    user@host# set pool NAT64 address-persistent subscriber ipv6-prefix-length 64
    
  3. 创建规则集。

    content_copy zoom_out_map
    [edit security nat source]
    user@host# set rule-set RS1 from zone trust
    user@host# set rule-set RS1 to zone untrust
    
  4. 匹配规则。

    content_copy zoom_out_map
    [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
    
  5. 提供规则匹配时要执行的作。

    content_copy zoom_out_map
    [edit security nat source]
    user@host# set security nat source rule-set RS1 rule R1 then source-nat pool NAT64
    
结果

在配置模式下,输入 show security nat 命令以确认您的配置。如果输出未显示预期的配置,请重复此示例中的配置说明,以便进行更正。

content_copy zoom_out_map
[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 应用到流量

目的

验证是否将相同的 IPv6 前缀转换为永久 IPv4 地址。

行动

在作模式下,输入 show security flow session 命令。

示例:通过使用接口 NAT 配置持久 NAT 来支持网络配置

您可以使用源 NAT 规则配置任何持久 性 NAT 类型。此示例说明如何对接口 IP 地址应用持久 NAT,以及如何将接口 IP 地址用作 NAT IP 地址对特定内部主机执行持久 NAT。它还说明了如何维护主机的持久性地址 端口映射 行为和持久性 NAT 过滤器行为。您必须禁用接口 NAT 的端口过载。

要求

此示例使用以下硬件和软件组件:

  • 1 SRX 系列防火墙

  • 4 台电脑

开始之前:

概述

在运营商级 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 拓扑。

图 3:接口持久 NAT 拓扑 Interface Persistent NAT Topology

此示例中配置的参数如表 2 所示。

表 2:接口、区域、服务器和 IP 地址信息

参数

描述

外部区域

外部网络

内部区域

内部网络

External_phones2

外部网络的 Phone2 地址

Internal_phone1

内部网络的 Phone1 地址

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

content_copy zoom_out_map
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 规则集,请执行以下作:

  1. 为接口 NAT 创建永久 NAT 规则。

    content_copy zoom_out_map
    [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
    
  2. 禁用接口 NAT 的端口过载。

    content_copy zoom_out_map
    [edit security]
    user@host# set nat source interface port-overloading off
    
  3. 配置安全策略以允许从内部 SIP 电话到外部 STUN 服务器的 STUN 流量。

    content_copy zoom_out_map
    [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
    
  4. 配置安全策略以允许从内部 SIP 电话到外部 SIP 代理服务器的 SIP 代理流量。

    content_copy zoom_out_map
    [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
    
  5. 配置安全策略以允许从外部 SIP 电话到内部 SIP 电话的 SIP 流量。

    content_copy zoom_out_map
    [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 命令,以确认您的配置。如果输出未显示预期的配置,请重复此示例中的说明以更正配置。

content_copy zoom_out_map
[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  命令。

content_copy zoom_out_map
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 命令。

content_copy zoom_out_map
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

content_copy zoom_out_map
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 客户端配置地址相关过滤:

  1. 为 NAT64 创建一组规则。

    content_copy zoom_out_map
    [edit security nat static]
    user@host# set rule-set test_rs from interface ge-0/0/1
    
  2. 匹配规则。

    content_copy zoom_out_map
    [edit security nat static]
    user@host# set rule-set test_rs rule test_rule match destination-address 2001:db8::/128
    
  3. 提供规则匹配时要执行的作。

    content_copy zoom_out_map
    [edit security nat static]
    user@host# set rule-set test_rs rule test_rule then static-nat prefix 10.2.2.15/32
    
  4. 定义源地址池并将该地址添加到池中。

    content_copy zoom_out_map
    [edit security nat]
    user@host# set source pool myipv4 address 203.0.113.2
    
  5. 为 NAT64 创建另一组规则。

    content_copy zoom_out_map
    [edit security nat]
    user@host# set source rule-set myipv4_rs from interface ge-0/0/1
    
  6. 将规则与源地址进行匹配。

    content_copy zoom_out_map
    [edit security nat]
    user@host# set source rule-set myipv4_rs rule ipv4_rule match source-address 2001:db8::/96
    
  7. 将规则与目标地址进行匹配。

    content_copy zoom_out_map
    [edit security nat]
    user@host# set source rule-set myipv4_rs rule ipv4_rule match destination-address 10.2.2.15
    
  8. 提供规则匹配时要执行的作。

    content_copy zoom_out_map
    [edit security nat]
    user@host# set source rule-set myipv4_rs rule ipv4_rule then source-nat pool myipv4
    
  9. 配置持久 NAT。

    content_copy zoom_out_map
    [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 命令以确认您的配置。如果输出未显示预期的配置,请重复此示例中的配置说明,以便进行更正。

content_copy zoom_out_map
[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_rule

  • show security nat source rule ipv4_rule

  • show security nat source pool myipv4

验证规则是否匹配并使用

目的

验证是否匹配并使用了所有规则。

行动

在作模式下,输入 show security nat source persistent-nat-table all 命令。

示例:为 IPv6 客户端配置与终结点无关的过滤

此示例说明如何使用 NAT64 为 IPv6 客户端配置与端点无关的过滤。

要求

开始之前:

  • 确保设备上已启用 IPv6

  • 确保现有 NAT 规则和池配置不会与新规则和池配置冲突。

概述

在此示例中,您使用 NAT64 从 IPv6 内部主机向 IPv4 外部主机发送数据包,再从 IPv4 外部主机向 IPv4 内部主机发送数据包。

拓扑学

配置

程序

CLI 快速配置

要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改详细信息,以便与网络配置匹配,将命令复制并粘贴到层 [edit] 级的 CLI 中,然后从配置模式进入 commit

content_copy zoom_out_map
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 客户端配置与端点无关的过滤,请执行以下作:

  1. 为 NAT64 创建一组规则。

    content_copy zoom_out_map
    [edit security nat static]
    user@host# set rule-set test_rs from interface ge-0/0/1
    
  2. 匹配规则。

    content_copy zoom_out_map
    [edit security nat static]
    user@host# set rule-set test_rs rule test_rule match destination-address 2001:db8::/128
    
  3. 提供规则匹配时要执行的作。

    content_copy zoom_out_map
    [edit security nat static]
    user@host# set rule-set test_rs rule test_rule then static-nat prefix 10.2.2.15/32
    
  4. 定义源地址池并将该地址添加到池中。

    content_copy zoom_out_map
    [edit security nat]
    user@host# set source pool myipv4 address 203.0.113.2
    
  5. 为 NAT64 创建另一组规则。

    content_copy zoom_out_map
    [edit security nat]
    user@host# set source rule-set myipv4_rs from interface ge-0/0/1
    
  6. 将规则与源地址进行匹配。

    content_copy zoom_out_map
    [edit security nat]
    user@host# set source rule-set myipv4_rs rule ipv4_rule match source-address 2001:db8::/96
    
  7. 将规则与目标地址进行匹配。

    content_copy zoom_out_map
    [edit security nat]
    user@host# set source rule-set myipv4_rs rule ipv4_rule match destination-address 10.2.2.15
    
  8. 提供规则匹配时要执行的作。

    content_copy zoom_out_map
    [edit security nat]
    user@host# set source rule-set myipv4_rs rule ipv4_rule then source-nat pool myipv4
    
  9. 配置持久 NAT。

    content_copy zoom_out_map
    [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 命令以确认您的配置。如果输出未显示预期的配置,请重复此示例中的配置说明,以便进行更正。

content_copy zoom_out_map
[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_rule

  • show security nat source rule ipv4_rule

  • show security nat source pool myipv4

验证规则是否匹配并使用

目的

验证是否匹配并使用了所有规则。

行动

在作模式下,输入 show security nat source persistent-nat-table all 命令。

示例:设置最大持久 NAT 绑定数

此示例说明如何增加持久 NAT 容量。

要求

开始之前,请参阅 了解持久性 NAT 和 NAT64

概述

在此示例中,您将启用最大化持久 NAT 容量选项。对于采用 SRX1K-NPC-SPC-1-10-40 的 SRX1400 设备、采用 SRX3K-SPC-1-10-40 的 SRX3000 系列 设备以及采用 SRX5K-SPC-2-10-40SPC 和 SRX5K-SPC3 的 SRX5000 系列 设备,此选项仅在服务处理卡 (SPC) 上受支持。请注意,对于具有 SRX5K-SPC-2-10-40SPC 和 SPC3 的 SRX5000 系列设备,持久 NAT 绑定数的最大化是以减少最大会话数为代价的。

要启用此选项,支持的中心点最大绑定容量可以大约增加到中心点会话容量的 1/8,最高可达 2M,并且支持的 SPU 最大绑定容量可以大约增加到每个 SPU 会话容量的 1/4。因此,CP 和每个 SPU 上的流会话容量将减少 1/4。

默认情况下,SRX5400、SRX5600或SRX5800设备的中心点和 SPU 上的持久 NAT 绑定容量为 64,000。在此示例中,您将中心点的会话容量设置为最大 20,000,000,每个具有最大会话配置的 SPU 的最大 1,100,000。如果启用该 maximize-persistent-nat-capacity 选项,则具有 4 GB 内存的 SRX5400、SRX5600 或 SRX5800 设备可以在中心点上支持最多 2M 的持久 NAT 绑定,在每个 SPU 上支持 275,000 个绑定。

配置

程序

分步过程

要增加持久 NAT 容量,请执行以下作:

  1. 设置最大永久性 NAT 容量选项。

    content_copy zoom_out_map
    [edit]
    user@host# set security forwarding-process application-services maximize-persistent-nat-capacity
    
  2. 如果完成设备配置,请提交配置。

    content_copy zoom_out_map
    [edit]
    user@host# commit
    
  3. 从作模式重新启动系统。

    content_copy zoom_out_map
    [edit]
    user@host# request system reboot
    

    切换到最大化持久 NAT 容量模式或返回常规模式时,必须重新启动设备。

  4. 如果要将设备切换回常规模式,请删除最大化持久 NAT 容量模式配置。

    content_copy zoom_out_map
    [edit]
    user@host# delete security forwarding-process application-services maximize-persistent-nat-capacity
    

验证

验证增加的持久 NAT 容量

目的

验证您是否增加了持久 NAT 容量。

行动

在作模式下,输入 show security forwarding-process application-services 命令。

持久 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:持久 NAT 发夹 Persistent NAT Hairpinning

在图 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 显示了此示例中使用的绑定表。

表 3:持久 NAT 绑定表

原始源 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:持久 NAT 发夹 Persistent NAT Hairpinning

在图 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 显示了此示例中使用的绑定表。

表 4:持久 NAT 绑定表

原始源 IP 地址

转换后的源 IP 地址

10.10.10.2/24 至 10.10.10.11/24

192.0.2.1/32 至 192.0.2.10/32

配置

程序

分步过程

要配置持久 NAT 发夹:

  1. 配置接口。

    content_copy zoom_out_map
    [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
    
  2. 创建区域(reth0z 和 reth1z)。

    content_copy zoom_out_map
    [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
    
  3. 为区域 reth0z 和 reth1z 创建策略。

    content_copy zoom_out_map
    [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
    
  4. 添加相同的区域策略以进行持久 NAT 发夹。

    content_copy zoom_out_map
    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
    
  5. 为主机 1 和主机 2 (src1) 创建源 NAT 池。

    content_copy zoom_out_map
    [edit]
    user@host# set security nat source pool src1 address 192.0.2.1/32 to 192.0.2.10/32
    
  6. 指定主机 1 和主机 2 (src1) 的原始源 IP 地址范围的开头。

    content_copy zoom_out_map
    [edit]
    user@host# set security nat source pool src1 host-address-base 10.10.10.2/24
    
  7. 配置源 NAT 规则集 r1。

    content_copy zoom_out_map
    [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 命令以确认您的配置。如果输出未显示预期的配置,请重复此示例中的配置说明,以便进行更正。

content_copy zoom_out_map
[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 和主机 3)之间发送的流量,从而创建绑定 1。

行动
content_copy zoom_out_map
 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 和主机 3)之间发送的流量,从而创建绑定 2。

行动
content_copy zoom_out_map
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 的流量:

行动
content_copy zoom_out_map
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 系列
  • 支持 NAT 绑定的 64GB SRX4100和 vSRX,支持 512K (524288) 持久 NAT 绑定。

  • 支持 NAT 绑定的 SRX4200 支持 1M (1048576) 持久 NAT 绑定。

footer-navigation