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

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

最終更新日:Jun 26, 2025

Anti-DDoS Proxy に Web サイトサービスを追加すると、Anti-DDoS Proxy はサービス宛てのトラフィックをスクラブしてから、オリジンサーバーに転送します。オリジンサーバーは、X-Forwarded-For ヘッダーから、または TCP Option Address (TOA) カーネルモジュールをインストールすることによって、リクエストの送信元 IP アドレスを取得できます。このトピックでは、リクエストの送信元 IP アドレスを取得する方法について説明します。

ポートを使用して提供される非 Web サイトサービス

シナリオによっては、TOA カーネルモジュールをインストールして、リクエストの送信元 IP アドレスを取得できます。詳細については、「リクエストの送信元 IP アドレスを取得するために TOA カーネルモジュールをインストールする」をご参照ください。TOA カーネルモジュールをインストールできない場合は、テクニカルサポートに連絡してください。

Anti-DDoS Proxy インスタンス(IPv4 アドレス)

TCP OPTION フィールドの使用法: レイヤー 4 の非 Web サイトサービスを Anti-DDoS Proxy に追加すると、Anti-DDoS Proxy は 3 ウェイハンドシェイクプロセスを使用してオリジンサーバーに接続します。最後の ACK パケットの TCP Option に、オプションタイプ 254、送信元ポート番号、送信元 IP などの情報が挿入され、合計 8 バイトを占有します。具体的な位置は次の図に示されています。image

  • ポート番号: Magic Number フィールドは、16 進数のポート番号を表します。この例では、c4 06 を 10 進数に変換して、対応するポート番号 50182 を取得します。

  • 送信元 IP アドレス: ポート番号の後の 4 つの連続したバイトは、16 進数の送信元 IP アドレスを表します。この例では、65 ** ** 85 を 10 進数に変換して、対応する送信元 IP アドレス 101.***.***.133 を取得します。

Anti-DDoS Proxy インスタンス(IPv6 アドレス)

V6tov4 モード

TCP OPTION フィールドの使用法: レイヤー 4 の非 Web サイトサービスを Anti-DDoS Proxy に追加すると、Anti-DDoS ノードとオリジンサーバーは 3 ウェイハンドシェイクを完了します。最後の ACK パケットの TCP Option に、オプションタイプ 249、送信元ポート番号、送信元 IP、Anti-DDoS IP などの情報が挿入され、合計 40 バイトを占有します。具体的な位置は次の図に示されています。

image

  • ポート番号: Payload の最初の 2 バイトは、16 進数のポート番号を表します。この例では、9d7d です。これを 10 進数に変換して、対応するポート番号 40317 を取得します。

  • 送信元 IP アドレス: ポート番号の後の連続した 16 バイトは、16 進数の送信元 IP アドレスを表し、IPv6 アドレスに直接対応します。この例では、2401*****0f87 です。これは、送信元 IP アドレスが 2401:b180:100*:*:*:f87:5d96:f87 であることを意味します。

    説明

    Payload のポート番号と送信元 IP アドレス以外の残りの 20 バイトには、Anti-DDoS Proxy の IP 情報が含まれています。

V6tov6 シナリオ

TCP OPTION フィールドの使用法: レイヤー 4 の非 Web サイトサービスを Anti-DDoS Proxy に追加すると、Anti-DDoS ノードとオリジンサーバーは 3 ウェイハンドシェイクを完了します。最後の ACK パケットの TCP Option に、オプションタイプ 253、送信元ポート番号、送信元 IP 情報が挿入され、合計 20 バイトを占有します。具体的な位置は次の図に示されています。

image

  • ポート番号: Experiment Identifier フィールドは、16 進数のポート番号を表します。この例では、eb98 です。これを 10 進数に変換して、対応するポート番号 60312 を取得します。

  • 送信元 IP アドレス: Data フィールドは、16 進数の送信元 IP アドレスを表し、IPv6 アドレスに直接対応します。この例では、2401*****0f87 です。これは、送信元 IP アドレスが 2401:b180:100*:*:*:f87:5d96:f87 であることを意味します。

重要

Anti-DDoS Proxy インスタンスのバックツーオリジン CIDR ブロックからのトラフィックがブロックされないようにするには、インスタンスのバックツーオリジン CIDR ブロックをオリジンサーバーのホワイトリストに追加することをお勧めします。Anti-DDoS Proxy インスタンスのバックツーオリジン CIDR ブロックを照会する方法の詳細については、「バックツーオリジン CIDR ブロックがオリジンサーバーにアクセスできるようにする」をご参照ください。

  • オリジンサーバーが Elastic Compute Service (ECS) インスタンスの場合は、Anti-DDoS Proxy インスタンスのバックツーオリジン CIDR ブロックを ECS インスタンスのセキュリティグループに追加します。詳細については、「セキュリティグループルールを追加する」をご参照ください。

  • オリジンサーバーが Server Load Balancer (SLB) インスタンスの後にデプロイされた ECS インスタンスの場合は、Anti-DDoS Proxy インスタンスのバックツーオリジン CIDR ブロックを SLB インスタンスのホワイトリストに追加します。詳細については、「アクセス制御を有効にする」をご参照ください。

ドメイン名を使用して提供される Web サイトサービス

サービスリクエストが Anti-DDoS Proxy インスタンスなどのレイヤー 7 プロキシサーバーによってオリジンサーバーに転送される場合、オリジンサーバーによって取得される送信元 IP アドレスは、Anti-DDoS Proxy インスタンスのバックツーオリジン IP アドレスです。送信元 IP アドレスは、X-Forwarded-For ヘッダーに記録されます。フォーマットは X-Forwarded-For: 送信元 IP アドレス, Anti-DDoS Proxy のバックツーオリジン IP アドレス です。

リクエストが複数のプロキシサーバーを通過する場合、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

    Request.ServerVariables("HTTP_X_FORWARDED_FOR")
  • ASP.NET (C#)

    Request.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 アドレスを取得する」をご参照ください。