Tous les produits
Search
Centre de documentation

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

Dernière mise à jour :Aug 11, 2026

Lorsque les requêtes transitent par des proxys, des équilibreurs de charge ou des nœuds CDN avant d'atteindre la passerelle ASM, celle-ci ne voit que l'adresse IP du dernier proxy. L'en-tête X-Forwarded-For (XFF) conserve l'adresse IP d'origine du client en enregistrant l'adresse de chaque saut au fur et à mesure que la requête traverse la chaîne de proxys. Configurez la passerelle ASM pour extraire l'adresse IP correcte du client à partir de cet en-tête afin de renforcer la sécurité, d'optimiser l'expérience utilisateur ou de répondre aux exigences de conformité dans les scénarios marketing, d'audit et de lutte contre la fraude.

ASM propose deux méthodes d'extraction : le comptage des proxys de confiance pour les topologies fixes et l'exclusion par plage CIDR de confiance pour les topologies variables.

Important

Cette fonctionnalité nécessite une version ASM 1.24.6.83 ou ultérieure. Si votre instance exécute une version antérieure, mettez à jour votre instance ASM au préalable.

Fonctionnement de l'en-tête XFF

Chaque proxy situé sur le chemin de la requête ajoute l'adresse IP du client connecté à l'en-tête XFF. Lorsque la requête atteint la passerelle ASM, l'en-tête contient une liste séparée par des virgules :

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

L'adresse la plus à gauche correspond généralement à l'adresse IP d'origine du client. La passerelle doit distinguer les adresses des clients de celles des proxys pour extraire la bonne adresse. ASM prend en charge deux approches :

Approche Cas d'utilisation Clé de configuration
Comptage des proxys de confiance Chaque requête traverse le même nombre de proxys (topologie fixe) numTrustedProxies
Exclusion par plage CIDR de confiance Différents clients traversent un nombre variable de proxys (topologie variable) xffTrustedCidrs

Prérequis

Avant de commencer, assurez-vous de disposer des éléments suivants :

  • Une instance ASM exécutant la version 1.24.6.83 ou ultérieure

  • kubectl configuré avec le kubeconfig ASM et une connectivité vers le plan de contrôle ASM

  • Une connaissance de la topologie de la chaîne de proxys entre vos clients et la passerelle ASM

Configurer le comptage des proxys de confiance (topologie fixe)

Utilisez cette méthode lorsque chaque requête traverse le même nombre de proxys avant d'atteindre la passerelle ASM.

Fonctionnement du comptage

La passerelle compte à rebours depuis l'extrémité droite de la liste XFF sur numTrustedProxies positions et considère l'adresse suivante comme l'adresse IP du client.

Exemple : Trois proxys se situent entre le client et la passerelle. Définissez numTrustedProxies sur 2 (nombre total de proxys moins 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

Étapes

  1. Ouvrez la ressource de la passerelle ASM pour modification :

       kubectl -n istio-system edit istiogateway <gateway-name>
  2. Ajoutez l'annotation numTrustedProxies à la spécification du pod de la passerelle : Remplacez <proxy-count-minus-1> par le nombre total de proxys dans la chaîne moins 1. Pour trois proxys, définissez cette valeur sur 2.

    Avertissement

    Cette modification déclenche un redémarrage progressif des pods de la passerelle. Appliquez-la pendant les heures creuses.

       spec:
         podAnnotations:
           proxy.istio.io/config: |
             gatewayTopology:
               numTrustedProxies: <proxy-count-minus-1>
  3. Enregistrez le fichier. Les pods de la passerelle redémarrent automatiquement et appliquent la nouvelle configuration.

Comportement dans les cas limites

Scénario Entrée XFF **numTrustedProxies** Adresse IP du client extraite Explication
Normal (3 proxys) 1.1.1.1, 2.2.2.2, 3.3.3.3 2 1.1.1.1 Ignore 2 adresses depuis la droite, prend la suivante
Valeur égale à la longueur XFF 1.1.1.1, 2.2.2.2, 3.3.3.3 3 3.3.3.3 Se rabat sur l'adresse la plus à droite
Valeur supérieure à la longueur XFF 1.1.1.1, 2.2.2.2 5 2.2.2.2 Se rabat sur l'adresse la plus à droite
Important

Maintenez la valeur numTrustedProxies inférieure au nombre d'entrées dans l'en-tête XFF. Si la valeur est supérieure ou égale au nombre d'entrées, la passerelle utilise l'adresse la plus à droite (la dernière), qui correspond à une adresse IP de proxy et non à celle du client.

Comportement des journaux d'accès

La passerelle ajoute l'adresse IP du proxy descendant à l'en-tête XFF après avoir extrait l'adresse IP du client. Dans l'exemple à trois proxys, le journal d'accès affiche une entrée supplémentaire (4.4.4.4, l'adresse IP du dernier proxy se connectant à la passerelle). Cette entrée supplémentaire n'affecte pas l'extraction de l'adresse IP du client.

Configurer l'exclusion par plage CIDR de confiance (topologie variable)

Utilisez cette méthode lorsque différents clients atteignent la passerelle via un nombre variable de proxys.

Fonctionnement de l'exclusion CIDR

Au lieu de compter les sauts, la passerelle parcourt la liste XFF de droite à gauche et ignore toute adresse correspondant à un bloc CIDR de confiance. La première adresse qui ne correspond pas est considérée comme l'adresse IP du client.

Exemple : Le Client1 se connecte via Proxy1 et Proxy3, tandis que le Client2 se connecte via Proxy2, Proxy3 et Proxy4. Un nombre de sauts fixe ne peut pas gérer ces deux chemins. Ajoutez toutes les adresses IP des proxys à la liste des CIDR de confiance afin que la passerelle les ignore et trouve l'adresse IP correcte du client, quelle que soit la longueur du chemin.

Variable topology diagram with trusted CIDR exclusion

Étapes

  1. Ouvrez la ressource de la passerelle ASM pour modification :

       kubectl -n istio-system edit istiogateway <gateway-name>
  2. Ajoutez l'annotation xffTrustedCidrs à la spécification du pod de la passerelle avec toutes les adresses de proxy connues : Remplacez les exemples CIDR par les adresses IP réelles ou les plages CIDR des proxys situés devant votre passerelle.

    Avertissement

    Cette modification déclenche un redémarrage progressif des pods de la passerelle. Appliquez-la pendant les heures creuses.

    Remarque

    Seule la notation CIDR est prise en charge. Les adresses IP individuelles doivent utiliser le suffixe /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. Enregistrez le fichier. Les pods de la passerelle redémarrent automatiquement et appliquent la nouvelle configuration.

Référence des paramètres

Paramètre Type Description Contraintes
numTrustedProxies Entier Nombre de sauts de proxy de confiance à ignorer depuis l'extrémité droite de la liste XFF. Doit être inférieur au nombre d'entrées XFF. À utiliser uniquement pour les déploiements à topologie fixe.
xffTrustedCidrs Liste de chaînes CIDR Adresses IP ou plages de proxys à exclure lors du parcours de la liste XFF de droite à gauche. Utilisez la notation CIDR. Les adresses IP uniques nécessitent un suffixe /32. À utiliser pour les déploiements à topologie variable.

Les deux paramètres sont définis sous gatewayTopology dans l'annotation de pod proxy.istio.io/config de la ressource de la passerelle ASM (istiogateway).

Rubriques connexes