WebサイトサービスをAnti-DDoSプロキシに追加すると、Anti-DDoSプロキシはそのサービス宛てのトラフィックをスクラブし、そのトラフィックを配信元サーバーに転送します。 オリジンサーバーは、X-Forwarded-Forヘッダーから、またはTCP Option Address (TOA) カーネルモジュールをインストールすることによって、リクエストの発信IPアドレスを取得できます。 このトピックでは、リクエストの送信元IPアドレスを取得する方法について説明します。
ポートを使用して提供されるWebサイト以外のサービス
IPv4アドレスを使用するAnti-DDoS Proxyインスタンス: 一部のシナリオでは、TOAカーネルモジュールをインストールして、リクエストの送信元IPアドレスを取得できます。 詳細については、「TOAカーネルモジュールをインストールしてリクエストの送信元IPアドレスを取得する」をご参照ください。 TOAカーネルモジュールをインストールできない場合は、テクニカルサポートにお問い合わせください。
TCP OPTIONフィールドの使用方法: Anti-DDoSプロキシにレイヤ4でWebサイト以外のサービスを追加すると、Anti-DDoSプロキシは3ウェイのハンドシェイクプロセスを使用して配信元サーバーに接続します。 Anti-DDoS Proxyは、TCP OPTIONフィールドに送信元ポート番号やIPアドレスなどの情報を含む最後のACKパケットを送信します。 情報のサイズは8バイトである。 ACKパケットの情報を次の図に示します。
Magic Number
の値は、16進数の文字列である元のポート番号を示します。 この例では、発信ポート番号はc4 06である。 発信IPアドレスを取得することもできます。これは、発信ポート番号に続く次の4バイトで示されます。 この例では、発信IPアドレスは65 **** 85です。 次に、c4 06および65 **** 85を10進値に変換して、発信ポート番号とIPアドレスを取得できます。 この例では、発信ポート番号は50182であり、発信IPアドレスは101.***.***.133である。IPv6アドレスを使用するAnti-DDoS Proxyインスタンス: リクエストの送信元IPアドレスを取得できません。
Anti-DDoS Proxyインスタンスのback-To-origin CIDRブロックからのトラフィックがブロックされないようにするには、インスタンスのback-to-origin CIDRブロックをオリジンサーバーのホワイトリストに追加することを推奨します。 Anti-DDoS Proxyインスタンスのback-to-origin CIDRブロックをクエリする方法の詳細については、「back-to-origin CIDRブロックによるオリジンサーバーへのアクセスの許可」をご参照ください。
オリジンサーバーがElastic Compute Service (ECS) インスタンスの場合、Anti-DDoS Proxyインスタンスのback-to-origin CIDRブロックをECSインスタンスのセキュリティグループに追加します。 詳細については、「セキュリティグループルールの追加」をご参照ください。
オリジンサーバーがserver Load Balancer (SLB) インスタンスの後にデプロイされたECSインスタンスである場合、Anti-DDoS Proxyインスタンスのback-to-origin CIDRブロックをSLBインスタンスのホワイトリストに追加します。 詳細については、「アクセス制御の有効化」をご参照ください。
ドメイン名を使用して提供されるWebサイトサービス
Anti-DDoS proxyインスタンスなどのレイヤー7プロキシサーバーによってサービスリクエストが配信元サーバーに転送される場合、配信元サーバーによって取得される送信元IPアドレスは、Anti-DDoS Proxyインスタンスのback-to-origin IPアドレスです。 発信IPアドレスは、X − Forwarded − For
ヘッダに記録される。 形式はX-Forwarded-For: Originating IP address, Back-to-origin IP address of Anti-DDoS Proxy
です。
リクエストが複数のプロキシサーバーを通過する場合、X-Forwarded-For
ヘッダーには、発信元IPアドレスとすべてのプロキシサーバーのIPアドレスが記録されます。 フォーマットは、X − Forwarded − For: 発信IPアドレス、プロキシサーバ1のIPアドレス、プロキシサーバ2のIPアドレス、プロキシサーバ3のIPアドレス、…
プロキシサーバーは、Web Application Firewall (WAF) インスタンスまたはAlibaba Cloud CDN (CDN) インスタンスです。
一般的なwebアプリケーションサーバーは、X-Forwarded-For
ヘッダーを使用して、リクエストの送信元IPアドレスを取得できます。
次のメソッドを使用して、さまざまなプログラミング言語でX-Forwarded-For
ヘッダーの値を取得できます。
ASP
リクエストServerVariables("HTTP_X_FORWARDED_FOR")
ASP.NET (C#)
リクエスト。ServerVariables["HTTP_X_FORWARDED_FOR"]
PHP
'$_SERVER["HTTP_X_FORWARDED_FOR"]
JSP
request.getHeader("HTTP_X_FORWARDED_FOR")
X-Forwarded-For
ヘッダーでは、最初のコンマ (,) の前のIPアドレスがリクエストの送信元IPアドレスです。
NGINX、IIS 6、IIS 7、Apache、Tomcatなどの一般的なwebサーバーを構成して、送信元IPアドレスを取得することもできます。 詳細については、「クライアントの送信元IPアドレスの取得」をご参照ください。