Citrix ADC

代理协议

代理协议跨 Citrix ADC 设备安全地将客户端详细信息从客户端传输到服务器。设备会添加包含客户端详细信息的代理协议标头,然后将其转发到后端服务器。以下是 Citrix ADC 设备中代理协议的一些使用场景。

  • 学习原始客户端 IP 地址
  • 为网站选择语言
  • 阻止列出选定的 IP 地址
  • 记录和收集统计信息。

以下是三种操作模式:

  • 插入。设备会插入客户端详细信息并将其发送到后端服务器。
  • 向前。设备会将客户端详细信息转发给后端服务器。
  • 剥离。设备存储客户端详细信息以用于日志目的。另外,如果后端服务器不支持代理协议,则使用重写策略配置将客户端详细信息发送到服务器

限制

TCP 快速开放 (TFO) 和多路径 TCP 功能不支持代理协议。仅 Citrix ADC 设备执行 TCP 连接终止的服务支持该功能。它不支持其他服务,例如 “任何”。

代理协议如何在 Citrix ADC 设备中工作

以下流程图显示了如何跨 Citrix ADC 设备配置用于插入、转发和剥离操作的代理协议:

插入操作

插入操作

组件的交互方式如下:

  • 在 Citrix ADC 实例中,您必须在网络配置文件中启用代理协议并将其绑定到服务。
  • 在插入操作中,Citrix ADC 会添加包含客户端连接详细信息的代理标头,然后将其转发到后端服务器。
  • 在发送端,设备根据 CLI 配置决定代理协议版本。

向前操作

向前操作

组件的交互方式如下:

  • 客户端向 Citrix ADC 发送请求以及代理标头。设备会动态识别版本。
  • 在 Citrix ADC 设备中,它是向前操作。代理协议在负载平衡虚拟服务器或内容交换虚拟服务器上启用,并在服务上启用。设备接收代理标头并将标头详细信息转发给后端服务器。
  • 如果代理标头详细信息格式无效,设备将重置连接。
  • 在发送端,设备根据 CLI 配置决定代理协议版本。

剥离操作

剥离操作

组件的交互方式如下:

  • 客户端向 Citrix ADC 设备发送请求以及代理标头。
  • 在 Citrix ADC 设备中,如果是剥离操作,设备将转发从代理协议获取的客户端信息,并使用重写策略表达式将其插入 HTTP 标头中。
  • 使用重写策略表达式将客户端详细信息(例如源 IP 地址、目标 IP 地址、源端口和目标端口)添加到 HTTP 标头中。重写策略会评估表达式,如果为 “true”,则触发相应的重写策略操作。客户端详细信息将以 HTTP 标头的形式转发到后端服务器。
  • 如果代理标头详细信息格式无效,设备将重置连接。

代理协议版本格式

Proxy 协议版本有两种格式。设备决定使用基于传入数据长度的格式。有关详细信息,请参阅 代理协议 RFP。

  1. 代理协议版本 1 格式

    PROXY TCP4/TCP6/UNKNOWN <SRC IP> <DST IP> <SRC PORT> <DST PORT>

    • PROXY-> Proxy 标头版本 -1 的唯一字符串格式。
    • 支持基于 IPv4 的 TCP 协议和基于 IPv6 的 TCP 协议。对于其余的协议,这是 UNKNOWN。
    • SRC IP — 数据包的源 IP(原始客户端 IP)地址。
    • DST IP — 数据包的目的地 IP 地址。
    • SRC 端口 — 数据包的源端口。
    • DST 端口 — 数据包的目的端口。
  2. 代理协议版本 2 格式

    0D 0A 0D 0A 00 0D 0A 51 55 49 54 0A <13th byte> <14th byte> <15-16th byte> <17th byte onwards>

    • D 0A 0D 0A 00 0D 0A 51 55 49 54 0A-> 代理标头版本 -2 的唯一二进制字符串。
    • 支持基于 IPv4 的 TCP 协议和基于 IPv6 的 TCP 协议。对于其余的协议,这是 UNKNOWN。
    • 第十三个字节 — 协议版本和命令。
    • 第十四个字节 — 地址和协议系列。
    • 15-16 字节 — 按网络顺序表示的地址长度。
    • 从第十七个字节开始 — 网络顺序中存在的地址信息-src IP、dst IP、src 端口、dst 端口。

在 Citrix ADC 设备中配置代理协议

完成以下步骤以在 Citrix ADC 设备中配置代理协议。

  1. 将代理协议启用为全局协议。
  2. 为插入操作配置代理协议
  3. 为 Forward 操作配置代理协议
  4. 为 Strip 操作配置代理协议
  5. 配置无操作的代理协议

将代理协议启用为全局协议

在命令提示符处,键入以下内容:

set ns param –proxyProtocol ENABLED

为插入操作配置代理协议

要为插入操作配置代理协议,必须在负载平衡虚拟服务器上启用或禁用该协议,然后在服务上启用该协议。

添加禁用代理协议的网络配置文件以实现负载平衡虚拟

在命令提示符处,键入以下内容:

add netprofile <name> -proxyProtocol ENABLED/DISABLED> -proxyprotocoltxversion <V1/V2>

示例:

Add netprofile proxyprofile-1 –proxyProtocol ENABLED –proxyprotocoltxversion V1

注意:

如果在设备上禁用代理协议,则无需设置协议版本参数。

添加启用服务的代理协议的网络配置文件

在命令提示符处,键入以下内容:

add netprofile <name> -proxyProtocol ENABLED/DISABLED> -proxyprotocoltxversion <V1/V2>

示例:

add netprofile proxyprofile-2 –proxyProtocol ENABLED –proxyprotocoltxversion V1

在代理层中为 Citrix ADC 设备添加负载平衡虚拟服务器

在命令提示符处,键入以下内容:

add lb vserver <name>@ <serviceType> [(<IPAddress>@ <port>)]

示例:

add lb vserver lbvserver-1 http 1.1.1.1 80

在代理层中为 Citrix ADC 设备添加 HTTP 服务

在命令提示符处,键入以下内容:

add service <name>@ (<IP>@ | <serverName>@) <serviceType> <port>

示例:

Add service http-service-1 2.2.2.1 http 80

在 Citrix ADC 设备中使用负载平衡虚拟服务器设置净配置文件

在命令提示符处,键入以下内容:

set lb vserver <vserver name> -netprofile <name>

示例:

set lb vserver lbvserver-1 –netprofile proxyProfile-1

在 Citrix ADC 设备中使用 HTTP 服务设置网络配置文件

在命令提示符处,键入以下内容:

set service <service name> –netprofile <name>

示例:

set service http-service-1 –netprofile proxyProfile-1

为转发操作配置代理协议

为代理层中的下一个 Citrix ADC 实例配置用于转发操作的代理协议。您必须启用或禁用该协议并绑定到虚拟服务器或服务。

添加启用了代理协议的网络配置文件,以实现负载平衡

在命令提示符处,键入以下内容:

add netprofile <name> -proxyProtocol ENABLED/DISABLED> -proxyprotocoltxversion <V1/V2>

示例:

add netprofile proxyprofile-3 –proxyProtocol ENABLED –proxyprotocoltxversion V1

添加启用服务的代理协议的网络配置文件

在命令提示符处,键入以下内容:

add netprofile <name> -proxyProtocol ENABLED/DISABLED> -proxyprotocoltxversion <V1/V2>

示例:

add netprofile proxyprofile-4 –proxyProtocol ENABLED –proxyprotocoltxversion V1

在代理层中为 Citrix ADC 设备添加负载平衡虚拟服务器

在命令提示符处,键入以下内容:

add lb vserver <name>@ <serviceType> [(<IPAddress>@ <port>)]

示例:

add lb vserver lbvserver-2 http 2.2.2.2 80

在代理层中为 Citrix ADC 设备添加 HTTP 服务

在命令提示符处,键入以下内容:

add service <name>@ (<IP>@ | <serverName>@) <serviceType> <port>

示例:

Add service http-service-2 3.3.3.1 http 80

在 Citrix ADC 设备中使用负载平衡虚拟服务器设置净配置文件

在命令提示符处,键入以下内容:

set lb vserver <vserver name> -netprofile <name>

示例:

set lb vserver lbvserver-2 –netprofile proxyProfile-3

在 Citrix ADC 设备中使用 HTTP 服务设置网络配置文件

在命令提示符处,键入以下内容:

set service <service name> –netprofile <name>

示例:

set service http-service-2 –netprofile proxyProfile-4

为剥离操作配置代理协议

要为剥离操作配置代理协议,必须在负载平衡虚拟服务器上启用代理协议,然后在服务上禁用代理协议。

添加虚拟服务器启用代理协议的网络配置文件

在命令提示符处,键入以下内容:

add netprofile <name> -proxyProtocol ENABLED> -proxyprotocoltxversion <V1/V2>

示例:

add netprofile proxyprofile-5 –proxyProtocol ENABLED –proxyprotocoltxversion V1

在代理层中为 Citrix ADC 设备添加负载平衡或内容交换虚拟服务器

在命令提示符处,键入以下内容:

add lb vserver <name>@ <serviceType> [(<IPAddress>@ <port>)]

示例:

add lb vserver lbvserver-3 http 2.2.2.2 80

在代理层中为 Citrix ADC 设备添加 HTTP 服务

在命令提示符处,键入以下内容:

add service <name>@ (<IP>@ | <serverName>@) <serviceType> <port>

示例:

Add service http-service-3 3.3.3.1 http 80

在 Citrix ADC 设备中使用负载平衡或内容交换虚拟服务器设置网络配置文件

在命令提示符处,键入以下内容:

set lb vserver <vserver name> -netprofile <name>

示例: set lb vserver lbvserver-3 –netprofile proxyProfile-5

使用 Citrix ADC GUI 配置代理协议

  1. 导航到 系统 > 设置 > 更改全局系统设置
  2. 在 “ 配置全局系统设置参数 ” 页中,选中 “ 代理协议 ” 复选框。
  3. 单击确定,然后关闭

    “代理协议” 页

  4. 导航到 系统 > 网络 > 网络配置文件
  5. 在详细信息窗格中,单击 添加 为负载平衡虚拟服务器创建网络配置文件。
  6. 在 “ 网络配置文件 ” 页中,设置以下参数:
    1. 名称。网络配置文件的名称。
    2. 代理协议。为负载平衡虚拟服务器启用或禁用代理协议。
    3. 代理协议 TX 版本。根据传入的数据格式将代理协议版本设置为 V1 或 V2。
  7. 单击确定

    本地化后的图片

  8. 导航到流量管理 > 负载平衡 > 虚拟服务器
  9. 在详细信息窗格中,单击添加
  10. 负载平衡虚拟服务器 页面中,设置基本参数。
  11. 在 “ 高级设置 ” 部分中,选择 配置文件
  12. 配置文件 部分中,单击铅笔图标。
  13. 选择网络配置文件,然后单击 确定
  14. 单击完成

    本地化后的图片

  15. 导航到 流量管理 > 负载平衡 > 服务
  16. 在详细信息窗格中,单击添加
  17. 负载平衡服务 页面中,设置基本参数。
  18. 在 “ 高级设置 ” 部分中,选择 配置文件
  19. 配置文件 部分中,单击铅笔图标。
  20. 选择网络配置文件,然后单击 确定
  21. 单击完成

注意:

如果您有多个 Citrix ADC 设备作为代理层的一部分,则必须在每个设备上为 Forward 操作设置代理协议配置。

代理协议配置