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.LOCATION Asia.In.Karnataka.Bangalore
CLIENT.IP.SRC.LOCATION_GET (1) .LOCATION_LONG India
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) California
CLIENT.IPV6.SRC.LAT_LONG 36, -119

位置情報機能の設定

高度なポリシーインフラストラクチャを使用して位置情報機能を設定するには、負荷分散、書き換え、およびレスポンダ機能を有効にして、次のユースケースを完了する必要があります。

負荷分散、レスポンダー、書き換え機能を有効にする

Citrix ADCアプライアンスで特定の地理的場所からのユーザーアクセスを承認する場合は、負荷分散、書き換え、およびレスポンダー機能を有効にする必要があります。

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

ユースケース 1: 無効なユーザーを地理的位置の外部にリダイレクトするための位置情報機能の設定

インドのユーザーがウェブページへのアクセスをリクエストしているときは、リクエストをブロックし、国名の HTML ページで応答します。

次の手順は、このユースケースの設定を完了するのに役立ちます。

  • 応答側アクションの追加
  • レスポンダーポリシーの追加
  • レスポンダーポリシーを負荷分散サーバーにバインドする

書き換えアクションと書き換えポリシー構成の GUI 手順の詳細については、 Responder のトピックを参照してください。

応答側アクションの追加

国名の 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 手順の詳細については、 Responder のトピックを参照してください。

書き換えアクションを追加

リライトアクションを追加して、リクエストにユーザージオロケーションの詳細を含むカスタム 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 監査の詳細については、 監査ログのトピックを参照してください。

ユーザーの地理位置情報の詳細の出力

次の出力は、バンガロールの場所からアプリケーションにアクセスしようとして、アプライアンスがジオロケーション機能「CLIENT.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 アドレスからロケーションの詳細を取得する