tencent cloud

Cloud Load Balancer

動向とお知らせ
製品アップデート情報
製品に関するお知らせ
製品の説明
製品概要
製品の優位性
ユースケース
技術原理
Product Comparison
使用上の制約
Service Regions and Service Providers
購入ガイド
課金概要
課金項目
購入方法
支払い延滞の説明
製品属性の選択
クイックスタート
ドメイン名型CLBクイックスタート
CLBクイックスタート
IPv6 CLBクイックスタート
CentOSにおけるNginxのデプロイ
CentOSにおけるJava Webのデプロイ
操作ガイド
CLBインスタンス
CLBリスナー
バックエンドサーバー
ヘルスチェック
証明書管理
ログ管理
監視アラート
Cloud Access Management
従来型CLB
プラクティスチュートリアル
証明書をCLBに配置(双方向認証)
CLBのGzip有効化設定およびチェック方法の説明
HTTPS転送設定スタートガイド
クライアントリアルIPの取得方法
ロードバランサーのモニタリングアラート設定のベストプラクティス
マルチアベイラビリティーゾーンの高可用性設定の説明
バランシングアルゴリズムの選択と重みの設定の例
CLBのリスニングドメイン名に対してWebセキュリティ保護を実行するようにWAFを設定する
メンテナンスガイド
クライアントのtimewaitが多すぎる場合の対処方法
CLBのHTTPSサービスパフォーマンステスト
ストレステストに関するよくあるご質問
CLB証明書の操作権限に関するご質問
障害処理
UDPヘルスチェックの異常
API リファレンス
History
Introduction
API Category
Instance APIs
Listener APIs
Backend Service APIs
Target Group APIs
Redirection APIs
Other APIs
Classic CLB APIs
Load Balancing APIs
Making API Requests
Data Types
Error Codes
CLB API 2017
よくあるご質問
課金関連
CLB設定関連
ヘルスチェック異常調査
HTTPS関連
WS/WSSプロトコルサポート関連
HTTP/2プロトコルサポート関連
連絡先
用語集

CLBからクライアントの実際のIPを取得する方法の紹介

PDF
フォーカスモード
フォントサイズ
最終更新日: 2025-07-09 12:00:47

CLBからクライアントの実際のIPを取得する方法の紹介

CLBの4層のリスナー(TCP/UDP/TCP SSL/QUIC)は、バックエンドサーバーからクライアントの実際のIPを直接取得することをサポートしており、追加の設定が不要です。デフォルトでは、バックエンドサーバーから取得された送信元IPは、クライアントの実際のIPです。
ただし、CLBとバックエンドサーバーの間に1つ以上のNATゲートウェイが存在する場合、バックエンドサーバーはクライアントの実際の送信元IPを取得できません。この場合、CLBの4層のリスナーでProxy Protocol設定を有効にし、Proxy Protocolを使用し、Proxy Protocolを通じてクライアントの実際の送信元IPをバックエンドサーバーに渡すことができます。
注意:
注意:
この機能を使用するには、バックエンドサーバー側で同じくProxy Protocolを有効にする必要があります。これにより、バックエンドサーバーはクライアントの実際のIPアドレスを取得できます。ただし、バックエンドサーバーがProxy Protocolの解析能力を持っていない場合、Proxy Protocol設定にチェックを入れると、バックエンドサービスの解析異常を引き起こし、サービスが使えなくなる可能性があります。
この機能はオンラインでのスムーズなマイグレーションをサポートしていません。ProxyProtocolに切り替えるにはサービスを停止してアップグレードする必要がありますので、慎重に設定してください。
CLBはProxy Protocol v2バージョンのみをサポートしています。Proxy Protocol v2バージョンは、TCPやUDPなどの複数の通信プロトコルをサポートしています。詳細は The PROXY protocolをご参照ください。

機能説明

この機能は標準アカウントタイプのみでサポートされており、従来のアカウントタイプではサポートされていません。アカウントタイプの判断方法はアカウントタイプの判断をご参照ください。
IPv4およびIPv6インスタンスのTCP/UDP/TCP SSL/QUICリスナーのみがこの機能をサポートしています。
IPv6 CLBのTCP/UDPリスナーのProxy Protocol設定機能はまだグレーボックステストの段階にあります。必要に応じてオーダーシートの申請を提出してください。

Proxy Protocolについて

Proxy Protocolを使用すると、プロキシサーバはリクエストを転送する際に、クライアントの元のネットワーク接続情報をリクエストヘッダーにカプセル化してバックエンドサーバーに渡します。バックエンドサーバーはProxy Protocolヘッダーを解析することで、送信元IPアドレス、送信元ポート、通信プロトコルなどのクライアントの実際のネットワーク接続情報を取得できます。
Proxy Protocolを使用することで、バックエンドサーバーは的確なクライアントの元のネットワーク接続情報を取得し、より正確なログ記録、アクセス制御、トラフィック監視などの操作を行うことができます。

Proxy Protocol V2

Proxy Protocol V2プロトコルはバイナリ形式を採用しており、TCPv4、TCPv6、UDPv4、UDPv6をサポートしており、その形式は以下の通り:

IPv4形式



IPv6形式



前提条件

Proxy Protocolを有効にする前に、新規接続が失敗しないように、ご使用のバックエンドサーバーがProxy Protocol v2バージョンをサポートしていることを確認してください。
本記事では、IPv4 CLBのTCPリスナーを例として説明します。

操作手順

ステップ1:TCPリスナーのProxy Protocol設定を有効にする

1. CLBコントロールパネルにログインし、左側のナビゲーションバーでインスタンス管理をクリックします。
2. CLBインスタンス一覧ページの左上から地域を選択し、インスタンス一覧の右側の操作列でリスナーの設定をクリックします。
3. TCP/UDP/TCP SSL/QUICリスナーで対象のリスナーの詳細をクリックし、ProxyProtocolの設定が有効になっていることを確認します。有効になっていない場合は、リスナーを編集し、詳細オプションでProxyProtocolの設定にチェックを入れ、保存してください。


ステップ2:バックエンドサーバーのProxy Protocolを有効にする

ここでは、CentOS 7.9およびNginx 1.20.1バージョンの設定を例として説明します。実際は使用している環境に応じて設定してください。
1. バックエンドサーバーにログインし、nginx -tコマンドを実行して設定ファイルのパスを確認します。デフォルトパスは/etc/nginx/nginx.confですが、実際は使用している環境に応じて設定してください。
2. 設定ファイル内のProxy Protocolの内容を変更して保存してください。変更箇所は以下の説明を参照してください。
http {
# $proxy_protocol_addrの設定を確保し、この変数はクライアントの実際のIPを記録します
log_format main '$proxy_protocol_addr - $remote_addr- $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
# 80リスニングポートを例として、proxy_protocolフィールドを追加します
server { listen 80 proxy_protocol;
#...
}
}
3. sudo nginx -s reloadコマンドを実行し、Nginxの設定ファイルを再読み込みします。

ステップ3:バックエンドサーバーがクライアントの実際のIPを取得できたかを確認

Nginxをバックエンドサーバーとして使用している場合、Nginxのログを確認することで、クライアントの実際のIPアドレスを正常に取得できたかを判断できます。
Nginxのログファイルのデフォルトパスは:/var/log/nginx/access.logです。
各行のログにおいて、$proxy_protocol_addr変数に対応するIPアドレスがクライアントの実際のIPアドレスです。



ヘルプとサポート

この記事はお役に立ちましたか?

フィードバック