プロキシー・プロトコルの有効化
IBM Cloud Internet Services は、パケットをサーバーに転送する前にインターセプトするため、クライアント IP を検索すると、真のクライアント IP ではなく CISの IP が表示されます。 ただし、実行するサービスによっては、真のクライアント IP を知っている必要がある場合があります。 このような場合は、 CIS のプロキシー・プロトコルを使用してクライアント IP をサービスに渡すことができます。
プロキシー情報の送信は、TCP または UDP のどちらが使用されているかによって異なります。 TCP の場合、Range はプロキシー・プロトコル v1の追加をサポートします。これは、Amazon ELB および NGINX によってサポートされる人間が理解できるバージョンです。 UDP アプリケーションの場合、 CIS は、Simple Proxy Protocol と呼ばれるカスタム・プロキシー・プロトコルを開発しました。
この機能にはエンタープライズ・プランが必要です。 アップグレードする場合は、アカウント・チームに連絡してください。
TCP のプロキシー・プロトコル v1 を有効にする
- ログインCISダッシュボード
- 「範囲」 をクリックします。
- PROXY プロトコルを使用するアプリケーションを見つけ、 「構成」 をクリックします。
- メニューから、 「プロキシー・プロトコル (PROXY Protocol)」 v1 を選択します。
TCP アプリケーションがプロキシー・プロトコル v1を使用するように構成されている場合、 CIS は、各インバウンド TCP 接続の前にプロキシー・プロトコルのプレーン・テキスト・ヘッダーを付加します。
プロキシー・プロトコル v1 ヘッダー
プロキシ プロトコルは、すべての接続の先頭に、クライアントの IP アドレスとポートを報告するヘッダーを追加します。 プロキシ プロトコルのプレーン テキスト ヘッダーの形式は次のとおりです。
PROXY_STRING + single space + INET_PROTOCOL + single space + CLIENT_IP + single space + PROXY_IP + single space + CLIENT_PORT + single space + PROXY_PORT + "\r\n"
IPv4 アドレスのプロキシー・プロトコル行の例を以下に示します。
PROXY TCP4 192.0.2.0 192.0.2.255 42300 443\r\n
以下は、 IPv6 アドレスのプロキシー・プロトコル回線の例です。
PROXY TCP6 2001:db8:: 2001:db8:ffff:ffff:ffff:ffff:ffff:ffff 42300 443\r\n
TCP/UDP 用のプロキシー・プロトコル v2 の使用可能化
- CIS ダッシュボードにログインします。
- 「範囲」 をクリックします。
- プロキシー・プロトコルを使用するアプリケーションを見つけ、 「構成」 をクリックします。
- メニューから、 「プロキシー・プロトコル」 v2 を選択します。
TCP アプリケーションがプロキシー・プロトコル v2を使用するように構成されている場合、 CIS は各インバウンド TCP 接続の前にプロキシー・プロトコル・バイナリー・ヘッダーを付加します。
UDP アプリケーションが PROXY Protocol v2を使用するように構成されている場合、 CIS は、ストリーム上の最初の UDP データグラムの前にプロキシー・プロトコル・バイナリー・ヘッダーを付加します。
プロキシー・プロトコル v2 ヘッダー
プロキシ プロトコルは、すべての接続の先頭に、クライアントの IP アドレスとポートを報告するヘッダーを追加します。
IPv4 着信アドレスのプロキシー・プロトコル・バイナリー・ヘッダーの形式は、以下のとおりです。
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ +
| Proxy Protocol v2 Signature |
+ +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Version|Command| AF | Proto.| Address Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| IPv4 Source Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| IPv4 Destination Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Port | Destination Port |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
IPv6 着信アドレスのプロキシー・プロトコル・バイナリー・ヘッダーの形式は、以下のとおりです。
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ +
| Proxy Protocol v2 Signature |
+ +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Version|Command| AF | Proto.| Address Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ +
| |
+ IPv6 Source Address +
| |
+ +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ +
| |
+ IPv6 Destination Address +
| |
+ +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Port | Destination Port |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
UDP の Simple Proxy Protocol を使用可能にする
UDP を使用する場合、クライアントのソース IP とポート情報は、UDP 専用に開発された軽量プロトコルである Simple Proxy Protocol を使用して取得できます。
有効にするには、範囲アプリケーションで 「構成」 をクリックし、 「Simple Proxy Protocol」 の設定を On
に切り替えます。
Simple Proxy Protocol は、起点が、元のクライアント・ソース情報を含む、同じヘッダーを持つクライアント用のパケットの前にも付加する必要があることを指示します。 これは、着信パケットが実際にクライアントを対象としていることを検証するために行われます。