Citrix ADC

配置重写操作

警告

重写操作中的特征码功能已从 Citrix ADC 12.0 版本 56.20 版本中弃用,作为替代方法,Citrix 建议您使用“搜索重写操作”参数。

启用重写功能后,您需要配置一个或多个操作,除非内置的重写操作足够。所有内置操作的名称以字符串 ns_cvpn 开头,后跟一串字母和下划线字符。内置操作可执行有用且复杂的任务,例如解码无客户端 VPN 请求或响应的部分或修改 JavaScript 或 XML 数据。可以查看、启用和禁用内置操作,但不能修改或删除。

TCP 重写操作中的目标表达式必须以以下表达式之一开头:

  • CLIENT.TCP.PAYLOAD。用于在客户端请求中重写 TCP 负载。例如,CLIENT.TCP.PAYLOAD(10000).AFTER_STR(“string1”)。
  • SERVER.TCP.PAYLOAD。用于在服务器响应中重写 TCP 负载。例如,SERVER.TCP.PAYLOAD(1000).B64DECODE.BETWEEN(“string1”,”string2”)。

您可以使用带有这些前缀的所有类型的现有字符串操作函数来标识要重写的字符串。要配置重写操作,需要为其分配名称、指定操作类型并添加一个或多个指定其他数据的参数。下表描述了操作类型以及与它们一起使用的参数。

注意:

只能用于 HTTP 重写的操作类型在重写操作类型列中标识。

请参阅 重写操作类型 pdf 了解更多信息。

使用命令行界面创建新的重写操作

在命令提示符下,键入以下命令以创建新的重写操作并验证配置:

  • add rewrite action <name> <type> <target> [<stringBuilderExpr>] [(-pattern <expression> | -patset <string>)] [-bypassSafetyCheck (YES|NO)]
  • show rewrite action <name>

示例 1. 使用客户端 IP 插入 HTTP 标头

> add rewrite action insertact INSERT_HTTP_HEADER "client-IP" CLIENT.IP.SRC
Done

> show rewrite action insertact

        Name: insertact
        Operation: insert_http_header   Target:Client-IP
        Value:CLIENT.IP.SRC
        BypassSafetyCheck : NO
        Hits: 0
        Undef Hits: 0
        Action Reference Count: 0
 Done

示例 2. 替换 TCP 负载中的字符串(TCP 重写)

> add rewrite action client_tcp_payload_replace_all REPLACE_ALL
  'client.tcp.payload(1000)' '"new-string"' -search text("old-string")
 Done
> show rewrite action client_tcp_payload_replace_all

        Name: client_tcp_payload_replace_all
        Operation: replace_all
        Target:client.tcp.payload(1000)
        Value:"new-string"
        Search: text("old-string")
        BypassSafetyCheck : NO
        Hits: 0
        Undef Hits: 0
        Action Reference Count: 0
 Done
>

使用命令行界面修改现有重写操作

在命令提示符下,键入以下命令以修改现有重写操作并验证配置:

  • set rewrite action <name> [-target <string>] [-stringBuilderExpr <string>] [(-pattern <expression> | -patset <string>)] [-bypassSafetyCheck (YES|NO)]
  • show rewrite action <name>

示例


> set rewrite action insertact -target "Client-IP"
 Done
> show rewrite action insertact

        Name: insertact
        Operation: insert_http_header   Target:Client-IP
        Value:CLIENT.IP.SRC
        BypassSafetyCheck : NO
        Hits: 0
        Undef Hits: 0
        Action Reference Count: 0
 Done

使用命令行界面删除重写操作

在命令提示符下,键入以下命令以删除重写操作:

rm rewrite action <name>

示例


> rm rewrite action insertact
Done

使用配置实用程序配置重写操作

  1. 导航至AppExpert”>“重写”>“操作”
  2. 在详细信息窗格中,执行以下操作之一:
    • 要创建新操作,请单击添加
    • 要修改现有操作,请选择该操作,然后单击打开
  3. 单击创建确定。状态栏中将显示一条消息,指出操作已成功配置。
  4. 重复步骤 2 到 4,以创建或修改任意数量的重写操作。
  5. 单击关闭

使用“添加表达式”对话框 添加表达式

  1. 创建重写操 作”或配置重写操 作”对话框中,在要输入的类型参数的文本区域下,单击添加
  2. 添加表达式对话框的第一个列表框中,选择表达式的第一个术语。

    • HTTP。HTTP 协议。如果要检查与 HTTP 协议相关的请求的某些方面,请选择此选项。
    • SYS。受保护的网站。如果要检查与请求收件人有关的请求的某些方面,请选择此选项。
    • CLIENT。发送请求的计算机。如果您想检查请求发件人的某些方面,请选择此选项。

当您做出选择时,最右侧的列表框会列出表达式下一部分的相应术语。

  1. 在第二个列表框中,选择表达式的第二个术语。这些选择取决于您在上一步中所做的选择,并且适合上下文。第二个选择后,“构造表达式”窗口下方的“帮助”窗口(该窗口为空)显示了描述刚刚选择的术语的用途和用法的帮助。

  2. 继续从上一列表框右侧显示的列表框中选择术语,或者在出现提示您输入值的文本框中键入字符串或数字,直到表达式完成。有 关 PI 表达式语言和为响应程序策略创建表达式的更多信息,请参阅 “策略和表达式。“

如果要测试在示例 HTTP 数据上使用重写操作的效果,则可以使用“重写表达式评估器”。

注意:

重写表达式赋值器仅在配置实用程序中可用。没有 Citrix ADC 命令行版本。

使用“重写操作赋值器”对话框评估重写操作

  1. 重写操作详细信息窗格中,选择要评估的重写操作,然后单击评估
  2. 在“重写表达式赋值器”对话框中,为以下参数指定值。(星号表示必填参数。)

    重写操作-如果尚未选择要评估的重写操作,请从下拉列表中选择该操作。选择重写操作后,“详细信息”部分将显示所选重写操作的详细信息。 新建 — 选择新建以打开“创建重写操作”对话框并创建新的重写操作。 修改-选择修改以打开“配置重写操作”对话框并修改选定的重写操作。 流类型-指定是使用 HTTP 请求数据还是 HTTP 响应数据测试选定的重写操作。默认值为“请求”。如果要使用响应数据进行测试,请选择响应。 HTTP 请求/响应数据*— 为您提供一个空间,用于提供重写操作评估器将用于测试的 HTTP 数据。您可以直接将数据粘贴到窗口中,或单击样本插入一些示例 HTTP 标头。 显示行结束-指定是否在每行示例 HTTP 数据的末尾显示 UNIX 样式的行结束字符 (n)。 示例-将示例 HTTP 数据插入到 HTTP 请求/响应数据窗口中。您可以选择 GET 或 POST 数据。 浏览-打开本地浏览窗口,以便您可以从本地或网络位置选择包含示例 HTTP 数据的文件。 清除-从 HTTP 请求/响应数据窗口中清除当前示例 HTTP 数据。

  3. 单击评估。重写操作赋值器评估“重写操作”对您选择的示例数据的影响,并在“结果”窗口中显示由所选重写操作修改的结果。如对话框左下角的图例中所示,添加和删除将突出显示。
  4. 继续评估重写操作,直到您确定所有操作都具有所需的效果。

    • 您可以修改选定的重写操作并测试修改的版本,方法是单击修改以打开配置重写操作对话框,进行并保存更改,然后再次单击“评估”。
    • 您可以使用相同的请求或响应数据评估不同的重写操作,方法是从重写操作下拉列表中选择该操作,然后再次单击评估
  5. 单击关闭以关闭“ 重写表达式赋值器,然后返回“ 重写操作窗格。

  6. 要删除重写操作,请选择要删除的重写操作,然后单击“ 删除,并在出现提示时通过单击确定确认您的选择。