Citrix 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. 位置 Asia.In.Karnataka.Bangalore
CLIENT.IP.SRC.LOCATION .GET (1) .LOCATION _LONG 印度
客户端.IP.SRC.位置/位置 (3) Asia.In.In.Karnataka
CLIENT.IP.SRC.LAT_LONG 12,77
CLIENT.IPV6.SRC.LOCATION 北美。美国。加利福尼亚州。圣克拉拉 .Verizon.Citrix
CLIENT.IPV6.SRC.LOCATION(3) 北美 .US.加利福尼亚州
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)]

示例:

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>] [-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 地址中检索位置详细信息