ADC

配置数据集

要配置数据集,必须指定作为模式提供服务的字符串,分配类型(数字、IPv4 地址或 IPv6 地址)并配置数据集范围。您可以手动为模式分配唯一的索引值,也可以允许自动分配索引值。数据集与 HTTP 或任何 7 层协议无关。它只适用于文本或字符串。有不同类型的数据集,例如 NUM、ULONG、IPv4、IPv6、MAC、DOUBLE。您可以选择一个类型,然后根据指定的类型定义数据集范围。

注意:

策略数据集区分大小写(除非您指定要忽略大小写的表达式)。因此,例如 MAC 地址 ff:ff:ff:ff:ff:ff 与 MAC 地址 FF:FF:FF:FF:FF:FF 不同。

应用于数据集的索引值的规则与模式集类似。有关索引值的信息,请参阅 配置模式集

从 NetScaler 版本 14.1-12.x 开始,除了使用静态字符串外,您还可以使用表达式将数据集与策略绑定。数据集名称是从表达式中动态派生的,因此减少了必须为多个数据集创建的策略的数量。通过创建动态数据集,可以避免重复配置。

示例:在 NetScaler 14.1-12.x 版本之前的版本中,如果有四个数据集,则必须创建四个策略来绑定这四个数据集。从 NetScaler 14.1-12.x 版本起,您可以使用表达式代替数据集名称来绑定策略。作为表达式求值的一部分,对所有四个数据集进行评估并派生出数据集名称。因此,使用表达式将所有四个数据集绑定到一个策略。

动态数据集的表达式评估过程与模式集的表达式评估过程类似。有关表达式评估的更多信息,请参阅 配置模式集

配置数据集

要配置数据集,请完成以下步骤:

  1. 添加策略数据集
  2. 将模式绑定到策略数据集
  3. 添加策略表达式
  4. 验证策略配置

添加策略数据集

在命令提示窗口中执行以下操作:

add policy dataset <name> <type>

示例:

add policy dataset ds1 ipv4 -comment numbers

将模式绑定到数据集

在命令提示符下,键入:

bind policy dataset <name> <value> [-index <positive_integer>] [-endRange <string>] [-comment <string>]

示例:

bind policy dataset ds1 1.1.1.1 -endRange 1.1.1.10 -comment short description about the pattern bound to the data set

注意:

您必须对要绑定到数据集的所有模式重复此步骤。一个数据集最多只能绑定 5000 个模式。

而且,数据集范围不得与绑定到数据集的其他范围重叠,也不能包含绑定到该数据集的单个值。如果绑定具有重叠范围的数据集会导致错误。

示例:

add policy dataset ip_set ipv4
 Done
bind policy dataset ip_set 2.2.2.25
 Done
bind policy dataset ip_set 2.2.2.20 -endRange 2.2.2.30
ERROR: The range overlaps an existing range or includes a value bound to the dataset.
<!--NeedCopy-->

对于绑定到数据集的范围,如果值等于绑定到数据集的单个值,或者介于较低值和上限值之间(较低值 <= value && value <-上值),则该值被视为位于数据集中。

在策略数据集中使用策略表达式

在命令提示符下,键入:

add policy expression exp1 http.req.body(100).contains_any("ds1")

其中, 表达式检查 HTTP 请求正文的前 100 个字节中是否存在绑定到数据集 ds1 的任何模式(或范围内的模式)。

验证数据集配置

在命令提示符下,键入:

show policy dataset ds1

示例:

> show policy dataset ds1
       Dataset:        ds1
        Type:   IPV4
1)      Bound Dataset Range from: 1.1.1.1       through: 1.1.1.10       Index:  1
<!--NeedCopy-->

配置动态数据集

使用 CLI 配置动态数据集

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

  1. 创建数据集。

    add policy dataset <name> - dynamic yes

    示例:

    add policy dataset CompA_data -dynamic yes
    add policy dataset CompB_data -dynamic yes
    <!--NeedCopy-->
    
  2. 将数据集绑定到策略。

    bind policy dataset <name> <string>

    示例:

    bind policy dataset CompA_data stringA
    bind policy patset CompB_data string B
    <!--NeedCopy-->
    
  3. 添加策略并使用表达式代替数据集名称。

    add responder policy <name> <rule> <action>

    示例:

    add responder policy samplepolicy1 http.req.hostname.contains_any("Comp" + http.req.url.path.get(1) + "_pat") reset
    <!--NeedCopy-->
    
  4. 验证配置。

    > show dataset -dynamicOnly

    示例:

    > show dataset -dynamicOnly
    1) Dataset: CompA_data
    2) Dataset: CompB_data
    Done
    <!--NeedCopy-->
    

使用 GUI 配置动态数据集

  1. 导航到 AppExpert > 数据集
  2. 单击“添加”打开“创建数据组”对话框。
  3. 名称文本框中指定数据集的名称。
  4. 单击“插入”,然后在“数据”字段中指定一个值。1. (可选)指定索引。索引是用户分配的值,介于 1 到 4294967290 之间。
  5. 验证您输入的字符是否正确,然后单击“插入”。
  6. 重复步骤 4 和 5 以添加更多值。
  7. 选中“动态”复选框,然后单击“创建”。
  8. 导航到 AppExpert > 响应程序 > 策略 > 添加
  9. 创建可以派生数据集的表达式。
  10. 在其他必填字段中添加详细信息,然后单击“创建”。

设置、取消设置或移除动态数据集

要将数据集设置为动态,请执行以下操作:

> set dataset <name> -dynamic yes

示例:

> set dataset CompA_data -dynamic yes

要取消将数据集设置为动态数据集,请执行以下操作:

> unset dataset <name> -dynamic

示例:

> unset dataset CompA_data -dynamic
Warning: [Dynamic attribute turned off. Expressions using this patset or dataset dynamically will not work.]
 Done
<!--NeedCopy-->

要移除动态模式集,请执行以下操作:

> rm dataset <name>

示例:

> rm dataset CompA_pat
Warning: [Dynamic patset or dataset removed. Expressions using this patset or dataset dynamically will not work.]
 Done
<!--NeedCopy-->

注意:

取消设置或移除动态数据集时,使用该数据集的表达式不起作用。

使用配置实用程序配置数据集

按照下面给出的步骤配置策略数据集:

  1. 导航到 AppExpert > 数据集
  2. 在详细信息窗格的“数据集”下,单击“添加”。
  3. 在“配置数据集”页面中,设置以下参数。

    1. 名称。策略数据集的名称。
    2. 类型。要绑定到数据集的值的类型。

    配置数据集

  4. 单击 插入 绑定特定类型的数据集值。
    1. 值。与数据集关联的指定类型的值。
    2. 索引。数据集的索引值。
    3. 结束范围。数据集条目。这个范围 <value><end_range>
    4. 评论。关于数据集的简短描述。

    数据集绑定

  5. 单击“插入关闭”。
  6. 输入注释。
  7. 单击创建关闭

策略数据集的 IPv4 和 IPv6 地址中的 CIDR 子网表示法

IPv4 和 IPv6 地址的策略数据集允许绑定值是使用 CIDR 表示法的子网。CIDR 表示法指定子网的地址和范围。CIDR 表示法 <address>/<n>,其中 <address> 是子网中的第一个地址, <n> 是一个整数,用于指定子网掩码中设置的最左侧位数,它定义了子网的范围。

例如,192.128.0.0/10 表示从地址 192.129.0.0 开始的 IPv4 子网,掩码为 0xFFC0000 (255.192.0.0)。

示例:

add policy dataset ds1 ipv4
bind policy dataset ds1 192.128.0.0/10
show policy dataset ds1
    Dataset: ds1
    Type: IPV4
Bound Dataset Value: 192.128.0.0/10 Index: 1 Comment: Subnet range from 192.128.0.0 through 192.191.255.255
<!--NeedCopy-->

在表达式中使用此数据集的示例:

add responder policy resp_ipv4_pol client.ip.src.typecast_text_t.equals_any("ds1") drop
<!--NeedCopy-->

IPv6子网的示例:

IPv6 子网的一个示例是 2001:db8:123::/56,它从地址 2001:db8:123:: 开始,带掩码 FFFF:FFFF:FFFF:FF00::。

add policy dataset ds2 ipv6
bind policy dataset ds2 2001:db8:123::/56
show policy dataset ds2
    Dataset: ds2
    Type: IPV61
Bound Dataset Value: 2001:db8:123::/56 Index: 1 Comment: Subnet range from 2001:db8:123:: through 2001:db8:123:ff:ffff:ffff:ffff:ffff
<!--NeedCopy-->

子网的起始地址将由子网掩码掩码所屏蔽的指定地址决定。如果指定的地址与生成的起始地址不匹配,则会发出警告。

示例:

bind policy dataset ds1 192.168.0.0/10
Warning: Starting subnet address masked using subnet mask to create new starting address [192.128.0.0]
show policy dataset ds1
    Dataset: ds1
    Type: IPV4
Bound Dataset Value:192.168.0.0/10 Index: 1 Comment: Subnet range from 192.128.0.0 through 192.191.255.255
<!--NeedCopy-->

在表达式中使用此数据集的示例:

add responder policy resp_ipv6_pol client.ipv6.src.typecast_text_t.equals_any("ds2") drop
<!--NeedCopy-->
配置数据集