ADC

RNAT

在反向网络地址转换 (RNAT) 中,NetScaler 设备将服务器生成的数据包中的源 IP 地址替换为公有 NAT IP 地址。默认情况下,设备使用 SNIP 地址作为 NAT IP 地址。您也可以将设备配置为为每个子网使用唯一的 NAT IP 地址。您还可以使用访问控制列表 (ACL) 配置 RNAT。使用源 IP (USIP)、使用子网 IP (USNIP) 和链路负载平衡 (LLB) 模式会影响 RNAT 的运行。您可以显示统计数据以监视 RNAT。

注意: NetScaler 设备上 RNAT 的临时端口范围为 1024-65535。

您可以使用网络地址或扩展 ACL 作为 RNAT 条目的条件:

  • 使用网络地址。当您使用网络地址时,将对来自指定网络的所有数据包执行 RNAT 处理。

  • 使用扩展 ACL。当您使用 ACL 时,将对与 ACL 匹配的所有数据包执行 RNAT 处理。要将 NetScaler 设备配置为使用与 ACL 匹配的流量的唯一 IP 地址,必须执行以下三项任务:

    1. 配置 ACL。
    2. 配置 RNAT 以更改源 IP 地址和目标端口。
    3. 应用 ACL。

    下图说明了使用 ACL 配置的 RNAT。

    图 1. 带有 ACL 的 RNAT

    rnat acl

对于 NAT IP 地址的类型,您可以进行以下基本选择:

  • 使用 SNIP 作为 NAT IP 地址。使用 SNIP 作为 NAT IP 地址时,NetScaler 设备会将服务器生成的数据包的源 IP 地址替换为 SNIP。因此,SNIP 地址必须是公有 IP 地址。如果启用了使用子网 IP (USNIP) 模式,则 NetScaler 可以使用子网 IP 地址 (SNIP) 作为 NAT IP 地址。

  • 使用唯一的 IP 地址作为 NAT IP 地址。使用唯一的 IP 地址作为 NAT IP 地址时,NetScaler 设备会使用指定的唯一 IP 地址替换服务器生成的数据包的源 IP 地址。唯一的 IP 地址必须是 NetScaler 拥有的公有 IP 地址。如果为子网配置了多个 NAT IP 地址,则 NAT IP 选择使用循环算法。

    此配置如下图所示。

    图 2. 使用唯一的 IP 地址作为 NAT IP 地址

    rnat nat ip

开始之前的准备工作

在配置 RNAT 规则之前,请考虑以下几点:

  • 在 NetScaler 设备上同时配置 RNAT 和 Use Source IP (USIP) 时,RNAT 优先。换句话说,与 RNAT 规则匹配的数据包的源 IP 地址将根据 RNAT 规则中的设置进行替换。

  • 在 NetScaler 设备对来自服务器的流量同时执行链路负载平衡 (LLB) 和 RNAT 的拓扑中,设备会根据路由器选择源 IP 地址。LLB 配置确定路由器的选择。有关 LLB 的更多信息,请参阅 链接负载平衡

配置 RNAT

以下说明为创建使用不同条件和不同类型的 NAT IP 地址的 RNAT 条目提供了单独的命令行程序。在 GUI 中,所有变体都可以在同一个对话框中配置,因此 GUI 用户只有一个步骤。

CLI 过程

要使用 CLI 创建 RNAT 规则,请执行以下操作:

在命令提示符下,要创建规则并验证配置,请键入:

  • add rnat <name> (<network> | (<aclname> [-redirectPort <port>]))
  • bind rnat <name> <natIP>@ …
  • show rnat

要使用 CLI 修改或删除 RNAT 规则,请执行以下操作:

  • 要修改 RNAT 规则,请执行以下操作:

    set rnat <name> (<aclname> [-redirectPort <port>])

  • 要删除 RNAT 规则,请键入命令。

    rm rnat <name>

使用以下命令验证配置:

  • show rnat

示例:


A network address as the condition and a SNIP address as the NAT IP address:

> add rnat RNAT-1 192.168.1.0 255.255.255.0
Done

A network address as the condition and a unique IP address as the NAT IP address:

> add rnat RNAT-2 192.168.1.0 255.255.255.0
Done

> bind rnat RNAT-2 -natip 10.102.29.50
Done

If instead of a single NAT IP address you specify a range, RNAT entries are created with all the NetScaler-owned IP addresses, except the NSIP, that fall within the range specified:

> add rnat RNAT-3 192.168.1.0 255.255.255.0
Done

> bind rnat RNAT-3 -natip 10.102.29.[50-110]
Done


An ACL as the condition and a SNIP address as the NAT IP address:

> add rnat RNAT-4 acl1
Done

An ACL as a condition and a unique IP address as the NAT IP address:

> add rnat RNAT-4 acl1
Done

> bind rnat RNAT-4 -natip 10.102.29.50
Done

If instead of a single NAT IP address you specify a range, RNAT entries are created with all the NetScaler-owned IP addresses, except the NSIP, that fall within the range specified:

> add rnat RNAT-5 acl1
Done

> bind rnat RNAT-5 -natip 10.102.29.[50-70]
Done

<!--NeedCopy-->

GUI 程序

要使用 GUI 创建 RNAT 条目,请执行以下操作:

导航到 系统 > 网络 > NAT,单击 RNAT 选项卡,然后添加新的 RNAT 规则或编辑现有规则。

监视 RNAT

您可以显示 RNAT 统计数据以解决与 IP 地址转换有关的问题。

下表描述了与 RNAT 和 RNAT IP 相关的统计数据。

统计 说明
收到的字节数 RNAT 会话期间收到的字节
发送的字节数 RNAT 会话期间发送的字节
收到的数据包 RNAT 会话期间收到的数据包
已发送的数据包 在 RNAT 会话期间发送的数据包
同步已发送 在 RNAT 会话期间发送的连接请求
本届会议 当前活跃的 RNAT 会话

要使用 CLI 查看 RNAT 统计信息,请执行以下操作:

在命令提示符下,键入:

  • stat rnat

示例:


> stat rnat

RNAT summary
                               Rate (/s)            Total
Bytes Received                   0                    0
Bytes Sent                       0                    0
Packets Received                 0                    0
Packets Sent                     0                    0
Syn Sent                         0                    0
Current RNAT sessions           --                    0
 Done
>
<!--NeedCopy-->

要使用 GUI 监视 RNAT,请执行以下操作:

导航到“系统”>“网络”>“NAT”,单击“RNAT”选项卡,然后单击“统计”。

配置 RNAT6

IPv6 数据包的反向网络地址转换 (RNAT) 规则称为 rnat6s。当服务器生成的 IPv6 数据包符合 RNAT6 规则中指定的条件时,设备会将 IPv6 数据包的源 IPv6 地址替换为配置的 NAT IPv6 地址,然后将其转发到目标。NAT IPv6 地址是 NetScaler 拥有的 SNIP6 或 VIP6 地址之一。

配置 RNAT6 规则时,可以指定 IPv6 前缀或 ACL6 作为条件:

  • 使用 IPv6 网络地址。当您使用 IPv6 前缀时,设备会对 IPv6 地址与前缀匹配的 IPv6 数据包执行 RNAT 处理。
  • 使用 ACL6。当您使用 ACL6 时,设备会对符合 ACL6 中指定条件的 IPv6 数据包执行 RNAT 处理。

您可以使用以下选项之一来设置 NAT IP 地址:

  • 为 RNAT6 规则指定一组 NetScaler 拥有的 SNIP6 和 VIP6 地址。NetScaler 设备使用此集合中的任一 IPv6 地址作为每个会话的 NAT IP 地址。选择基于循环算法,并针对每个会话完成。

  • 不要为 RNAT6 规则指定任何 NetScaler 拥有的 SNIP6 或 VIP6 地址。NetScaler 设备使用 NetScaler 拥有的任何一个 SNIP6 或 VIP6 地址作为 NAT IP 地址。选择基于与 RNAT 规则相匹配的 IPv6 数据包的下一跳网络。

CLI 过程

要使用 CLI 创建 RNAT6 规则,请执行以下操作:

在命令提示符下,要创建规则并验证配置,请键入:

  • **add rnat6** <name> (<network> | (<acl6name> [-**redirectPort** \]))
  • bind rnat6 <name> <natIP6>@ …
  • show rnat6

要使用 CLI 修改或删除 RNAT6 规则,请执行以下操作:

  • 要修改条件为 ACL6 的 RNAT6 规则,请键入 set rnat6命令,然后键入 redirectPort 参数的新值。 <name>
  • <name>要删除 RNAT6 规则,请键入 清除 rnat6 命令

GUI 程序

要使用 GUI 配置 RNAT6 规则,请执行以下操作:

导航到“系统”>“网络”>“NAT”,单击 RNAT6 选项卡,然后添加新的 RNAT6 规则或编辑现有规则。

显示器 RNAT6

您可以显示与 RNAT6 功能相关的统计信息,以监视性能或解决与 RNAT6 功能相关的问题。您可以显示 RNAT6 规则或特定 RNAT6 规则的统计数据摘要。统计计数器反映了自上次重启 NetScaler 设备以来发生的事件。重新启动 NetScaler 设备后,所有这些计数器都将重置为 0。

下面 列出了一些与 RNAT6 功能相关的统计计数器:

  • 接收的字节 -RNAT6 会话期间收到的总字节数。
  • 发送的字节 数-RNAT6 会话期间发送的总字节数。
  • 收到的数据包 -RNAT6 会话期间收到的数据包总数。
  • 发送的数据包 -RNAT6 会话期间发送的数据包总数。
  • 已发送 Syn -RNAT6 会话期间发送的连接请求总数
  • 当前会话 -当前处于活动状态的 RNAT6 会话

要使用 CLI 显示所有 RNAT6 规则的汇总统计信息,请执行以下操作:

在命令提示符下,键入:

  • stat rnat6

要使用 CLI 显示指定 RNAT6 规则的统计信息,请执行以下操作:

在命令提示符下,键入:

  • stat rnat6 [\<rnat6 rule name>]

要使用 GUI 显示 RNAT6 统计信息,请执行以下操作:

导航到“系统”>“网络”>“NAT ”,单击“RNAT6”选项卡,然后单击“统计信息”。

> stat rnat6

RNAT6 summary

                           Rate (/s)                Total

Bytes Received              178                20644

Bytes Sent                  178                20644

Packets Received             5                  401

Packets Sent                 5                  401

Syn Sent                     0                    2

Current RNAT6 sessions      --                    1

Done

<!--NeedCopy-->

RNAT 日志条目中的日志开始时间和连接关闭原因

为了诊断或解决与 RNAT 相关的问题,每当 RNAT 会话关闭时,NetScaler 设备都会记录 RNAT 会话。

RNAT 会话的日志消息包含以下信息:

  • NetScaler 拥有的 IP 地址(NSIP 地址或 SNIP 地址),日志消息来自该地址
  • 日志创建的时间戳
  • RNAT 会话的协议
  • 源 IP 地址
  • RNAT IP 地址
  • 目标 IP 地址
  • RNAT 会话的开始时间
  • RNAT 会话的闭幕时间
  • NetScaler 设备为此 RNAT 会话发送的总字节数
  • NetScaler 设备为此 RNAT 会话接收的总字节数
  • RNAT 会话关闭的原因。NetScaler 设备会记录不使用设备的 TCP 代理(禁用 TCP 代理)的 TCP RNAT 会话的关闭原因。以下是 TCP RNAT 会话记录的关闭原因类型:
    • TCP FIN。由于源设备或目标设备发送 TCP FIN,RNAT 会话已关闭。
    • TCP RST。由于源设备或目标设备发送 TCP 重置,RNAT 会话已关闭。
    • 超时。RNAT 会话超时。

下表显示了 RNAT 会话的一些示例日志条目。

参赛类型 示例日志条目
UDP RNAT 会话的日志条目示例 Dec 1 15:28:12 10.102.53.114 12/01/2015:15:28:12 GMT 0-PPE-0 : default UDP NAT\_OTHERCONN\_DELINK 154 0 : Source 1.2.2.5:23431 - Destination 192.168.123.122:22 - NatIP 192.168.123.1:4045 - Destination 192.168.123.122:22 - Start Time 12/01/2015:15:26:58 GMT - Delink Time 12/01/2015:15:28:12 GMT - Total\_bytes\_send 2511 - Total\_bytes\_recv 3725
TCP RNAT 会话的日志条目示例。日志条目显示会话由于 TCP 重置而关闭 Dec 1 15:29:59 10.102.53.114 12/01/2015:15:27:59 GMT 0-PPE-0 : default TCP NAT\_OTHERCONN\_DELINK 152 0 : Source 1.2.2.5:33826 - Destination 192.168.123.122:22 - NatIP 192.168.123.1:2384 - Destination 192.168.123.122:22 - Start Time 12/01/2015:15:27:40 GMT - Delink Time 12/01/2015:15:27:59 GMT - Total\_bytes\_send 2147 - Total\_bytes\_recv 3257 - Closure Reason TCP RST
TCP RNAT 会话的日志条目示例。日志条目显示会话已超时 Dec 1 15:30:12 10.102.53.114 12/01/2015:15:30:12 GMT 0-PPE-0 : default TCP NAT\_OTHERCONN\_DELINK 155 0 : Source 1.2.2.5:64976 - Destination 192.168.123.115:22 - NatIP 192.168.123.1:19636 - Destination 192.168.123.115:22 - Start Time 12/01/2015:15:27:25 GMT - Delink Time 12/01/2015:15:30:12 GMT - Total\_bytes\_send 0 - Total\_bytes\_recv 0 - Closure Reason TIMEOUT

RNAT 的状态连接故障转移

连接故障转移有助于防止对部署在分布式环境中的应用程序的访问中断。NetScaler 设备现在支持对与 NetScaler 高可用性 (HA) 设置中的 RNAT 规则相关的连接进行状态连接故障转移。在 HA 设置中,连接故障转移(或连接镜像)是指在发生故障转移时保持已建立的 TCP 或 UDP 连接处于活动状态的过程。

主设备向辅助设备发送消息,以同步有关 RNAT 连接的当前信息。辅助设备仅在故障转移时使用此连接信息。发生故障转移时,新的主 NetScaler 设备会包含有关在故障切换之前建立的连接的信息,因此即使在故障切换之后仍会继续为这些连接提供服务。从客户端的角度来看,这种故障转移是透明的。在过渡期间,客户端和服务器可能会经历短暂的中断和重新传输。

可以根据 RNAT 规则启用连接故障转移。要在 RNAT 规则上启用连接故障转移,您可以使用 CLI 或 GUI 启用该特定 RNAT 规则的 connFailover(连接故障转移)参数。

要使用 CLI 为 RNAT 规则启用连接故障转移,请执行以下操作:

在命令提示符下,键入:

  • set rnat <name> -connfailover (ENABLED | DISABLED)
  • show rnat

要使用 GUI 为 RNAT 规则启用连接故障转移,请执行以下操作:

  1. 导航到“系统”>“网络”>“NAT”,然后单击 RNAT 选项卡。
  2. 在添加新 RNAT 规则时或编辑现有规则时,选择 连接故障转移

为与服务器的 RNAT 连接保留源端口

对于单击具有一个或多个 RNAT IP 地址且禁用了使用代理端口参数的 RNAT 配置的请求,NetScaler 设备使用 RNAT IP 地址之一和 RNAT 请求的源端口来连接到服务器。在 13.0 47.x 版本之前,如果某些其他连接中已使用同一源端口,则与服务器的 RNAT 连接(使用 RNAT 客户端的源端口)将失败。

  • 源端口小于 1024。默认情况下,NetScaler 设备保留任何 NetScaler 拥有的 IP 地址(包括 RNAT IP 地址)的前 1024 个端口。在 13.0 47.x 构建之前,如果 RNAT 请求的源端口小于或等于 1024,则与服务器的 RNAT 连接(使用 RNAT 客户端的源端口)将失败。使用 13.0 47.x 版本,即使 RNAT 请求的源端口小于或等于 1024,与服务器的 RNAT 连接(使用 RNAT 客户端的源端口)也会成功。

  • 源端口大于 1024。在 13.0 47.x 版本之前,如果某些其他连接中已使用同一源端口,则与服务器的 RNAT 连接(使用 RNAT 客户端的源端口)将失败。借助 13.0 47.x 版本,您可以在 Retain Source Port range (retainsourceportrange) 参数中指定 RNAT 客户端源端口范围,作为 RNAT 配置的一部分。NetScaler 设备将这些 RNAT 客户端源端口保留在 RNAT IP 地址上,仅用于与服务器的 RNAT 连接。

删除 RNAT 会话

您可以从 NetScaler 设备中删除任何不需要的或效率低下的 RNAT 会话。设备立即释放为这些会话分配的资源(例如 NAT IP 地址的端口和内存),使资源可用于新会话。设备还会丢弃与这些已删除会话相关的所有后续数据包。您可以从 NetScaler 设备中删除所有或选定的 RNAT 会话。

要使用 CLI 清除所有 RNAT 会话,请执行以下操作:

在命令提示符下,键入:

  • flush rnatsession

要使用 CLI 清除选择性的 RNAT 会话,请执行以下操作:

在命令提示符下,键入:

  • **flush rnatsession** ((-**network** <ip_addr> -**netmask** <netmask>) | -**natIP** <ip_addr> | -**aclname** <string>)

要使用 GUI 清除所有或选择性 RNAT 会话,请执行以下操作:

  1. 导航到“系统”>“网络”>“NAT”, 然后单击“RNAT”选项卡。
  2. 在“操作”菜单中,单击“刷新 RNAT 会话”以删除所有或选择性的 RNAT 会话(例如,删除具有特定 RNAT IP 或属于特定网络或基于 ACL 的 RNAT 规则的 RNAT 会话)。

示例配置:

    Clear all RNAT sessions existing on a NetScaler appliance

    > flush rnatsession

    Done

    Clear all RNAT sessions belonging to network based RNAT rules that has 203.0.113.0/24 network as the matching condition.

    > flush rnatsession -network 203.0.113.0 -netmask 255.255.255.0

    Done

    Clear all RNAT sessions with RNAT IP 192.0.2.90.

    > flush rnatsession -natIP 192.0.2.90

    Done

    Clear all RNAT sessions belonging to ACL based RNAT rules that has ACL-RNAT-1 as the matching condition.

    > flush rnatsession -aclname ACL-RNAT-1

    Done
<!--NeedCopy-->