すべてのプロダクト
Search
ドキュメントセンター

Anti-DDoS:リクエストの送信元IPアドレスの取得

最終更新日:May 22, 2024

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パケットの情報を次の図に示します。 TCP OptionMagic 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アドレスの取得」をご参照ください。