ADC

使用地理定位数据库从用户 IP 地址检索位置详细信息

注意: 此功能可从 Citrix ADC 版本 12.1 版本中获得,并提供 50.x 及更高版本。

Citrix ADC 设备可以获取用户位置详细信息,例如大陆、县和城市。对于地理位置数据库中的任何公有 IP 地址。它使用高级策略基础架构执行。然后,检索到的位置详细信息将用于重写操作或响应程序操作,以执行以下用例。

  • 将客户端请求发送到后端服务器时,插入带有用户位置详细信息(如国家/地区、城市信息)的 HTTP 标头。
  • 在 HTML 页面响应中为无效用户添加国家名称。

设备还可以使用审核日志记录机制记录位置详细信息。

使用地理定位功能获取用户位置详细信息

组件按照以下方式进行交互:

  1. 用户从特定地理位置发送客户端请求。
  2. Citrix ADC 设备从客户端请求中查找用户 IP 地址并检索地理位置详细信息。详细信息包括大陆、国家、地区、城市、ISP、组织或地理位置数据库中的自定义详细信息。
  3. 检索位置详细信息后,设备将使用响应程序策略或重写策略来评估请求。
  4. 在重写策略中,设备会添加带有地理位置详细信息的标头,然后将其发送到后端服务器。例如,插入带有国家/地区信息的自定义 HTTP 标头。
  5. 在响应程序策略中,设备会评估 HTTP 请求,并根据策略评估,允许访问用户或将用户重定向到错误页面。它指出他们从哪里访问应用程序的区域没有访问权限。

设置地理定位数据库

作为必备条件,您必须具有要在 Citrix ADC 设备上运行的地理定位数据库。地理定位数据库文件可用于 Citrix ADC 固件。要从供应商下载数据库文件,请将其转换为 Citrix ADC 格式并将其导入到设备中。 有关地理位置数据库的详细信息,请参阅 添加位置文件以创建静态邻近数据库 主题。

地理定位功能

下表列出了检索任何公有 IP 地址的位置详细信息的地理定位函数列表。这些函数可用于重写或响应程序策略。

地理定位功能 示例
CLIENT.IP.SRC.LOCATION Asia.In.Karnataka.Bangalore
CLIENT.IP.SRC.LOCATION.GET (1).LOCATION_LONG 印度
CLIENT.IP.SRC.LOCATION(3) Asia.In.Karnataka
CLIENT.IP.SRC.LAT_LONG 12,77
CLIENT.IPV6.SRC.LOCATION North America.US.California.Santa Clara.Verizon.Citrix
CLIENT.IPV6.SRC.LOCATION(3) North America.US.California
CLIENT.IPV6.SRC.LOCATION.GET(1).LOCATION_LONG 美国
CLIENT.IPV6.SRC.LOCATION.GET(3) 加利福尼亚州
CLIENT.IPV6.SRC.LAT_LONG 36, -119

配置地理定位功能

要使用高级策略基础架构配置地理定位功能,必须启用负载平衡、重写和响应程序功能,然后完成以下使用案例。

启用负载平衡、响应器、重写功能

如果希望 Citrix ADC 设备授权用户从特定地理位置进行访问,则必须启用负载平衡、重写和响应程序功能。

enable ns feature loadbalancing rewrite responder
<!--NeedCopy-->

用例 1:配置地理定位功能以重定向无效用户以外的地理位置

当来自印度的用户请求访问某个网页时,阻止该请求并使用带有国家名称的 HTML 页面进行响应。

以下步骤可帮助您完成此使用案例的配置。

  • 添加响应程序操作
  • 添加响应程序策略
  • 将响应程序策略绑定到负载平衡服务器

有关重写操作和重写策略配置的 GUI 过程的详细信息,请参阅 响应程序 主题

添加响应程序操作

添加响应程序操作以使用带有国家名称的 HTML 页面进行响应。 在命令提示符下,键入:

add responder action <name> <type> (<target> | <htmlpage>) [-comment <string>] [-responseStatusCode <positive_integer>][-reasonPhrase <string>]
<!--NeedCopy-->

示例:

add responder action responder_act respondwith "HTTP.REQ.VERSION + " 304 Requested Page not allowed in your country - " + CLIENT.IP.SRC.LOCATION.GET (1).LOCATION_LONG + "\r\n""
<!--NeedCopy-->

添加审计日志消息操作

您可以将审计消息操作配置为在不同的日志级别记录消息,无论是仅以 syslog 格式还是以 syslog 和格 newnslog 式记录消息。审核消息操作使用表达式指定审核消息的格式。 使用命令行界面创建审核消息操作

在命令提示符下,键入: add audit messageaction <name> <logLevel> <stringBuilderExpr> [-logtoNewnslog (YES|NO)] [-bypassSafetyCheck (YES|NO)]

示例:

add audit messageaction msg1 DEBUG ""Request Location: "+CLIENT.IP.SRC.LOCATION"
<!--NeedCopy-->

添加响应程序策略

添加响应方策略以识别来自印度的请求,并将响应方操作与此策略相关联。 在命令提示符下,键入:

add responder policy <name> <rule> <action> [<undefAction>] [-comment <string>] [-logAction <string>] [-appflowAction <string>]
<!--NeedCopy-->

示例:

add responder policy responder_pol CLIENT.IP.SRC.MATCHES_LOCATION("Asia.India.\*.\*.\*.\*") responder_act -logaction msg1
<!--NeedCopy-->

将响应程序策略绑定到负载平衡服务器

将响应程序策略绑定到 HTTP/SSL 类型的负载平衡虚拟服务器。 在命令提示符下,键入:

bind lb vserver <vserver name> -policyName < policy_name >  -priority <> -type <L7InlineREQUEST | L4Inline-REQUEST>
<!--NeedCopy-->

示例:

bind lb vserver http_vserver -policyName responder_pol -priority 100 -type REQUEST
<!--NeedCopy-->

用例 2:配置地理定位功能,用于插入新的 HTTP 标头以及后端响应的位置详细信息

考虑一种场景,即 Citrix ADC 设备必须在发送到应用程序服务器的请求的 HTTP 标头中插入用户位置,以便服务器可以将信息用于某些业务逻辑。 以下步骤可帮助您完成此使用案例的配置。

  • 添加重写操作
  • 添加重写策略
  • 绑定重写策略以进行负载平衡

有关重写操作和重写策略配置的 GUI 过程的详细信息,请参阅 响应程序 主题。

添加重写操作

添加重写操作以在请求中插入含有用户地理位置详细信息的自定义 HTTP 标头并向其发送后端服务器。 在命令提示符下,键入:

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

示例:

add rewrite action rewrite_act insert_http_header "User_location" CLIENT.IP.SRC.LOCATION
<!--NeedCopy-->

添加重写策略

添加重写策略以评估是否必须运行重写操作。在这种情况下,发往应用程序服务器的所有请求都必须具有自定义 HTTP 标头,因此该规则可以为“true”。 在命令提示符下,键入:

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

示例:

add rewrite policy rewrite_pol true rewrite_act -logaction log_act
<!--NeedCopy-->

绑定重写策略以进行负载平衡

将重写策略绑定到所需的 HTTP/SSL 类型的负载平衡虚拟服务器。 在命令提示符下,键入:

bind lb vserver <vserver name> -policyName < policy_name >  -priority <> -type <L7InlineREQUEST | L4Inline-REQUEST>
<!--NeedCopy-->

示例:

bind lb vserver http_vserver -policyName rewrite_pol -priority 100 -type REQUEST
<!--NeedCopy-->

Syslog 支持记录地理位置详细信息(可选)

如果您希望记录用户的地理位置详细信息,则必须指定当请求匹配策略时要执行的 SYSLOG 操作。设备将详细信息作为日志消息存储在 ns.log 文件中。 有关 SYSLOG 和 NSLOG 审计的更多信息,请参阅 审计日志记录 主题。

输出用户地理位置详细信息

如果您尝试从班加罗尔位置访问应用程序,并且设备使用地理位置功能 “CLIL.IP.SRC.LOCATION”,则以下输出将使用 SYSLOG 或 newnslog 操作登录设备。

Asia.India.Karnataka.Banglore
<!--NeedCopy-->

输出日志示例:

07/23/2018:19:03:54 GMT  Debug 0-PPE-0 : default REWRITE Message 22 0 :  "Request Location: asia.in.karnataka.bangalore.\*.\*"
07/23/2018:19:23:55 GMT  Debug 0-PPE-0 : default RESPONDER Message 32 0
Done
<!--NeedCopy-->
使用地理定位数据库从用户 IP 地址检索位置详细信息