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: Jun 28, 2026

Quando as requisições passam por proxies, balanceadores de carga ou nós de CDN antes de chegar ao gateway do ASM, o gateway identifica apenas o endereço IP do último proxy. O cabeçalho X-Forwarded-For (XFF) preserva o IP original do cliente e registra o endereço de cada salto conforme a requisição percorre a cadeia de proxies. Configure o gateway do ASM para extrair o IP correto do cliente desse cabeçalho. Isso fortalece a segurança, otimiza a experiência do usuário e atende a requisitos de conformidade em cenários de marketing, auditoria e antifraude.

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 1.24.6.83 ou posterior do ASM. Caso sua instância utilize uma versão anterior, atualize sua instância do ASM primeiro.

Funcionamento do XFF

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

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

Geralmente, o endereço mais à esquerda corresponde ao IP original do cliente. Para extrair o valor correto, o gateway precisa distinguir os endereços dos clientes dos endereços dos proxies. O ASM oferece duas abordagens:

Abordagem

Indicada quando

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

Diferentes clientes passam por quantidades distintas de proxies (topologia variável)

xffTrustedCidrs

Pré-requisitos

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

  • Uma instância do 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 sobre a topologia da cadeia de proxies entre seus clientes e o gateway do ASM

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

Use este método quando todas as requisições passarem pelo mesmo número de proxies antes de alcançar o gateway do ASM.

Como funciona a contagem

O gateway conta retroativamente a partir da extremidade direita da lista XFF, avança numTrustedProxies posições e considera o próximo endereço como o IP do cliente.

Exemplo: Existem três proxies 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

Etapas

  1. Edite o resource do gateway do ASM:

       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

    Essa alteração aciona uma reinicialização gradual dos pods do gateway. Aplique-a fora dos horários de pico.

       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 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

Usa o endereço mais à direita como fallback

Valor excede o tamanho do XFF

1.1.1.1, 2.2.2.2

5

2.2.2.2

Usa o endereço mais à direita como fallback

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 do log de acesso

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

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

Use este método quando diferentes clientes chegarem ao gateway passando por quantidades variadas de proxies.

Funcionamento da exclusão por CIDR

Em vez de contar saltos, o gateway varre 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 corresponder será tratado como o IP do cliente.

Exemplo: O Cliente1 conecta-se via Proxy1 e Proxy3, enquanto o Cliente2 conecta-se via Proxy2, Proxy3 e Proxy4. Uma contagem fixa de saltos não consegue lidar com ambos os caminhos. Adicione todos os IPs dos proxies à lista de CIDRs confiáveis para que o gateway os ignore e encontre o IP correto do cliente, independentemente do tamanho do caminho.

Variable topology diagram with trusted CIDR exclusion

Etapas

  1. Edite o resource do gateway do ASM:

       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 ou intervalos CIDR reais dos proxies à frente do seu gateway.

    Aviso

    Essa alteração aciona uma reinicialização gradual dos pods do gateway. Aplique-a fora dos horários de pico.

    Nota

    Somente a notação CIDR é compatível. 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. Use apenas para implantações de topologia fixa.

xffTrustedCidrs

Lista de strings CIDR

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

Use notação CIDR. IPs únicos exigem o sufixo /32. Recomendado para implantações de topologia variável.

Defina ambos os parâmetros em gatewayTopology na anotação de pod proxy.istio.io/config do resource do gateway do ASM (istiogateway).

Tópicos relacionados