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

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

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

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

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