代理协议

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

  • 学习原始客户端 IP 地址
  • 为网站选择语言
  • 将所选 IP 地址列入黑名单
  • 记录和收集统计数据。

以下是三种操作模式:

  • 插入。设备插入客户端详细信息并将其发送到后端服务器。
  • 转发。设备将客户端详细信息转发到后端服务器。
  • 已移除。设备存储客户端详细信息以用于日志记录。此外,如果后端服务器不支持代理协议,则使用重写策略配置将客户端详细信息发送到服务器

限制

TFO、多路径 TCP 和 HTTP2 功能不支持代理协议功能。

代理协议在 Citrix ADC 设备中的工作原理

以下流程图显示如何在 Citrix ADC 设备之间配置代理协议以执行插入、转发和剥离操作:

插入操作

插入操作

组件交互如下所示:

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

转发操作

转发操作

组件交互如下所示:

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

剥离操作

剥离操作

组件交互如下所示:

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

代理协议版本格式

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

  1. 代理协议版本 1 格式

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

    • 代理-> 代理标头版本-1 的唯一字符串格式。
    • 支持通过 IPv4 和通过 IPv6 通过 TCP 的协议。对于其余协议,这是未知的。
    • 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 和通过 IPv6 通过 TCP 的协议。对于其余协议,这是未知的。
    • 第 13 字节 - 协议版本和命令。
    • 第 14 字节 - 地址和协议系列。
    • 第 15-16 字节 - 网络顺序中的地址长度。
    • 第 17 字节起 - 网络秩序中存在的地址信息 - src IP、dst IP、src port、dst port。

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

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

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

将代理协议启用为全局

在命令提示窗口中,键入以下内容:

set ns param –proxyProtocol ENABLED

为插入操作配置代理协议

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

添加用于负载平衡虚拟服务器的代理协议禁用的网络配置文件

在命令提示窗口中,键入以下内容:

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

示例:

Add netprofile proxyprofile-1 –proxyProtocol DISABLED –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 设备 1 中使用 HTTP 服务绑定网络配置文件

在命令提示窗口中,键入以下内容:

bind service <service name> –netprofile <name>

示例:

bind 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 设备中使用 HTTP 服务设置网络配置文件

在命令提示窗口中,键入以下内容:

set service <service name> –netprofile <name>

示例:

set service http-service-3 –netprofile proxyProfile-6

添加重写操作以将 HTTP 标头转发到后端服务器

在命令提示窗口中,键入以下内容:

add rewrite action <name> <type> <target> [<stringBuilderExpr>] [-pattern <expression> | -search <expression>] [-refineSearch <expression>] [-comment <string>]

添加重写策略以将 HTTP 标头转发到后端服务器

在命令提示窗口中,键入以下内容:

add rewrite policy <name> <rule> <action> [<undefAction>] [-comment <string>] [-logAction <string>]

绑定重写策略全局或虚拟服务器

在命令提示窗口中,键入以下内容:

bind rewrite global <policyName> <priority> [<gotoPriorityExpression>] [-type <type>] [-invoke (<labelType> <labelName>) ]

示例:

add rewrite action insert_client_ip_act  insert_http_header X-client-IP CLIENT.PROXY.SRCIP_STR
add rewrite policy insert_client_ip_pol true insert_client_ip_act
bind rewrite global insert_client_ip_pol 90 END -type REQ_OVERRIDE
add rewrite action insert_destination_ip_act insert_http_header X-destination-IP CLIENT.PROXY.DSTIP_STR
add rewrite policy insert_destination_ip_pol true insert_destination_ip_act
bind rewrite global insert_destination_ip_pol 90 END -type REQ_OVERRIDE
add rewrite action insert_source_port_act insert_http_header X-source-port CLIENT.PROXY.SRCPORT
add rewrite policy insert_ source_port \_pol true insert_source_port_act
bind rewrite global insert\_ source_port _pol 90 END -type REQ_OVERRIDE

add rewrite action insert_destination_port_act insert_http_header X-destination-port CLIENT.PROXY.DSTPORT
add rewrite policy insert_destination_port _pol true insert_destination_port_act
bind rewrite global insert_destination_port _pol 90 END -type REQ_OVERRIDE

使用 Citrix ADC GUI 配置代理协议

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

    代理协议页面

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

    本地化后的图片

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

    本地化后的图片

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

注意:

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

代理协议配置