

# AWS Global Accelerator でクライアント IP アドレスが保存される方法
<a name="preserve-client-ip-address.headers"></a>

AWS Global Accelerator は、Amazon EC2 インスタンス、Network Load Balancer、Application Load Balancer でクライアントのソース IP アドレスを次のように保存します:
+ EC2 インスタンスエンドポイントの場合、すべてのトラフィックのクライアント IP アドレスは保存されます。
+ クライアント IP アドレスが保存されている Network Load Balancer エンドポイントの場合、Global Accelerator は Network Load Balancer と連携して、元のクライアントの IP アドレスをパケットの IP ヘッダーに含めて、アプリケーションがアクセスできるようにします。
+ クライアント IP アドレスが保存されている Application Load Balancer エンドポイントの場合、Global Accelerator は Application Load Balancer と連携して、ウェブ層がアクセスできるように `X-Forwarded-For`、元のクライアントの IP アドレスを含む `X-Forwarded` ヘッダーを提供します。

HTTP リクエストと HTTP レスポンスは、ヘッダーフィールドを使用して HTTP メッセージに関する情報を送信します。ヘッダーフィールドはコロンで区切られた名前と値のペアであり、キャリッジリターン (CR) とラインフィード (LF) で区切ります。HTTP ヘッダーフィールドの標準セットは、「[メッセージヘッダー](https://tools.ietf.org/html/rfc2616#section-4.2)」RFC 2616 で定義されています。アプリケーションで広く使用されている標準以外の HTTP ヘッダーもあります。標準以外の HTTP ヘッダーには、`X-Forwarded` というプレフィックスが付いている場合があります。

Application Load Balancer は着信 TCP 接続を終了し、バックエンドターゲットへの新しい接続を作成するため、ターゲットコード (インスタンス、コンテナ、Lambda コードなど) までのクライアント IP アドレスは保存されません。ターゲットが TCP パケットに表示される送信元 IP アドレスは、Application Load Balancer の IP アドレスです。ただし、Application Load Balancer は、元のパケットの返信アドレスから削除し、HTTP ヘッダーに挿入してから、新しい TCP 接続を介してリクエストをバックエンドに送信することで、元のクライアント IP アドレスを保存します。

`X-Forwarded-For` リクエストヘッダーの形式は次のとおりです:

```
X-Forwarded-For: {{client-ip-address}}
```

以下に、IP アドレスが 203.0.113.7 であるクライアントの `X-Forwarded-For` リクエストヘッダーの例を示します。

```
X-Forwarded-For: 203.0.113.7
```

次の例は、IPv6 アドレスが 2001:DB8::21f:5bff:febf:ce22:8a2e であるクライアントの `X-Forwarded-For` リクエストヘッダーを示しています。

```
X-Forwarded-For: 2001:DB8::21f:5bff:febf:ce22:8a2e
```