Todos os produtos
Search
Central de documentação

Alibaba Cloud Service Mesh:Enable ASM gateway to obtain client IP by configuring XFF request header

Última atualização: Sep 29, 2026

Quando as requisições passam por proxies, balanceadores de carga ou nós CDN antes de chegar ao gateway ASM, o gateway enxerga apenas o endereço IP do último proxy. O cabeçalho X-Forwarded-For (XFF) preserva o IP original do cliente registrando o endereço de cada salto ao longo da cadeia de proxies. Configure o gateway ASM para extrair o IP correto do cliente a partir desse cabeçalho e aprimorar a segurança, otimizar a experiência do usuário ou atender a requisitos de conformidade em cenários de marketing, auditoria e prevenção de fraudes.

O ASM oferece dois métodos de extração: contagem de proxies confiáveis para topologias fixas e exclusão por CIDR confiável para topologias variáveis.

Importante

Este recurso exige a versão ASM 1.24.6.83 ou posterior. Caso sua instância execute uma versão anterior, upgrade your ASM instance primeiro.

Como o XFF funciona

Cada proxy no caminho da requisição acrescenta o endereço IP do cliente conectado ao cabeçalho XFF. Quando a requisição chega ao gateway ASM, o cabeçalho contém uma lista separada por vírgulas:

X-Forwarded-For: <client IP>, <proxy 1 IP>, <proxy 2 IP>, ...

O endereço mais à esquerda é, geralmente, o IP original do cliente. O gateway precisa distinguir os endereços de clientes dos endereços de proxies para extrair o correto. O ASM oferece duas abordagens:

Abordagem

Quando usar

Chave de configuração

Contagem de proxies confiáveis

Todas as requisições passam pelo mesmo número de proxies (topologia fixa)

numTrustedProxies

Exclusão por CIDR confiável

Clientes diferentes passam por números distintos de proxies (topologia variável)

xffTrustedCidrs

Pré-requisitos

Antes de começar, verifique se você possui:

  • Uma instância ASM executando a versão 1.24.6.83 ou posterior

  • kubectl configurado com o kubeconfig do ASM e conectividade com o plano de controle do ASM

  • Conhecimento da topologia da cadeia de proxies entre seus clientes e o gateway ASM

Configure a contagem de proxies confiáveis (topologia fixa)

Use este método quando todas as requisições passam pelo mesmo número de proxies antes de chegar ao gateway ASM.

Como a contagem funciona

O gateway conta da direita para a esquerda na lista XFF, avançando numTrustedProxies posições, e considera o próximo endereço como o IP do cliente.

Exemplo: Três proxies estão posicionados entre o cliente e o gateway. Defina numTrustedProxies como 2 (total de proxies menos 1).

XFF before gateway processing: [1.1.1.1, 2.2.2.2, 3.3.3.3]
                                 ^ client   ^ proxy 1  ^ proxy 2

numTrustedProxies: 2  ->  skip 2 from the right  ->  client IP = 1.1.1.1

Trusted proxy count topology diagram

Passos

  1. Abra o recurso de gateway ASM para edite:

       kubectl -n istio-system edit istiogateway <gateway-name>
  2. Adicione a anotação numTrustedProxies à especificação do pod do gateway: substitua <proxy-count-minus-1> pelo número total de proxies na cadeia menos 1. Para três proxies, defina este valor como 2.

    Aviso

    Esta alteração aciona uma reinicialização gradual dos pods do gateway. Aplique-a durante períodos de baixo tráfego.

       spec:
         podAnnotations:
           proxy.istio.io/config: |
             gatewayTopology:
               numTrustedProxies: <proxy-count-minus-1>
  3. Salve o arquivo. Os pods do gateway reiniciam automaticamente e aplicam a nova configuração.

Comportamento em casos extremos

Cenário

Entrada XFF

**numTrustedProxies**

IP do cliente extraído

Explicação

Normal (3 proxies)

1.1.1.1, 2.2.2.2, 3.3.3.3

2

1.1.1.1

Ignora 2 a partir da direita e usa o próximo

Valor igual ao tamanho do XFF

1.1.1.1, 2.2.2.2, 3.3.3.3

3

3.3.3.3

Retorna ao endereço mais à direita

Valor supera o tamanho do XFF

1.1.1.1, 2.2.2.2

5

2.2.2.2

Retorna ao endereço mais à direita

Importante

Mantenha numTrustedProxies menor que o número de entradas no cabeçalho XFF. Se o valor for maior ou igual à quantidade de entradas, o gateway usará o endereço mais à direita (último), que é um IP de proxy, e não o IP do cliente.

Comportamento no log de acesso

O gateway acrescenta o IP do proxy downstream ao cabeçalho XFF após extrair o IP do cliente. No exemplo com três proxies, o log de acesso exibe uma entrada adicional (4.4.4.4, o IP do último proxy conectado ao gateway). Essa entrada extra não interfere na extração do IP do cliente.

Configure a exclusão por CIDR confiável (topologia variável)

Use este método quando clientes diferentes chegam ao gateway por caminhos com números distintos de proxies.

Como a exclusão por CIDR funciona

Em vez de contar saltos, o gateway percorre a lista XFF da direita para a esquerda e ignora qualquer endereço que corresponda a um bloco CIDR confiável. O primeiro endereço que não corresponde é tratado como o IP do cliente.

Exemplo: O Client1 se conecta por meio do Proxy1 e do Proxy3, enquanto o Client2 se conecta por meio do Proxy2, Proxy3 e Proxy4. Uma contagem fixa de saltos não consegue lidar com ambos os caminhos. Adicione todos os IPs de proxy à lista de CIDRs confiáveis para que o gateway os ignore e encontre o IP correto do cliente independentemente do comprimento do caminho.

Variable topology diagram with trusted CIDR exclusion

Passos

  1. Abra o recurso de gateway ASM para edite:

       kubectl -n istio-system edit istiogateway <gateway-name>
  2. Adicione a anotação xffTrustedCidrs à especificação do pod do gateway com todos os endereços de proxy conhecidos: substitua os CIDRs de exemplo pelos endereços IP reais ou intervalos CIDR dos proxies posicionados à frente do seu gateway.

    Aviso

    Esta alteração aciona uma reinicialização gradual dos pods do gateway. Aplique-a durante períodos de baixo tráfego.

    Nota

    Apenas a notação CIDR é suportada. Endereços IP individuais devem usar o sufixo /32.

       spec:
         podAnnotations:
           proxy.istio.io/config: |
             gatewayTopology:
               xffTrustedCidrs:
               - 2.2.2.2/32
               - 3.3.3.3/32
               - 4.4.4.4/32
               - 5.5.5.5/32
  3. Salve o arquivo. Os pods do gateway reiniciam automaticamente e aplicam a nova configuração.

Referência de parâmetros

Parâmetro

Tipo

Descrição

Restrições

numTrustedProxies

Inteiro

Número de saltos de proxies confiáveis a ignorar a partir da extremidade direita da lista XFF.

Deve ser menor que o número de entradas XFF. Indicado apenas para implantações com topologia fixa.

xffTrustedCidrs

Lista de strings CIDR

Endereços IP ou intervalos de proxies a excluir ao percorrer a lista XFF da direita para a esquerda.

Use notação CIDR. IPs individuais exigem o sufixo /32. Indicado para implantações com topologia variável.

Ambos os parâmetros são defina em gatewayTopology, dentro da anotação de pod proxy.istio.io/config do recurso de gateway ASM (istiogateway).

Tópicos relacionados