Citrix ADC

设置位置限定符

用于实现静态邻近的数据库具有 GSLB 站点的位置。每个位置都有一个 IP 地址范围,该范围最多有六个限定词。限定符是文字字符串,在运行时按规定的顺序进行比较。每个地点必须至少有一个限定符。限定词标签定义用户定义的限定词(上下文)的含义。Citrix ADC 有两个内置上下文:

地理上下文,具有以下限定词标签:

  • 预选赛 1 — “大陆”
  • 预选赛 2 — “国家”
  • 预选赛 3 — “状态”
  • 预选赛 4 — “城市”
  • 预选赛 5 — “ISP”
  • 预选赛 6 — “组织”

自定义条目,具有以下限定符标签:

  • 预选赛 1 — “预选赛 1”
  • 预选赛 2 — “预选赛 2”
  • 预选赛 3 — “预选赛 3”
  • 预选赛 4 — “预选赛 4”
  • 预选赛 5 — “预选赛 5”
  • 预选赛 6 — “预选赛 6”

如果地理上下文设置为没有大陆限定符,则大陆是从国家/地区派生的。即使是内置的限定符标签也基于上下文,并且可以更改标签。这些限定符标签指定使用 IP 地址映射的位置,用于做出静态邻近决策。

为了执行基于邻近度的静态决策,Citrix ADC 设备将从本地 DNS 服务器解析程序的 IP 地址派生的位置属性(限定符)与参与站点的位置属性进行比较。如果只有一个站点匹配,则设备将返回该站点的 IP 地址。如果存在多个匹配项,则所选站点是在匹配的 GSLB 站点上进行轮询的结果。如果没有匹配项,则选定的站点是在所有已配置站点上进行轮询的结果。没有任何限定符的网站被视为匹配项。

基于位置的策略表达式的 GEO 规则允许您检查通配符匹配。此功能检查通配符限定符是否与任何其他限定符(包括非通配符)匹配。通配符匹配是通过使用添加到 set locationParameter 命令的 matchWildcardtoany 属性来完成的。

matchWildcardtoany 属性可以设置为以下值:

  • 是: 通配符限定符与任何其他限定符匹配。
  • 否: 通配符限定符与非通配符限定符不匹配,但匹配其他通配符限定符。默认选项为 “ ”。
  • 表达式:表达式 中的通配符限定符与 LDNS 位置中的任何限定符匹配,但是 LDNS 位置中的通配符限定符与表达式中的非通配符限定符不匹配。

示例:

add dns policy1 "CLIENT.IP.SRC.MATCHES_LOCATION("Continent.country \*.\*.\*.\* \“)” <action>
<!--NeedCopy-->

使用 CLI 设置位置参数

在命令提示符下,键入:

set locationparameter -context <context> -q1label <string> [-q2label <string>] [-q3label <string>] [-q4label <string>] [-q5label <string>] [-q6label <string>] -matchWildcardtoany [Yes | No | Expression]
<!--NeedCopy-->

示例:

set locationparameter -context custom -q1label asia -matchWildcardtoany Yes
<!--NeedCopy-->

使用 GUI 设置位置参数

  1. 导航到 流量管理 > GSLB > 数据库和条目
  2. 设置下,单击 更改位置参数
  3. 配置位置参数 页面中,设置位置参数。

配置示例(使用 CLI)

请考虑以下网络设置:

  • GSLB 虚拟服务器名称:gv1
  • GSLB 虚拟服务器 IP 地址:1.1.1.2
  • GSLB 服务:gsvc1 bound to gv1
  • 位置数据库文件名:sample.csv
  • 地理位置限定词: 配置限定词 1 和 2。Rest 设置为与通配符匹配。
    • 限定词 1—亚洲
    • 限定词 2—IR
    • 限定词 3-*
    • 限定词 4-*
    • 限定词 5-*
    • 限定词 6-*
  • DNS 策略策略 pol1 设置为在存在匹配项时丢弃数据包。

设置位置参数并按如下方式配置 DNS 策略:

set locationParameter -q2label Country_Code -q3label Subdivision_1_Name -q4label Subdivision_2_Name -q5label City

add locationFile "/var/netscaler/inbuilt_db/sample.csv"

add gslb vserver gv1 HTTP -backupLBMethod ROUNDROBIN -tolerance 0

add dns policy pol1 "CLIENT.IP.SRC.MATCHES_LOCATION("Asia.IR.\*.\*.\*.\*")||CLIENT.IP.SRC.MATCHES_LOCATION("Asia.SY.\*.\*.\*.\*")||CLIENT.IP.SRC.MATCHES_LOCATION("Asia.SD.\*.\*.\*.\*")||CLIENT.IP.SRC.MATCHES_LOCATION("Asia.KP.\*.\*.\*.\*")||CLIENT.IP.SRC.MATCHES_LOCATION("North America.CU.\*.\*.\*.\*")||CLIENT.IP.SRC.MATCHES_LOCATION("Europe.UA.Crimea.\*.\*.\*.\*")" dns_default_act_Drop

bind dns global pol1 1 -gotoPriorityExpression 65535 -type REQ_DEFAULT

add gslb service gsvc1 1.1.1.2 HTTP 80 -publicIP 1.1.1.2 -publicPort 80 -maxClient 0 -healthMonitor NO -siteName s1 -cltTimeout 180 -svrTimeout 360 -downStateFlush ENABLED

bind gslb vserver gv1 -serviceName gsvc1

bind gslb vserver gv1 -domainName www.gslbnew.com -TTL 5
<!--NeedCopy-->

在位置数据库文件中添加以下客户端条目。在此示例中,位置数据库文件名为 sample.csv:

10.106.24.170,10.106.24.190,,,,,,,8.0000,47.0000

10.102.82.170,10.102.82.190,Asia,,,,,,-73.9924,40.7553

10.106.24.140,10.106.24.150,,IR,,,,,51.4231,35.6961
<!--NeedCopy-->

根据前面的配置,10.106.24.170 和 10.106.24.190 之间的客户端没有定义任何通配符限定词。介于 10.106.24.140 和 10.106.24.150 之间的客户将限定词 2 作为 IR。

将 match 通配符限定词设置为 NO:

set locationparameter -matchWildcardtoany no
<!--NeedCopy-->

当 match 通配符限定词设置为 NO 时,通配符限定词仅匹配定义的通配符限定词。它不匹配任何其他非通配符限定词。

  • 10.106.24.147 即将推出的 DNS 查询与定义的通配符限定词(限定词 2 = IR)匹配。因此,DNS 策略生效并删除查询。

    在 10.106.24.147 客户端上运行该 dig @10.102.82.13 www.gslbnew.com 命令时,输出显示服务器无法访问。

     root@ns#  dig @10.102.82.13 www.gslbnew.com
    
     ; <<>> DiG 9.11.23 <<>> @10.102.82.13 www.gslbnew.com
     ; (1 server found)
     ;; global options: +cmd
     ;; connection timed out; no servers could be reached
     <!--NeedCopy-->
    
  • 来自 10.106.24.180 的 DNS 查询与定义的限定词不匹配。DNS 策略未生效,查询将得到处理。

    在 10.106.24.180 客户端上运行 dig @10.102.82.13 www.gslbnew.com 命令。输出显示 GSLB 虚拟服务器的 IP 地址。

     root@ns# dig @10.102.82.13 www.gslbnew.com
    
     ; <<>> DiG 9.11.23 <<>> @10.102.82.13 www.gslbnew.com
     ; (1 server found)
     ;; global options: +cmd
     ;; Got answer:
     ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64265
     ;; flags: qr aa rd ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
     ;; WARNING: recursion requested but not available
    
     ;; OPT PSEUDOSECTION:
     ; EDNS: version: 0, flags:; udp: 1280
     ;; QUESTION SECTION:
     ;www.gslbnew.com. IN    A
    
     ;; ANSWER SECTION:
     www.gslbnew.com.    5   IN  A   1.1.1.2
    
     ;; Query time: 12 msec
     ;; SERVER: 10.102.82.13#53(10.102.82.13)
     ;; WHEN: Tue Mar 29 22:46:40 UTC 2022
     ;; MSG SIZE  rcvd: 60
     <!--NeedCopy-->
    

将 match 通配符限定词设置为“是”:

set locationparameter -matchWildcardtoany yes
<!--NeedCopy-->

当 match 通配符限定词设置为 yes 时,通配符限定词将匹配任何通配符限定词(已定义和非通配符限定词)。

  • 10.106.24.147 即将推出的 DNS 查询与定义的限定词(限定词 2 = IR)匹配。因此,DNS 策略生效并删除查询。

    在 10.106.24.147 客户端上运行 dig @10.102.82.13 www.gslbnew.com 命令。输出显示服务器无法访问。

     root@ns#  dig @10.102.82.13 www.gslbnew.com
    
     ; <<>> DiG 9.11.23 <<>> @10.102.82.13 www.gslbnew.com
     ; (1 server found)
     ;; global options: +cmd
     ;; connection timed out; no servers could be reached
     <!--NeedCopy-->
    
  • 来自 10.106.24.180 的查询与非通配符限定词匹配。因此,DNS 策略生效并删除查询。

    在 10.106.24.180 客户端上运行 dig @10.102.82.13 www.gslbnew.com 命令。输出显示服务器无法访问。

     root@ns# dig @10.102.82.13 www.gslbnew.com
    
     ; <<>> DiG 9.11.23 <<>> @10.102.82.13 www.gslbnew.com
     ; (1 server found)
     ;; global options: +cmd
     ;; connection timed out; no servers could be reached
     <!--NeedCopy-->
    

将匹配通配符限定词设置为表达式:

set locationparameter -matchWildcardtoany expression
<!--NeedCopy-->

当 match 通配符限定词设置为 expression 时,通配符限定词将与 DNS 策略中可用的限定词或位置数据库文件中可用的限定词匹配。

  • 10.106.24.147 即将推出的 DNS 查询与 DNS 策略中定义的通配符限定词匹配。因此,DNS 策略生效并删除查询。

    在 10.106.24.147 客户端上运行 dig @10.102.82.13 www.gslbnew.com 命令。输出显示服务器无法访问。

     root@ns#  dig @10.102.82.13 www.gslbnew.com
    
     ; <<>> DiG 9.11.23 <<>> @10.102.82.13 www.gslbnew.com
     ; (1 server found)
     ;; global options: +cmd
     ;; connection timed out; no servers could be reached
     <!--NeedCopy-->
    
  • 来自 10.106.24.180 的查询与 DNS 策略中的限定词不匹配。因此,DNS 策略不会生效,查询将得到处理。

    在 10.106.24.180 客户端上运行 dig @10.102.82.13 www.gslbnew.com 命令。输出显示 GSLB 虚拟服务器的 IP 地址。

     root@ns# dig @10.102.82.13 www.gslbnew.com
    
     ; <<>> DiG 9.11.23 <<>> @10.102.82.13 www.gslbnew.com
     ; (1 server found)
     ;; global options: +cmd
     ;; Got answer:
     ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64265
     ;; flags: qr aa rd ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
     ;; WARNING: recursion requested but not available
    
     ;; OPT PSEUDOSECTION:
     ; EDNS: version: 0, flags:; udp: 1280
     ;; QUESTION SECTION:
     ;www.gslbnew.com.  IN   A
    
     ;; ANSWER SECTION:
     www.gslbnew.com.    5   IN  A   1.1.1.2
    
     ;; Query time: 12 msec
     ;; SERVER: 10.102.82.13#53(10.102.82.13)
     ;; WHEN: Tue Mar 29 22:46:40 UTC 2022
     ;; MSG SIZE  rcvd: 60
     <!--NeedCopy-->
    
设置位置限定符