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 バイトを占有します。具体的な位置は次の図に示されています。
ポート番号:
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 バイトを占有します。具体的な位置は次の図に示されています。

ポート番号:
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 バイトを占有します。具体的な位置は次の図に示されています。

ポート番号:
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 アドレスを取得する」をご参照ください。