ADC

プロキシプロトコル

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

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

以下に、3 つの動作モードを示します。

  • [挿入]。アプライアンスはクライアントの詳細を挿入し、バックエンドサーバーに送信します。
  • フォワード。アプライアンスは、クライアントの詳細をバックエンドサーバに転送します。
  • 剥ぎ取られた。アプライアンスは、ログ用にクライアントの詳細を保存します。また、プロキシプロトコルがバックエンドサーバーでサポートされていない場合は、書き換えポリシー設定を使用してクライアントの詳細をサーバーに送信します

次の表は、さまざまなプロキシプロトコルモードでの LB 仮想サーバーとサービスのステータスに関する情報を示しています。

プロキシプロトコルモード LB 仮想サーバー サービス
Ins 無効 有効
有効 有効
Stripped 有効 無効

制限事項

プロキシプロトコルは、TCP Fast Open (TFO) およびマルチパス TCP 機能ではサポートされていません。この機能は、NetScalerアプライアンスがTCP接続終了を行うサービスでのみサポートされます。他のサービス(「任意」など)はサポートされていません。

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

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

挿入操作

挿入操作

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

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

フォワード操作

フォワード操作

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

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

操作を剥ぎ取った

操作を剥ぎ取った

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

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

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

プロキシプロトコルバージョンには 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 ポート)。

レスポンダーポリシーインフラストラクチャ表現サポート

プロキシプロトコルは、TCP および HTTP タイプの仮想サーバーの次のレスポンダーポリシーインフラストラクチャ表現をサポートします。

  1. CLIENT.PROXY.SRCIP_STR
  2. CLIENT.PROXY.DSTIP_STR
  3. CLIENT.PROXY.SRCPORT
  4. CLIENT.PROXY.DSTPORT
  5. CLIENT.PROXY.ETHERTYPE

NetScalerは、NetScalerリリース13.1-48.x以降のTCPタイプの仮想サーバー上のプロキシプロトコルのレスポンダーポリシーインフラストラクチャ表現をサポートしています。

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

NetScalerアプライアンスでプロキシプロトコルを構成するには、次の手順を実行します。

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

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

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

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

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

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

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

例:

add lb vserver lbvserver-1 http 1.1.1.1 80

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

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

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

例:

Add service http-service-1 2.2.2.1 http 80

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

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

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

例:

set lb vserver lbvserver-1 –netprofile proxyProfile-1

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

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

set service <service name> –netprofile <name>

例:

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

負荷分散仮想サーバーをサービスにバインドする

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

bind lb vserver <vserver name> <service name>

例:

bind lb vserver lbvserver-1 http-service-1

転送操作用のプロキシプロトコルの設定

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

注:

負荷分散仮想サーバー用に作成されたネットプロファイルは、サービスにも使用できます。

負荷分散仮想サーバーでプロキシプロトコルが有効になっているネットプロファイルを追加する

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

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

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

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

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

例:

add lb vserver lbvserver-2 http 2.2.2.2 80

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

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

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

例:

Add service http-service-2 3.3.3.1 http 80

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

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

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

例:

set lb vserver lbvserver-2 –netprofile proxyProfile-3

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

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

set service <service name> –netprofile <name>

例:

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

負荷分散仮想サーバーをサービスにバインドする

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

bind lb vserver <vserver name> <service name>

例:

bind lb vserver lbvserver-2 http-service-2

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

ストリップ操作のプロキシプロトコルを構成するには、負荷分散仮想サーバーでプロキシプロトコルを有効にし、サービスのプロキシプロトコルを無効にする必要があります。

仮想サーバーでプロキシプロトコルが有効になっているネットプロファイルを追加する

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

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

例:

add netprofile proxyprofile-5 –proxyProtocol ENABLED –proxyprotocoltxversion V1

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

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

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

例:

add lb vserver lbvserver-3 http 2.2.2.2 80

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

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

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

例:

Add service http-service-3 3.3.3.1 http 80

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

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

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

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

負荷分散仮想サーバーをサービスにバインドする

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

bind lb vserver <vserver name> <service name>

例:

bind lb vserver lbvserver-3 http-service-3

CLI を使用してプロキシプロトコルのレスポンダーポリシーインフラストラクチャ表現を設定します

レスポンダーポリシーを構成するには、コマンドプロンプトで次のように入力します。

add responder policy <name> <expression> <action>

例:

> add responder policy resppol_proxy_srcip "CLIENT.PROXY.SRCIP_STR.EQ("10.106.26.83")" RESET
Done
<!--NeedCopy-->

レスポンダーポリシーを負荷分散仮想サーバーにバインドするには、コマンドプロンプトで次のように入力します。

bind lb vserver <name> -policyname <string> -priority <positive_integer> -gotoPriorityExpression <expression> -type <type>

例:

> bind lb vserver lb_tcp1 -policyName resppol_proxy_srcip -priority 10 -gotoPriorityExpression END -type REQUEST
Done
<!--NeedCopy-->

エンドツーエンド構成の例

> add ns tcpProfile tcp-proxy-profile -tcpmode ENDPOINT

> add netprofile net_proxyv1 -MBF DISABLED -proxyProtocol
ENABLED

> enable ns mode l2

> enable ns mode l3 usnip

> add ns ip 10.106.26.146 255.255.255.0 -type SNIP
Done
> add ns ip 10.106.26.144 255.255.255.0 -type SNIP
Done

> add lb vserver lb_tcp1 TCP 10.106.26.141 80
> add service s1 10.106.26.82 TCP 8080

> bind lb vserver lb_tcp1 s1

> set lb vserver lb_tcp1 -tcpProfileName tcp_proxy -netProfile net_proxyv1

> set ns param -proxyProtocol ENABLED

> add responder policy resppol_proxy_srcip "CLIENT.PROXY.SRCIP_STR.EQ("10.106.26.83")" RESET

> bind lb vserver lb_tcp1 -policyName resppol_proxy_srcip -priority 10 -gotoPriorityExpression END -type REQUEST
Done
<!--NeedCopy-->

NetScaler 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. [完了] をクリックします。

注:

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