使用地理定位数据库从用户 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

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

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

按照以下步骤完成此用例的配置。

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

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

添加响应程序操作

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

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

示例:

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

添加审核日志消息操作

您可以配置审核消息操作,以便在不同的日志级别记录消息,既可以是系统日志格式,也可以是系统日志格式和 newnslog 格式。审核消息操作使用表达式指定审核消息的格式。 使用命令行界面创建审核消息操作

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

示例:

add audit messageaction msg1 DEBUG ""Request Location: "+CLIENT.IP.SRC.LOCATION"

添加响应程序策略

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

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

示例:

add responder policy responder_pol CLIENT.IP.SRC.MATCHES_LOCATION("Asia.India.\*.\*.\*.\*") responder_act -logaction  log_act

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

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

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

示例:

bind lb vserver http_vserver -policyName responder_pol -priority 100 -type REQUEST

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

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

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

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

添加重写操作

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

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

示例:

add rewrite action rewrite_act insert_http_header "User_location" CLIENT.IP.SRC.LOCATION

添加重写策略

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

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

示例:

add rewrite policy rewrite_pol true rewrite_act -logaction log_act

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

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

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

示例:

bind lb vserver http_vserver -policyName rewrite_pol -priority 100 -type REQUEST

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

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

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

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

Asia.India.Karnataka.Banglore

输出日志示例:

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