Citrix ADC

プロキシ・プロトコル

プロキシプロトコルは、クライアントの詳細をクライアントからサーバーにCitrix ADCアプライアンスを経由して安全に転送します。アプライアンスは、クライアントの詳細を含むプロキシ・プロトコル・ヘッダーを追加し、それをバックエンド・サーバーに転送します。Citrix ADCアプライアンスでのプロキシプロトコルの使用シナリオを以下に示します。

  • 元のクライアント IP アドレスを学習する
  • Web サイトの言語の選択
  • 選択した IP アドレスのブラックリスト
  • 統計情報のロギングと収集

操作の3つのモードは次のとおりです。

  • [挿入]: アプライアンスは、クライアントの詳細を挿入し、バックエンドサーバーに送信します。
  • 進む。アプライアンスは、クライアントの詳細をバックエンドサーバーに転送します。
  • 剥ぎ取ったアプライアンスは、ロギングの目的でクライアントの詳細を保存します。また、バックエンドサーバーでプロキシプロトコルがサポートされていない場合、は、リライトポリシー構成を使用して、クライアントの詳細をサーバーに送信します

制限事項

プロキシプロトコル機能は、TFO およびマルチパス TCP 機能ではサポートされません。

Citrix ADCアプライアンスでのプロキシプロトコルの動作

次のフロー図は、Citrix ADCアプライアンス間でプロキシプロトコルを挿入、転送、および削除操作用に構成する方法を示しています。

挿入操作

挿入操作

コンポーネントの相互作用は次のとおりです。

  • Citrix ADCインスタンスでは、ネットプロファイルでプロキシプロトコルを有効にし、サービスにバインドする必要があります。
  • 挿入操作では、Citrix ADCはクライアント接続の詳細を含むプロキシヘッダーを追加し、バックエンドサーバーに転送します。
  • 送信側では、アプライアンスは CLI 設定に基づいてプロキシプロトコルのバージョンを決定します。

フォワードオペレーション

フォワードオペレーション

コンポーネントの相互作用は次のとおりです。

  • クライアントは、プロキシヘッダーとともにCitrix ADCに要求を送信します。アプライアンスはバージョンを動的に識別します。
  • Citrix ADCアプライアンスでは、転送操作です。プロキシプロトコルは、ロードバランシング仮想サーバーまたはコンテンツスイッチング仮想サーバーで有効になり、サービスで有効になります。アプライアンスはプロキシヘッダーを受信し、ヘッダーの詳細をバックエンドサーバーに転送します。
  • プロキシヘッダーの詳細が無効な形式の場合、アプライアンスは接続をリセットします。
  • 送信側では、アプライアンスは CLI 設定に基づいてプロキシプロトコルのバージョンを決定します。

剥ぎ取られた操作

剥ぎ取られた操作

コンポーネントの相互作用は次のとおりです。

  • クライアントは、プロキシヘッダーとともに要求をCitrix ADCアプライアンスに送信します。
  • Citrix ADCアプライアンスでは、ストリッピング操作の場合、アプライアンスはプロキシプロトコルから取得したクライアント情報を転送し、書き換えポリシー式を使用してHTTPヘッダーに挿入します。
  • 送信元 IP アドレス、宛先 IP アドレス、送信元ポート、宛先ポートなどのクライアントの詳細は、書き換えポリシー式を使用して HTTP ヘッダーに追加されます。書き換えポリシーは式を評価し、「true」の場合は、対応する書き換えポリシーのアクションがトリガーされます。クライアントの詳細は、HTTPヘッダーでバックエンドサーバーに転送されます。
  • プロキシヘッダーの詳細が無効な形式の場合、アプライアンスは接続をリセットします。

プロキシ・プロトコルのバージョン形式

Proxy プロトコルのバージョンには、2 つの形式があります。アプライアンスは、受信データ長に基づく形式を使用することを決定します。詳細については、プロキシプロトコル RFP を参照してください。

  1. プロキシプロトコルバージョン 1 形式

    PROXY TCP4/TCP6/UNKNOWN <SRC IP> <DST IP> <SRC PORT> <DST PORT>

    • PROXY-> プロキシヘッダーバージョン-1 の一意の文字列形式。
    • プロトコルをサポートする TCP over IPv4 および TCP over IPv6. 残りのプロトコルの場合、これは UNKNOWN です。
    • SRC IP:パケットの送信元IP(元のクライアントIP)アドレス。
    • DST IP:パケットの宛先 IP アドレス。
    • SRC ポート:パケットの送信元ポート。
    • DST ポート:パケットの宛先ポート。
  2. プロキシプロトコルバージョン 2 形式

    0D 0A 0D 0A 00 0D 0A 51 55 49 54 0A <13th byte> <14th byte> <15-16th byte> <17th byte onwards>

    • D 0A 0D 0A 00 0D 0A 51 55 49 54 0A-> プロキシヘッダーバージョン-2の一意のバイナリ文字列。
    • プロトコルをサポートする TCP over IPv4 および TCP over IPv6. 残りのプロトコルの場合、これは UNKNOWN です。
    • 13バイト-プロトコルのバージョンとコマンド。
    • 14バイト:アドレスおよびプロトコルファミリ。
    • 15-16バイト-ネットワーク順のアドレス長。
    • 17バイト以降 — ネットワーク順に存在するアドレス情報(src IP、dst IP、src ポート、dst ポート)。

Citrix ADCアプライアンスでプロキシプロトコルを構成する

以下の手順に従って、Citrix ADCアプライアンスでプロキシプロトコルを構成します。

  1. プロキシプロトコルをグローバルとして有効にします。
  2. 挿入操作用のプロキシプロトコルの設定
  3. 転送操作用のプロキシプロトコルの構成
  4. ストリップ操作用のプロキシプロトコルの構成
  5. 操作のないプロキシプロトコルの設定

プロキシプロトコルをグローバルとして有効にする

コマンドプロンプトで、次のように入力します。

set ns param –proxyProtocol ENABLED

挿入操作用のプロキシプロトコルの設定

挿入操作用のプロキシプロトコルを設定するには、ロードバランシング仮想サーバーでプロトコルを有効または無効にし、サービスで有効にする必要があります。

負荷分散仮想サーバーのプロキシプロトコルを無効にしたネットプロファイルの追加

コマンドプロンプトで、次のように入力します。

add netprofile <name> -proxyProtocol ENABLED/DISABLED> -proxyprotocoltxversion <V1/V2>

例:

Add netprofile proxyprofile-1 –proxyProtocol DISABLED –proxyprotocoltxversion V1

注:

アプライアンスでプロキシプロトコルを無効にする場合は、protocol version パラメータを設定する必要はありません。

サービスに対して有効なプロキシプロトコルを使用したネットプロファイルの追加

コマンドプロンプトで、次のように入力します。

add netprofile <name> -proxyProtocol ENABLED/DISABLED> -proxyprotocoltxversion <V1/V2>

例:

add netprofile proxyprofile-2 –proxyProtocol ENABLED –proxyprotocoltxversion V1

Citrix ADCアプライアンスの負荷分散仮想サーバーをプロキシレイヤーに追加する

コマンドプロンプトで、次のように入力します。

add lb vserver <name>@ <serviceType> [(<IPAddress>@ <port>)]

例:

add lb vserver lbvserver-1 http 1.1.1.1 80

プロキシレイヤーでのCitrix ADCアプライアンスのHTTPサービスの追加

コマンドプロンプトで、次のように入力します。

add service <name>@ (<IP>@ | <serverName>@) <serviceType> <port>

例:

Add service http-service-1 2.2.2.1 http 80

Citrix ADCアプライアンスで負荷分散仮想サーバーを使用したネットプロファイルの設定

コマンドプロンプトで、次のように入力します。

set lb vserver <vserver name> -netprofile <name>

例:

set lb vserver lbvserver-1 –netprofile proxyProfile-1

Citrix ADCアプライアンスでHTTPサービスを使用してネットプロファイルを設定する

コマンドプロンプトで、次のように入力します。

set service <service name> –netprofile <name>

例:

set service http-service-1 –netprofile proxyProfile-1

転送操作用のプロキシプロトコルの構成

プロキシレイヤー内の次のCitrix ADCインスタンスに対して、転送操作用のプロキシプロトコルを構成します。プロトコルを有効または無効にし、仮想サーバーまたはサービスにバインドする必要があります。

負荷分散仮想サーバーのプロキシプロトコルを有効にしたネットプロファイルの追加

コマンドプロンプトで、次のように入力します。

add netprofile <name> -proxyProtocol ENABLED/DISABLED> -proxyprotocoltxversion <V1/V2>

例:

add netprofile proxyprofile-3 –proxyProtocol ENABLED –proxyprotocoltxversion V1

サービスに対してプロキシプロトコルを有効にしたネットプロファイルの追加

コマンドプロンプトで、次のように入力します。

add netprofile <name> -proxyProtocol ENABLED/DISABLED> -proxyprotocoltxversion <V1/V2>

例:

add netprofile proxyprofile-4 –proxyProtocol ENABLED –proxyprotocoltxversion V1

Citrix ADCアプライアンスの負荷分散仮想サーバーをプロキシレイヤーに追加する

コマンドプロンプトで、次のように入力します。

add lb vserver <name>@ <serviceType> [(<IPAddress>@ <port>)]

例:

add lb vserver lbvserver-2 http 2.2.2.2 80

プロキシレイヤーでのCitrix ADCアプライアンスのHTTPサービスの追加

コマンドプロンプトで、次のように入力します。

add service <name>@ (<IP>@ | <serverName>@) <serviceType> <port>

例:

Add service http-service-2 3.3.3.1 http 80

Citrix ADCアプライアンスで負荷分散仮想サーバーを使用したネットプロファイルの設定

コマンドプロンプトで、次のように入力します。

set lb vserver <vserver name> -netprofile <name>

例:

set lb vserver lbvserver-2 –netprofile proxyProfile-3

Citrix ADCアプライアンスでHTTPサービスを使用してネットプロファイルを設定する

コマンドプロンプトで、次のように入力します。

set service <service name> –netprofile <name>

例:

set service http-service-2 –netprofile proxyProfile-4

ストリップ操作用のプロキシプロトコルの設定

ストリップ動作のプロキシプロトコルを設定するには、ロードバランシング仮想サーバーでプロキシプロトコルを無効にし、サービスでプロキシプロトコルを有効にする必要があります。

サービスに対してプロキシプロトコルを有効にしたネットプロファイルの追加

コマンドプロンプトで、次のように入力します。

add netprofile <name> -proxyProtocol ENABLED> -proxyprotocoltxversion <V1/V2>

例:

add netprofile proxyprofile-5 –proxyProtocol ENABLED –proxyprotocoltxversion V1

Citrix ADCアプライアンスの負荷分散またはコンテンツスイッチング仮想サーバーをプロキシレイヤーに追加する

コマンドプロンプトで、次のように入力します。

add lb vserver <name>@ <serviceType> [(<IPAddress>@ <port>)]

例:

add lb vserver lbvserver-3 http 2.2.2.2 80

プロキシレイヤーでのCitrix ADCアプライアンスのHTTPサービスの追加

コマンドプロンプトで、次のように入力します。

add service <name>@ (<IP>@ | <serverName>@) <serviceType> <port>

例:

Add service http-service-3 3.3.3.1 http 80

Citrix ADCアプライアンスで負荷分散またはコンテンツスイッチング仮想サーバーを使用してネットプロファイルを設定する

コマンドプロンプトで、次のように入力します。

set lb vserver <vserver name> -netprofile <name>

例: set lb vserver lbvserver-3 –netprofile proxyProfile-5

Citrix ADCアプライアンスでHTTPサービスを使用してネットプロファイルを設定する

コマンドプロンプトで、次のように入力します。

set service <service name> –netprofile <name>

例:

set service http-service-3 –netprofile proxyProfile-6

HTTP ヘッダーをバックエンドサーバーに転送する書き換えアクションを追加する

コマンドプロンプトで、次のように入力します。

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

HTTP ヘッダーをバックエンドサーバーに転送する書き換えポリシーを追加する

コマンドプロンプトで、次のように入力します。

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

バインド書き換えポリシーのグローバルまたは仮想サーバー

コマンドプロンプトで、次のように入力します。

bind rewrite global <policyName> <priority> [<gotoPriorityExpression>] [-type <type>] [-invoke (<labelType> <labelName>) ]

例:

add rewrite action insert_client_ip_act  insert_http_header X-client-IP CLIENT.PROXY.SRCIP_STR
add rewrite policy insert_client_ip_pol true insert_client_ip_act
bind rewrite global insert_client_ip_pol 90 END -type REQ_OVERRIDE
add rewrite action insert_destination_ip_act insert_http_header X-destination-IP CLIENT.PROXY.DSTIP_STR
add rewrite policy insert_destination_ip_pol true insert_destination_ip_act
bind rewrite global insert_destination_ip_pol 90 END -type REQ_OVERRIDE
add rewrite action insert_source_port_act insert_http_header X-source-port CLIENT.PROXY.SRCPORT
add rewrite policy insert_ source_port \_pol true insert_source_port_act
bind rewrite global insert\_ source_port _pol 90 END -type REQ_OVERRIDE

add rewrite action insert_destination_port_act insert_http_header X-destination-port CLIENT.PROXY.DSTPORT
add rewrite policy insert_destination_port _pol true insert_destination_port_act
bind rewrite global insert_destination_port _pol 90 END -type REQ_OVERRIDE

Citrix ADC GUIを使用してプロキシプロトコルを構成する

  1. [システム] > [設定] > [グローバルシステム設定の変更] に移動します。
  2. [グローバルシステム設定パラメータの構成] ページで、[プロキシプロトコル] チェックボックスをオンにします。
  3. [OK] をクリックして 閉じるをクリックします。

    プロキシ・プロトコル・ページ

  4. [システム] > [ネットワーク] > [ネットプロファイル] に移動します。
  5. 詳細ウィンドウで、[追加] をクリックして、負荷分散仮想サーバーのネットプロファイルを作成します。
  6. [ネットプロファイル] ページで、次のパラメータを設定します。
    1. 名前。ネットプロファイルの名前。
    2. プロキシプロトコル。負荷分散仮想サーバーのプロキシプロトコルを有効または無効にします。
    3. プロキシプロトコル TX バージョン受信データ形式に基づいて、プロキシプロトコルのバージョンを V1 または V2 に設定します。
  7. [OK] をクリックします。

    ローカライズされた画像

  8. [トラフィック管理] > [負荷分散] > [仮想サーバー] に移動します。
  9. 詳細ウィンドウで、[追加] をクリックします。
  10. [ロードバランシング仮想サーバー] ページで、基本パラメータを設定します。
  11. [詳細設定] セクションで、[プロファイル] を選択します。
  12. [プロファイル] セクションで、鉛筆アイコンをクリックします。
  13. ネットプロファイルを選択し、[OK] をクリックします。
  14. [完了] をクリックします。

    ローカライズされた画像

  15. [トラフィック管理] > [ロードバランシング] > [サービス] に移動します。
  16. 詳細ウィンドウで、[追加] をクリックします。
  17. [負荷分散サービス] ページで、基本パラメータを設定します。
  18. [詳細設定] セクションで、[プロファイル] を選択します。
  19. [プロファイル] セクションで、鉛筆アイコンをクリックします。
  20. ネットプロファイルを選択し、[OK] をクリックします。
  21. [完了] をクリックします。

注:

プロキシレイヤーの一部として複数のCitrix ADCアプライアンスがある場合は、転送操作用に各アプライアンスのプロキシプロトコル構成を設定する必要があります。

プロキシ・プロトコルの構成