ADC

代理协议

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

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

以下是三种操作模式:

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

下表为您提供有关不同代理协议模式下的 LB 虚拟服务器和服务状态的信息:

代理协议模式 LB 虚拟服务器 服务
Insert 已禁用 已启用
转发 已启用 已启用
已剥离 已启用 已禁用

限制

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. 为转发操作配置代理协议
  4. 为剥离操作配置代理协议
  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. 单击 Done(完成)。
  15. 导航到 流量管理 > 负载平衡 > 服
  16. 在详细信息窗格中,单击“添加”。
  17. 负载平衡服务 页面中,设置基本参数。
  18. 在“高级设置”部分中,选择 配置文件
  19. 配置文件 部分中,单击铅笔图标。
  20. 选择网络配置文件,然后单击 确定
  21. 单击 Done(完成)。

注意:

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

代理协议