プロキシプロトコルの有効化
Cloudflareはパケットをサーバーに転送する前にインターセプトするため、クライアントIPを調べると、真のクライアントIPではなくCloudflareのIPが表示されます。
実行しているサービスの中には、真のクライアントIPの情報が必要なものもあります。その場合、CloudflareがクライアントIPをサービスに渡すためのプロキシプロトコルを使用できます。プロキシ情報を送信するかどうかは、TCPまたはUDPが使用されているかに依存します。TCPの場合、SpectrumはAmazon ELBやNGINX ↗がサポートする人間可読形式のProxy Protocol v1 ↗の追加をサポートしています。UDPアプリケーションの場合、CloudflareはSimple Proxy Protocolと呼ばれるカスタムプロキシプロトコルを開発しました。
この機能はエンタープライズプランが必要です。アップグレードを希望する場合は、アカウントチームにお問い合わせください。
- Cloudflareダッシュボード ↗にログインします。
- Spectrumを選択します。
- PROXYプロトコルを使用するアプリケーションを見つけて、Configureを選択します。
- ドロップダウンからPROXY Protocol v1を選択します。
TCPアプリケーションがPROXY Protocol v1を使用するように設定されると、Cloudflareは各受信TCP接続の先頭にPROXYプロトコルのプレーンテキストヘッダーを追加します。
PROXYプロトコルは、各接続の先頭にクライアントIPアドレスとポートを報告するヘッダーを追加します。PROXYプロトコルのプレーンテキストヘッダーは次の形式です:
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プロトコル行の例は次のようになります:
PROXY TCP4 192.0.2.0 192.0.2.255 42300 443\r\nIPv6アドレスのPROXYプロトコル行の例は次のようになります:
PROXY TCP6 2001:db8:: 2001:db8:ffff:ffff:ffff:ffff:ffff:ffff 42300 443\r\n- Cloudflareダッシュボード ↗にログインします。
- Spectrumを選択します。
- PROXYプロトコルを使用するアプリケーションを見つけて、Configureを選択します。
- ドロップダウンからPROXY Protocol v2を選択します。
TCPアプリケーションがPROXY Protocol v2を使用するように設定されると、Cloudflareは各受信TCP接続の先頭にPROXYプロトコルのバイナリヘッダーを追加します。
UDPアプリケーションがPROXY Protocol v2を使用するように設定されると、Cloudflareはストリームの最初のUDPデータグラムの先頭にPROXYプロトコルのバイナリヘッダーを追加します。
PROXYプロトコルは、各接続の先頭にクライアントIPアドレスとポートを報告するヘッダーを追加します。
IPv4の受信アドレス用のPROXYプロトコルのバイナリヘッダーは次の形式です:
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の受信アドレス用のPROXYプロトコルのバイナリヘッダーは次の形式です:
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用のSpectrumを使用する場合、クライアントのソースIPおよびポート情報は、UDP専用に開発された軽量プロトコルであるSimple Proxy Protocolを使用することで取得できます。
これを有効にするには、SpectrumアプリケーションでConfigureを選択し、Simple Proxy Protocolの設定をOnに切り替えます。
Simple Proxy Protocolでは、オリジンがクライアント向けのパケットに同じヘッダーを追加し、元のクライアントソース情報を含める必要があります。これは、受信するパケットが実際にクライアント向けであることを検証するために行われます。
Simple Proxy Protocolヘッダーに関する詳細情報は、Simple Proxy Protocolヘッダーを参照してください。