Citrix ADC

IP 通道

IP 隧道是一个通信通道,可以通过使用封装技术创建,在没有路由路径的两个网络之间。两个网络之间共享的每个 IP 数据包都封装在另一个数据包中,然后通过隧道发送。

Citrix ADC 设备通过以下方式实现 IP 隧道:

  • Citrix ADC 作为封装器(使用 DSR 模式进行负载平衡):考虑一个在不同国家/地区拥有多个数据中心的组织,其中 Citrix ADC 可能位于一个位置,而后端服务器位于不同国家/地区。从本质上讲,Citrix ADC 和后端服务器位于不同的网络上,并通过路由器连接。

    在此 Citrix ADC 上配置直接服务器返回 (DSR) 时,从源子网发送的数据包将由 Citrix ADC 封装,并通过路由器和隧道发送到相应的后端服务器。后端服务器对数据包进行解压并直接响应客户端,而不允许数据包通过 Citrix ADC 传递。

  • Citrix ADC 作为去胶囊器: 考虑具有多个数据中心的组织,每个数据中心都有 Citrix ADC 和后端服务器。当数据包从数据中心 A 发送到数据中心 B 时,通常通过中介(例如路由器或其他 Citrix ADC)发送。Citrix ADC 处理数据包,然后将数据包转发到后端服务器。但是,如果发送封装的数据包,Citrix ADC 必须能够在将数据包发送到后端服务器之前对数据包进行解除。要使 Citrix ADC 能够充当去胶囊器,需要在路由器和 Citrix ADC 之间添加一条隧道。当包含附加标头信息的封装数据包到达 Citrix ADC 时,数据包将被解压,即删除附加标头信息,然后将数据包转发到相应的后端服务器。

    Citrix ADC 也可用作负载平衡功能的去除器,特别是在虚拟服务器上的连接数超过阈值,然后将所有新连接转移到备份虚拟服务器的情况下。

配置 IP 隧道

在 Citrix ADC 设备上配置 IP 隧道包括创建 IP 隧道实体。IP 隧道实体指定本地和远程隧道端点 IP 地址以及用于 IP 隧道的协议。

注意: 在群集设置中配置 IP 隧道时,本地 IP 地址必须是条带 SNIP 地址。

CLI 过程

要使用 CLI 创建 IP 隧道,请执行以下操作:

在命令提示符处键入:

  • add iptunnel <name> <remote> <remoteSubnetMask> <local> -type -protocol (ipoverip | GRE)
  • show iptunnel

要使用 CLI 删除 IP 隧道,请执行以下操作:

要删除 IP 隧道,请键入 rm iptunnel 命令和隧道的名称。

要使用 CLI 创建 IPv6 隧道,请执行以下操作:

在命令提示符处键入:

  • add ip6tunnel <name> <remoteIp> <local>
  • show ip6tunnel

要使用 CLI 删除 IPv6 隧道,请执行以下操作:

要删除 IPv6 隧道,请键入 rm ip6tunnel 命令和隧道的名称。

GUI 程序

要使用 GUI 创建 IP 隧道,请执行以下操作:

导航到系统 > 网络 > IP 隧道,添加新的 IP 隧道。

要使用 GUI 创建 IPv6 隧道,请执行以下操作:

导航到系统 > 网络 > IP 隧道 > IPv6 隧道,然后添加新的 IPv6 隧道。

全局自定义 IP 隧道

通过全局指定源 IP 地址,您可以在所有隧道中分配公用源 IP 地址。此外,由于碎片是 CPU 密集型的,因此您可以全局指定 Citrix ADC 设备删除任何需要碎片的数据包。或者,如果您想要在未达到 CPU 阈值的情况下对所有数据包进行碎片处理,则可以全局指定 CPU 阈值。

CLI 过程

要使用 CLI 全局自定义 IP 隧道:

在命令提示窗口中,键入:

  • set ipTunnelParam -srcIP <sourceIPAddress> -srcIPRoundRobin ( YES | NO )-dropFrag [YES | NO] -dropFragCpuThreshold <Positive integer>

  • show ipTunnelParam

示例:

> set iptunnelparam –srcIP 12.12.12.22 -dropFrag Yes –dropFragCpuThreshold 50
 Done

> set iptunnelparam -srcIPRoundRobin YES -dropFrag Yes –dropFragCpuThreshold 50
 Done

要使用 CLI 全局自定义 IPv6 隧道,请执行以下操作:

在命令提示窗口中,键入:

  • set ip6tunnelparam -srcIP <IPv6Address> -srcIPRoundRobin ( YES | NO )-dropFrag [YES | NO] -dropFragCpuThreshold <Positive integer>

  • show ip6tunnelparam

GUI 程序

要使用 GUI 全局自定义 IP 隧道:

导航到系统 > 网络,在“设置”组中,单击IPv4 隧道全局设置

  1. 导航到系统 > 网络,在设置组中,单击IPv6 隧道全局设置
  2. 配置 IP 隧道全局参数对话框中,设置参数。

要使用 GUI 全局自定义 IPv6 隧道:

  1. 导航到系统 > 网络,在设置组中,单击IPv6 隧道全局设置
  2. 配置 IP 隧道全局参数对话框中,设置参数。

GRE IP 隧道中的 GRE 有效载荷选项

对于已配置的 GRE IP 隧道,Citrix ADC 设备封装整个第 2 层数据包,包括以太网头和 VLAN 标头(dot1q VLAN 标签)。Citrix ADC 设备和某些第三方设备之间的 IP GRE 隧道可能不稳定,因为这些第三方设备未编程为处理某些或第 2 层数据包标头。要在 Citrix ADC 设备和第三方设备之间配置稳定的 IP GRE 隧道,可以使用 GRE IP 隧道命令集的 GRE 负载参数。GRE 有效载荷设置也可以应用于带 IPsec 隧道的 GRE。

您可以将 GRE 负载参数设置为在通过 GRE 隧道发送数据包之前执行以下操作之一:

  • 以太网与 DOT1Q. 携带以太网接头以及 VLAN 接头。此为默认设置。对于绑定到网桥的隧道,内部以太网头和 VLAN 标头包含来自 Citrix ADC 设备的 ARP 和桥接表的信息。对于设置为 PBR 规则的下一跃点的隧道,内部以太网目标 MAC 地址设置为零,VLAN 标头指定默认 VLAN。从 Citrix ADC 隧道端点发送的封装 (GRE) 数据包格式如下:

    本地化后的图片

  • 以太网。携带以太网接头,但删除 VLAN 接头。由于数据包在隧道中不会携带任何 VLAN 信息,因此对于具有此设置并绑定到网桥的隧道,必须将适当的 VLAN 绑定到网桥,以便在接收隧道上的任何数据包时,Citrix ADC 可以将这些数据包转发到指定的 VLAN。如果将隧道设置为 PBR 规则中的下一跃点,Citrix ADC 将路由隧道上接收的数据包。从 Citrix ADC 隧道端点发送的封装 (GRE) 数据包格式如下:

    本地化后的图片

  • IP。删除以太网标头以及 VLAN 标头。由于具有此设置的隧道不携带第 2 层标题,因此这些隧道不能绑定到 Netbridge,但可以在 PBR 规则中设置为下一个跃点。接收数据包时的对等隧道端点设备会消耗或路由数据包。从 Citrix ADC 隧道端点发送的封装 (GRE) 数据包格式如下:

    本地化后的图片

使用 CLI 删除 GRE IP 隧道中的第 2 层数据包标头:

  • add ipTunnel <name> <remote> <remoteSubnetMask> <local> [-protocol <GRE> [-vlan <positive_integer>]] [-grepayload <grepayload>] [-ipsecProfileName <string>]
  • show iptunnel <tunnelname>

示例:

> add iptunnel IPTUNNEL-1 203.0.113.133 255.255.255.0 198.51.100.15 –protocol GRE –grepayload Ethernet -ipsecProfileName IPTUNNEL-IPSEC-1
Done

通过 GRE IPV4 隧道的 IPv6 流量

Citrix ADC 设备支持通过 IPV4 GRE 隧道传输 IPv6 流量。此功能可用于启用隔离 IPv6 网络之间的通信,而无需升级它们之间的 IPv4 基础结构。

要配置此功能,请将 PBR6 规则与配置的 IPv4 GRE 隧道关联,希望 Citrix ADC 通过该隧道发送和接收 IPv6 流量。PBR6 规则的源 IPv6 地址和目标 IPv6 地址参数指定其流量要穿过 IPv4 GRE 隧道的 IPv6 网络。

注意: 配置为传输 IPv6 数据包的 GRE IPv4 隧道不支持 IPsec 协议。

要使用 CLI 创建 GRE IPv4 隧道,请执行以下操作:

在命令提示窗口中,键入:

  • add ipTunnel <name> <remote> <remoteSubnetMask> <local> -protocol GRE
  • show ipTunnel <name>

使用 CLI 将 PBR6 规则与 GRE IPv4 隧道关联:

  • add ns pbr6 <pbrName> ALLOW -srcIPv6 <network-range> -dstIPv6 <network-range> -ipTunnel <tunnelName>
  • show pbr

示例配置

在以下示例配置中,GRE IP TUNNEL-V6onV4 使用远程隧道端点 IP 地址 10.10.6.30 和本地隧道端点 IP 地址 10.10.5.30 创建。然后,该隧道被绑定到 pbr6 PBR6-V6onV4。srcIPv6 指定连接到本地端点的 IPv6 网络,destIPv6 指定连接到远程端点的 IPv6 网络。允许来自这些 ipv6 网络的流量穿过 GRE IPv4 隧道。

> add ipTunnel TUNNEL-V6onV4 10.10.6.30 255.255.255.255 10.10.5.30 -protocol GRE
-ipsecProfileName None
Done
> add ns pbr6 PBR6-V6onV4 ALLOW -srcIPv6 = 2001:0db8:1::1-2001:0db8:1::255 -destIPv6 =
1-2001:0db8:4::255 -ipTunnel TUNNEL-V6onV4

通过 IP-IP 隧道发送响应流量

您可以将 Citrix ADC 设备配置为通过 IP-IP 隧道发送响应流量,而不是将其路由回源。默认情况下,当设备通过 IP-IP 隧道接收来自另一 Citrix ADC 或第三方设备的请求时,它会路由响应流量,而不是通过隧道发送响应流量。您可以使用基于策略的路由 (PBRs) 或启用基于 Mac 的转发 (MBF) 通过隧道发送响应。

在 PBR 规则中,指定流量要穿越隧道的两个端点的子网。同时将下一个跃点设置为隧道名称。当响应流量与 PBR 规则匹配时,Citrix ADC 设备将通过隧道发送流量。

或者,您可以启用 MBF 以满足此要求,但该功能仅限于 Citrix ADC 设备存储会话信息的流量(例如,与负载平衡或 RNAT 配置相关的流量)。设备使用会话信息通过隧道发送响应流量。

CLI 过程

使用 CLI 创建 PBR 规则并将 IP IP 隧道关联到该规则:

在命令提示窗口中,键入:

  • add ns pbr <pbr_name> ALLOW -srcIP = <local_subnet_range> -destIP = <remote_subnet_range> -ipTunnel <tunnel_name>
  • apply ns pbrs
  • show ns pbr <pbr_name>

要使用 CLI 启用基于 Mac 的转发,请执行以下操作:

在命令提示窗口中,键入:

  • enable ns mode MBF
  • show ns mode

GUI 程序

要创建 PBR 规则并通过使用 GUI 将 IP 隧道关联到该规则:

  1. 导航到系统 > 网络 > PBRs。在 PBRs 选项卡上,创建 PBR 规则。
  2. 创建 PBR 时,将 下一跃点类型 设置为 IP 隧道 ,并将 IP 隧道名称 设置为配置的 IP IP 隧道名称。

要使用 GUI 启用基于 Mac 的转发,请执行以下操作:

  1. 导航到系统 > 置”,在模式和功能中,单击配置模式
  2. 配置模式页面上,选择 基于 Mac 的转发

示例配置

请考虑一个 IPIP 隧道(NS1-NS2-IPIP)的示例,该隧道设置在两个 Citrix ADC 设备 NS1 和 NS2 之间。

默认情况下,对于 NS2 通过隧道接收的任何请求,其将响应流量路由到源,而不是通过隧道将响应流量发送(到 NS1)。

您可以在 NS2 上配置基于策略的路由 (PBRs) 或启用基于 MAC 的转发 (MBF),以使其能够通过隧道发送响应。

在 NS2 上的以下示例配置中,NS1-NS2-IPIP 是一个 IPIP 隧道,NS1-NS2-IP-PBR 是一个 PBR 规则。对于 NS2 通过隧道接收的请求(内部源 IP 地址在 10.102.147.0-10.102.147.255 范围内,内部目标 IP 地址在 10.102.147.0-10.102.147.255 范围内),NS2 将通过隧道(到 NS1)发送相应的响应,而不是将其路由到源。该功能仅限于与 PBR 规则匹配的流量。

> add iptunnel NS1-NS2-IPIP 192.0.2.99 255.255.255.255 203.0.113.99–protocol IPIP

Done
> add pbr NS1-NS2-IPIP-PBR -srcIP 10.102.147.0-10.102.147.255 –destIP 10.20.1.0-10.20.1.255 –ipTunnel NS1-NS2-IPIP

Done
> apply pbrs

Done

或者,可以在 NS2 上启用 MBF。此功能仅限于 NS2 存储会话信息的流量(例如,与负载平衡或 RNAT 配置相关的流量)。

> enable ns mode MBF

Done

IP 通道