Como o endereço IP do cliente é preservado no AWS Global Accelerator - AWS Global Accelerator

Como o endereço IP do cliente é preservado no AWS Global Accelerator

O AWS Global Accelerator preserva o endereço IP de origem do cliente de forma diferente para instâncias do Amazon EC2, Network Load Balancers e Application Load Balancers:

  • Para um endpoint de instância do EC2, o endereço IP do cliente é preservado para todo o tráfego.

  • Para um endpoint do Network Load Balancer com preservação do endereço IP do cliente, o Global Accelerator trabalha em conjunto com o Network Load Balancer para incluir o endereço IP do cliente original no cabeçalho IP do pacote para que seu aplicativo possa acessá-lo.

  • Para um endpoint do Application Load Balancer com preservação do endereço IP do cliente, o Global Accelerator trabalha em conjunto com o Application Load Balancer para fornecer um cabeçalho X-Forwarded, X-Forwarded-For, que inclui o endereço IP do cliente original para que sua camada da Web possa acessá-lo.

As solicitações HTTP e as respostas HTTP usam campos de cabeçalho para enviar informações sobre as mensagens HTTP. Os campos de cabeçalho são pares de nome-valor separados por dois pontos e separados por um retorno de carro (CR) e um avanço de linha (LF). Um conjunto padrão de campos de cabeçalho HTTP está definido na RFC 2616, Cabeçalhos de mensagem. Há também cabeçalhos HTTP não padrão que são amplamente usados pelos aplicativos. Alguns dos cabeçalhos HTTP não padrão possuem um prefixo X-Forwarded.

Como um Application Load Balancer encerra as conexões TCP de entrada e cria novas conexões com seus destinos de backend, ele não preserva os endereços IP do cliente até o código de destino (como instâncias, contêineres ou código Lambda). O endereço IP de origem que seus destinos veem no pacote TCP é o endereço IP do Application Load Balancer. No entanto, um Application Load Balancer preserva o endereço IP original do cliente removendo-o do endereço de resposta do pacote original e inserindo-o em um cabeçalho HTTP antes de enviar a solicitação ao seu backend por meio de uma nova conexão TCP.

O cabeçalho da solicitação X-Forwarded-For é formatado da seguinte maneira:

X-Forwarded-For: client-ip-address

O exemplo a seguir mostra um cabeçalho de solicitação X-Forwarded-For para um cliente com o endereço IP 203.0.113.7.

X-Forwarded-For: 203.0.113.7

O exemplo a seguir mostra um cabeçalho de solicitação X-Forwarded-For para um cliente com um endereço IPv6 de 2001:DB8::21f:5bff:febf:ce22:8a2e.

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