Citrix ADC

プロキシプロトコル

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

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

以下は、3つの操作モードです。

  • 進む。アプライアンスは、クライアントの詳細をバックエンドサーバーに転送します。
  • Stripped. アプライアンスは、ログ記録の目的でクライアントの詳細を保存します。また、プロキシプロトコルがバックエンドサーバーでサポートされていない場合は、書き換えポリシー構成を使用してクライアントの詳細をサーバーに送信します

制限事項

プロキシプロトコル機能は、TFOおよびMultiPathTCP機能ではサポートされていません。

CitrixADCアプライアンスでのプロキシプロトコルのしくみ

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

挿入操作

挿入操作

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

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

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

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

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

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

ストリップ操作

ストリップ操作

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

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

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

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

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

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

    • プロキシ -> プロキシヘッダーバージョン-1の一意の文字列形式。
    • TCP overIPv4およびTCPoverIPv6のプロトコルをサポートします。残りのプロトコルについては、これは不明です。
    • 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 overIPv4およびTCPoverIPv6のプロトコルをサポートします。残りのプロトコルについては、これは不明です。
    • 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

注:

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

サービスに対してプロキシプロトコルが有効になっているネットプロファイルを追加する

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

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

例:

add netprofile proxyprofile-2 –proxyProtocol ENABLED –proxyprotocoltxversion V1

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

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

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

例:

add lb vserver lbvserver-1 http 1.1.1.1 80

プロキシレイヤーにCitrixADCアプライアンスのHTTPサービスを追加します

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

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

例:

Add service http-service-1 2.2.2.1 http 80

CitrixADCアプライアンスで負荷分散仮想サーバーを使用してネットプロファイルを設定する

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

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

例:

set lb vserver lbvserver-1 –netprofile proxyProfile-1

CitrixADCアプライアンスで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

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

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

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

例:

add lb vserver lbvserver-2 http 2.2.2.2 80

プロキシレイヤーにCitrixADCアプライアンスのHTTPサービスを追加します

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

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

例:

Add service http-service-2 3.3.3.1 http 80

CitrixADCアプライアンスで負荷分散仮想サーバーを使用してネットプロファイルを設定する

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

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

例:

set lb vserver lbvserver-2 –netprofile proxyProfile-3

CitrixADCアプライアンスで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

プロキシレイヤーにCitrixADCアプライアンスの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

CitrixADCアプライアンスで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. [Net Profile] ページで、次のパラメータを設定します。
    1. Name:ネットプロファイルの名前。
    2. プロキシプロトコル負荷分散仮想サーバーのプロキシプロトコルを有効または無効にします。
    3. プロトコル バージョン。着信データ形式に基づいて、プロキシプロトコルのバージョンをV1またはV2に設定します。
  7. [OK] をクリックします。

    ローカライズされた画像

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

    ローカライズされた画像

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

注:

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

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