Tous les produits
Search
Centre de documentation

Global Accelerator:Preserve client source IP

Dernière mise à jour :Aug 12, 2026

Lorsque vous utilisez Global Accelerator (GA) pour accélérer vos services applicatifs, activez la préservation de l'IP cliente afin de récupérer l'adresse IP d'origine du client. Pour les écouteurs de couche 7 (HTTP/HTTPS), cette adresse provient du champ X-Forwarded-For de l'en-tête de requête HTTP. Pour les écouteurs de couche 4 (TCP/UDP), la récupération s'effectue automatiquement ou nécessite la prise en charge du Proxy Protocol par votre service backend, selon le type de ce dernier.

Remarque

La préservation de l'IP cliente est prise en charge uniquement pour les écouteurs à routage intelligent. Cette fonctionnalité n'est pas activée par défaut pour les écouteurs à routage personnalisé. Pour l'activer sur un écouteur à routage personnalisé, contactez votre gestionnaire de compte.

Écouteurs HTTP et HTTPS

Méthode

Pour les écouteurs HTTP et HTTPS, Global Accelerator (GA) utilise la fonctionnalité Preserve Client IP afin de récupérer l'IP cliente d'origine. Cette option est activée par défaut.

GA stocke l'adresse IP cliente d'origine dans le champ X-Forwarded-For de l'en-tête de requête HTTP. Configurez votre serveur backend pour extraire cette adresse : la première IP listée dans ce champ correspond à l'adresse IP cliente d'origine.

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

Procédure

Cette procédure prend pour exemple un serveur Nginx 1.20.1 exécuté sous Alibaba Cloud Linux 3. Les étapes peuvent varier selon votre environnement.

  1. Exécutez la commande nginx -V | grep http_realip_module pour vérifier si le module http_realip_module est installé. Nginx utilise ce module pour analyser les enregistrements X-Forwarded-For.

    Si la sortie contient --with-http_realip_module, le module est bien installé. Passez à l'étape suivante.

    Exemple de sortie si le module http_realip_module est installé

    nginx version: nginx/1.20.1
    built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) 
    built with OpenSSL 1.1.1k  FIPS 25 Mar 2021
    TLS SNI support enabled
    configure arguments: --prefix=/usr/share/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/var/lib/nginx/tmp/client_body --http-proxy-temp-path=/var/lib/nginx/tmp/proxy --http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi --http-uwsgi-temp-path=/var/lib/nginx/tmp/uwsgi --http-scgi-temp-path=/var/lib/nginx/tmp/scgi --pid-path=/run/nginx.pid --lock-path=/run/lock/subsys/nginx --user=nginx --group=nginx --with-compat --with-debug --with-file-aio --with-google_perftools_module --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_degradation_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module=dynamic --with-http_mp4_module --with-http_perl_module=dynamic --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-http_xslt_module=dynamic --with-mail=dynamic --with-mail_ssl_module --with-pcre --with-pcre-jit --with-stream=dynamic --with-stream_ssl_module --with-stream_ssl_preread_module --with-threads --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic' --with-ld-opt='-Wl,-z,relro -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -Wl,-E'
    
    Le module http_realip_module est disponible depuis Nginx 1.0.4 (2011). Si vous utilisez une version antérieure, sauvegardez votre configuration et mettez à jour Nginx.
    Si le module http_realip_module n'est pas installé, recompilez Nginx avec ce module ou réinstallez Nginx via un gestionnaire de paquets tel que yum.
  2. Modifiez le fichier de configuration Nginx. Exécutez nginx -t pour localiser le chemin du fichier. Par défaut, il s'agit de /etc/nginx/nginx.conf.

    http {
      # Make sure that the log_format includes $http_x_forwarded_for. This variable records the value of X-Forwarded-For.
      log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
      
      # ...
    }
    
  3. Exécutez la commande sudo nginx -s reload pour recharger la configuration Nginx.

  4. Récupérez l'adresse IP cliente d'origine.

    Consultez le journal d'accès Nginx pour confirmer la bonne récupération de l'adresse IP cliente d'origine.

    Exécutez la commande tail -n <number_of_lines> <log_path>. Dans l'entrée de journal retournée, vérifiez le champ correspondant à la variable $http_x_forwarded_for. La première adresse IP correspond à l'IP cliente d'origine.

    Dans cet exemple, le chemin du fichier de journal Nginx par défaut est /var/log/nginx/access.log.

    [root@izxxx ~]# tail -n 1 /var/log/nginx/access.log
    172.20xxx - - [17/Oct/2024:17:46:49 +0800] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0" "47.243.xxx"
    Remarque

    Pour éviter que les journaux de vérification d'état n'écrasent les entrées contenant les adresses IP clientes d'origine, consultez plusieurs entrées de journal à la fois ou augmentez temporairement l'intervalle de vérification d'état.

Écouteurs TCP

Méthodes

Pour récupérer l'adresse IP cliente d'origine, activez la fonctionnalité Preserve Client IP et sélectionnez une méthode de récupération.

Les méthodes prises en charge varient selon le type de service backend.

  • Automatic : GA transfère directement l'adresse IP cliente d'origine au service backend. L'adresse IP récupérée par le serveur backend correspond alors à l'IP cliente d'origine.

  • Proxy Protocol : Le serveur backend doit prendre en charge le Proxy Protocol pour obtenir l'adresse IP cliente d'origine.

    Qu'est-ce que le Proxy Protocol ?

    Le Proxy Protocol est un protocole permettant de transmettre les informations de connexion réseau originales d'un client d'un serveur proxy vers un serveur backend.

    En règle générale, lorsqu'un serveur proxy transfère une requête client, il réécrit l'en-tête de la requête et remplace l'adresse IP et le port d'origine du client par les siens. Cela empêche le serveur backend d'obtenir les informations réseau initiales du client.

    Avec le Proxy Protocol, le serveur proxy encapsule les informations de connexion originales du client dans un en-tête Proxy Protocol et les ajoute au début des données transférées au serveur backend. Ce dernier peut ensuite analyser cet en-tête pour obtenir les informations d'origine, telles que l'adresse IP source, le port source et le protocole.

    Cela permet au serveur backend d'assurer une journalisation plus précise, ainsi qu'un meilleur contrôle d'accès et une surveillance efficace du trafic.

    Important
    • Le bon fonctionnement du Proxy Protocol nécessite sa prise en charge simultanée par le serveur proxy et le serveur backend. Si votre serveur backend ne peut pas analyser le Proxy Protocol, l'activation de cette fonctionnalité entraînera probablement des erreurs d'analyse et affectera la disponibilité du service.

    • GA utilise le Proxy Protocol dans ses écouteurs pour transmettre les informations de connexion d'origine (telles que l'IP source, l'IP de destination, le port source et le port de destination) en les préfixant au flux de données TCP. Ce processus ne supprime ni n'écrase aucune donnée existante.

    • GA prend uniquement en charge le Proxy Protocol v1, qui est limité au protocole TCP. Pour plus d'informations, consultez The PROXY protocol.

Services backend Alibaba Cloud

Type de service backend

Prise en charge de la préservation d'IP

Méthodes prises en charge

Instance ECS

Pris en charge

L'instance ECS doit se trouver dans un Virtual Private Cloud (VPC) et son groupe de sécurité doit autoriser le trafic provenant de toutes les adresses IP clientes d'origine.

  • Automatic

  • Proxy Protocol

Application Load Balancer (ALB)

Non pris en charge

Non applicable

Network Load Balancer (NLB)

Pris en charge

  • Automatic (pris en charge uniquement si le serveur backend de l'instance NLB est une instance ECS ou une ENI)

  • Proxy Protocol

Classic Load Balancer (CLB)

Pris en charge

Le groupe de sécurité du serveur backend de l'instance CLB doit autoriser le trafic provenant de toutes les adresses IP clientes d'origine.

Notez que les serveurs backend ne peuvent pas obtenir les adresses IP clientes d'origine dans les scénarios suivants :

  • Les serveurs backend de votre instance CLB sont des instances ECS déployées dans un réseau classique.

  • L'écouteur de votre instance CLB utilise le protocole HTTP ou HTTPS.

  • Automatic (pris en charge uniquement si le serveur backend de l'instance CLB est une instance ECS ou une ENI)

  • Proxy Protocol

Object Storage Service (OSS)

Non pris en charge

Non applicable

Elastic Network Interface (ENI)

Pris en charge

Le groupe de sécurité de l'ENI doit autoriser le trafic provenant de toutes les adresses IP clientes d'origine.

  • Automatic

  • Proxy Protocol

Custom private IP

Pris en charge

Proxy Protocol

Alibaba Cloud Public IP

Avertissement

Si un endpoint utilise une adresse IP publique Alibaba Cloud, le détachement de cette IP de son instance d'origine pour la rattacher à une autre peut entraîner l'échec de la préservation de l'IP cliente et interrompre le trafic. Pour rétablir cette fonctionnalité pour l'endpoint, supprimez-le puis recréez-le, ou contactez votre gestionnaire de compte.

Rattachée à une instance ECS de type VPC

Pris en charge

  • Automatic

  • Proxy Protocol

Rattachée à une instance NLB

Pris en charge

  • Automatic (pris en charge uniquement si le serveur backend de l'instance NLB est une instance ECS ou une ENI)

  • Proxy Protocol

Rattachée à une instance ALB

Non pris en charge

Non applicable

Rattachée à une instance CLB privée

Pris en charge

  • Automatic (pris en charge uniquement si le serveur backend de l'instance CLB est une instance ECS ou une ENI)

  • Proxy Protocol

Rattachée à une ENI

Pris en charge

  • Automatic

  • Proxy Protocol

Rattachée à une passerelle NAT publique

Pris en charge

Proxy Protocol

Services backend externes

Type de service backend

Prise en charge de la préservation d'IP

Méthodes prises en charge

Custom public IP

Pris en charge

Proxy Protocol

Custom Domain Name

Pris en charge

Remarque

Si un client accède à GA via une adresse IP accélérée IPv6, ou si GA communique avec le service backend en IPv6, vous devez utiliser le Proxy Protocol pour récupérer l'adresse IP cliente d'origine.

Procédure

Cette procédure prend pour exemple un serveur Nginx 1.20.1 exécuté sous Alibaba Cloud Linux 3. Les étapes peuvent varier selon votre environnement.

Récupération automatique

  1. Activez la préservation de l'IP cliente.

    1. Connectez-vous à la console Global Accelerator (GA).

    2. Sur la page Instances, localisez l'instance GA cible et cliquez sur Configure Listener dans la colonne Actions.

    3. Dans l'onglet Listener, localisez l'écouteur TCP cible et cliquez sur Edit Listener dans la colonne Actions.

    4. Sur la page Configure Listener & Protocol, cliquez sur Next.

    5. Sur la page Configure Endpoint Group, sélectionnez Maintain dans la liste déroulante Preserve Client IP, puis cliquez sur Next.

      Si le service backend est déployé sur Alibaba Cloud, l'option Retrieve Client IP Address est définie sur Automatically Retrieve Client IP par défaut.

      Définissez Preserve Client IP sur Preserve. Si un client IPv6 accède au service backend, sélectionnez Proxy Protocol comme Method to Retrieve Originating Client IP.

    6. Sur la page Configuration Review, confirmez la configuration et cliquez sur Submit.

  2. Vérifiez le fichier de configuration Nginx.

    Exécutez la commande nginx -t pour trouver le chemin du fichier de configuration. Le chemin par défaut est généralement /etc/nginx/nginx.conf.

    Remarque

    Pour traiter le trafic HTTP ou HTTPS, le serveur Nginx doit prendre en charge le module http{}. Pour traiter le trafic TCP, il doit également prendre en charge le module stream{}.

    Le module stream{} a été introduit dans Nginx 1.9.0 et n'est pas installé par défaut. Vous devez le compiler et l'installer pour utiliser le module stream{}.

    # Process HTTP traffic
    http {
      # Default configuration
      log_format  main  '$remote_addr- $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
      access_log  /var/log/nginx/access.log  main;
      # Example: listener on port 80
      server {
            listen 80;
            #...
           }
    }
    # Process TCP traffic (add if needed)
    stream {
        log_format main_stream '$remote_addr - [$time_local] '
                            '"$protocol" $status $bytes_sent $bytes_received '
                            '"$session_time"';
        access_log  /var/log/nginx/stream_access.log  main_stream;
    # Example: listener on port 4000
        server {
            listen 4000;
            #...
        }
    }
  3. Récupérez l'adresse IP cliente d'origine.

    • Méthode 1 : Consultez le journal Nginx pour vérifier l'adresse IP cliente d'origine.

      Exécutez la commande tail -n <number_of_lines> <log_path>. Dans l'entrée de journal retournée, la première adresse IP, correspondant à la variable $remote_addr, est l'adresse IP cliente d'origine.

      • Pour le trafic HTTP :

        Dans cet exemple, le chemin du fichier de journal est /var/log/nginx/access.log.

        [root@xxx ~]# tail -n 1 /var/log/nginx/access.log
        47.243.xxx.xxx - [21/Oct/2024:14:01:06 +0800] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 xxx"
      • Pour le trafic TCP :

        Dans cet exemple, le chemin du fichier de journal est /var/log/nginx/stream_access.log.

        [root@iZrxxx      xxx]# tail -n 5 /var/log/nginx/stream_access.log
        121.40.xxx.xxx [24/Jan/2025:10:29:34 +0800] "TCP" 200 0 16 "3.217"
        121.40.xxx.xxx [24/Jan/2025:10:29:44 +0800] "TCP" 200 0 15 "2.935"
        121.40.xxx.xxx [24/Jan/2025:10:29:57 +0800] "TCP" 200 0 7 "4.908"
        121.40.xxx.xxx [24/Jan/2025:10:30:16 +0800] "TCP" 200 0 26 "10.474"
        121.40.xxx.xxx [24/Jan/2025:10:30:25 +0800] "TCP" 200 0 10 "3.368"
    • Méthode 2 : Capturez des paquets de données pour vérifier l'adresse IP cliente d'origine.

      Exécutez la commande tcpdump tcp port [listener_port] -n -X -s 0 pour inspecter les paquets de données et y trouver l'adresse IP cliente d'origine.

      [root@iZrxxx ~]# tcpdump tcp port 4000 -n -X -s 0
      dropped privs to tcpdump
      tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
      listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
      10:31:59.216390 IP 121.40.xxx.xxx.52352 > 172.20.106.148.terabase: Flags [S], seq 3468880686, win 65535, options [nop,nop,nop,nop,nop,nop,nop,nop,mss 1460,sackOK,TS val 1793314199 ecr 0,nop,wscale 9], length 0
              0x0000:  4500 0044 801a 4000 4006 36a9 7928 f41f  E..D..@.@.6.y(..
              0x0010:  ac14 6a94 cc80 0fa0 cec2 eb2e 0000 0000  ..j.............
              0x0020:  c002 ffff d173 0000 0101 0101 0101 0101  .....s..........
              0x0030:  0204 05b4 0402 080a 6ae3 cd97 0000 0000  ........j.......
              0x0040:  0103 0309                                 ....
      10:31:59.216419 IP 172.20.106.148.terabase > 121.40.xxx.xxx.52352: Flags [S.], seq 28697778872, ack 3468880687, win 65160, options [mss 1460,sackOK,TS val 1603313796 ecr 1793314199,nop,wscale 7], length 0
              0x0000:  4500 003c 0000 4000 4006 b6cb ac14 6a94  E..<..@.@.....j.
              0x0010:  7928 f41f 0fa0 cc80 ab0d 59b8 cec2 eb2f  y(........Y..../
              0x0020:  a012 fe88 841f 0000 0204 05b4 0402 080a  ................
              0x0030:  5f90 a084 6ae3 cd97 0103 0307             _...j.......

Proxy Protocol

  1. Activez la préservation de l'IP cliente.

    1. Connectez-vous à la console Global Accelerator (GA).

    2. Sur la page Instances, localisez l'instance GA cible et cliquez sur Configure Listener dans la colonne Actions.

    3. Dans l'onglet Listener, localisez l'écouteur TCP cible et cliquez sur Edit Listener dans la colonne Actions.

    4. Sur la page Configure Listener & Protocol, cliquez sur Next.

    5. Sur la page Configure Endpoint Group, sélectionnez Maintain dans la liste déroulante Preserve Client IP, puis cliquez sur Next.

      Si le service backend est déployé en dehors d'Alibaba Cloud, l'option Retrieve Client IP Address est définie sur Proxy Protocol par défaut.

      Sur la page Configure Endpoint Group, définissez Preserve Client IP sur Preserve.

    6. Sur la page Configuration Review, confirmez la configuration et cliquez sur Submit.

  2. Modifiez le fichier de configuration Nginx comme illustré dans l'exemple ci-dessous et enregistrez les modifications.

    Exécutez la commande nginx -t pour trouver le chemin du fichier de configuration. Le chemin par défaut est généralement /etc/nginx/nginx.conf, mais le chemin réel dépend de votre environnement.

    Remarque

    Pour traiter le trafic HTTP ou HTTPS, le serveur Nginx doit prendre en charge le module http{}. Pour traiter le trafic TCP, il doit également prendre en charge le module stream{}.

    Le module stream{} a été introduit dans Nginx 1.9.0 et n'est pas installé par défaut. Vous devez le compiler et l'installer pour utiliser le module stream{}.

    # Process HTTP traffic
    http {
      # Add the $proxy_protocol_addr variable to the log format to record the originating client IP.
      log_format  main  '$proxy_protocol_addr - $remote_addr- $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';     
      access_log  /var/log/nginx/access.log  main;
      # Enable proxy_protocol parsing on the listener port (port 80 in this example).
      server {
        listen 80   proxy_protocol;
        #...
      }
    }
    # Process TCP traffic (add if needed)
    stream {
        # Add the $proxy_protocol_addr variable to the log format to record the originating client IP.
        log_format  main_stream  '$proxy_protocol_addr - $remote_addr - $protocol [$time_local] '
                                  '$status $bytes_sent $bytes_received $session_time';
        access_log /var/log/nginx/stream_access.log main_stream; 
       # Enable proxy_protocol parsing on the listener port (port 12345 in this example).
        server {
            listen 12345 proxy_protocol;
            #...
        }
    }
  3. Exécutez la commande sudo nginx -s reload pour recharger le fichier de configuration Nginx.

  4. Récupérez l'adresse IP cliente d'origine.

    Consultez le journal Nginx pour vérifier l'adresse IP cliente d'origine.

    Exécutez la commande tail -n <number_of_lines> <log_path>. Dans l'entrée de journal retournée, l'adresse IP correspondant à la variable $proxy_protocol_addr est l'adresse IP cliente d'origine.

    • Pour le trafic HTTP :

      Dans cet exemple, le chemin du fichier de journal est /var/log/nginx/access.log.

      [root@xxx    ~]#  tail -n 1 /var/log/nginx/access.log
      47.243.xxx  - 47.251.xxx - - [21/Oct/2024:16:57:41 +0800] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0"
    • Pour le trafic TCP :

      Dans cet exemple, le chemin du fichier de journal est /var/log/nginx/stream_access.log.

      [root@i-xxx ~]# tail -n 1 /var/log/nginx/stream_access.log
      47.243   47.251    - TCP [23/Oct/2024:17:19:44 +0800] 200 0 1 0.000

Écouteurs UDP

Méthode

Pour récupérer l'adresse IP cliente d'origine, activez la fonctionnalité Preserve Client IP. Pour les écouteurs UDP, cette fonctionnalité prend uniquement en charge la méthode Automatically Retrieve Client IP, où GA transfère directement l'adresse IP cliente d'origine au service backend.

Lorsque vous activez Preserve Client IP pour un écouteur UDP, les limitations suivantes s'appliquent :

  • Seules les instances GA en paiement à l'utilisation sont prises en charge.

    Si votre instance GA en paiement à l'utilisation ne permet pas d'activer la client IP preservation pour les écouteurs UDP, il est possible que la version de l'instance ne prenne pas en charge cette fonctionnalité. Pour l'utiliser, contactez votre gestionnaire de compte afin de demander une mise à niveau de l'instance.

  • Cette option est prise en charge uniquement lorsque le Backend Service Type est ECS , ENI ou NLB . Pour les services backend de type NLB, la fonctionnalité Preserve Client IP n'est pas activée par défaut. Pour l'utiliser, contactez votre gestionnaire de compte.

  • Les serveurs backend ne peuvent récupérer les adresses IP d'origine que pour des clients de la même version IP (IPv4 vers IPv4 et IPv6 vers IPv6).

Procédure

Cette procédure prend pour exemple un serveur Nginx 1.20.1 exécuté sous Alibaba Cloud Linux 3. Les étapes peuvent varier selon votre environnement.

  1. Activez la préservation de l'IP cliente.

    1. Connectez-vous à la console Global Accelerator (GA).

    2. Sur la page Instances, localisez l'instance GA cible et cliquez sur Configure Listener dans la colonne Actions.

    3. Dans l'onglet Listener, localisez l'écouteur UDP cible et cliquez sur Edit Listener dans la colonne Actions.

    4. Sur la page Configure Listener & Protocol, cliquez sur Next.

    5. Sur la page Configure Endpoint Group, sélectionnez Maintain dans la liste déroulante Preserve Client IP, puis cliquez sur Next.

      L'option Retrieve Client IP Address est définie sur Automatic par défaut.

    6. Sur la page Configuration Review, confirmez la configuration et cliquez sur Submit.

  2. Vérifiez le fichier de configuration Nginx.

    Exécutez la commande nginx -t pour trouver le chemin du fichier de configuration. Le chemin par défaut est généralement /etc/nginx/nginx.conf.

    Remarque

    Pour traiter le trafic UDP, le serveur Nginx doit prendre en charge le module stream{}.

    Le module stream{} a été introduit dans Nginx 1.9.0 et n'est pas installé par défaut. Vous devez le compiler et l'installer pour utiliser le module stream{}.

    #...
    # Process UDP traffic (make sure to include this module)
    stream {
        log_format main_stream '$remote_addr - [$time_local] '
                            '"$protocol" $status $bytes_sent $bytes_received '
                            '"$session_time"';
        access_log  /var/log/nginx/stream_access.log  main_stream;
    # Example: UDP listener on port 4000
        server {
            listen 4000 udp;
            #...
        }
    }
  3. Récupérez l'adresse IP cliente d'origine.

    • Méthode 1 : Consultez le journal Nginx pour vérifier l'adresse IP cliente d'origine.

      Exécutez la commande tail -n <number_of_lines> <log_path>. Dans l'entrée de journal retournée, la première adresse IP, correspondant à la variable $remote_addr, est l'adresse IP cliente d'origine.

      Dans cet exemple, le chemin du fichier de journal est /var/log/nginx/stream_access.log.

      [root@iZ2zxxx          ~]# tail -n 5 /var/log/nginx/stream_access.log
      47.251.xxx.xxx - [24/Jan/2025:13:37:43 +0800] "UDP" 200 0 12 "600.099"
      47.251.xxx.xxx - [24/Jan/2025:13:39:11 +0800] "UDP" 200 0 12 "600.088"
      47.251.xxx.xxx - [24/Jan/2025:13:39:28 +0800] "UDP" 200 0 14 "600.012"
      47.251.xxx.xxx - [24/Jan/2025:13:39:37 +0800] "UDP" 200 0 14 "600.009"
      47.251.xxx.xxx - [24/Jan/2025:13:41:04 +0800] "UDP" 200 0 14 "600.086"
    • Méthode 2 : Capturez des paquets de données pour vérifier l'adresse IP cliente d'origine.

      Exécutez la commande tcpdump udp port [listener_port] -n -X -s 0 pour inspecter les paquets de données et y trouver l'adresse IP cliente d'origine.

      [root@iz2xxx ~]# tcpdump udp port 4000 -n -X -s 0
      dropped privs to tcpdump
      tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
      listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
      14:04:06.047337 IP 47.251.xxx.xxx 55491 > 10.5.120.213.terabase: UDP, length 14
      0x0000: 4500 002a 6e1e 4000 4011 a221 2ffb 77ae  E..*n.@.@..!/w.
      0x0010: 0a05 78d5 d8c3 0fa0 0016 12fb 4865 6c6c  ..x.........Hell
      0x0020: 6f2c 2055 4450 3032 210a                  o, UDP02!.

FAQ

Dépannage de la préservation de l'IP cliente

  • Pour un écouteur HTTP ou HTTPS, la préservation de l'adresse IP cliente ne fonctionne pas si le serveur backend ne peut pas enregistrer ou traiter l'en-tête X-Forwarded-For.

  • Pour un écouteur TCP :

    • Si votre service backend est déployé sur Alibaba Cloud, la préservation de l'adresse IP cliente ne fonctionne pas si l'instance backend, ou l'instance associée à l'Elastic IP Address (EIP), ne se trouve pas dans un VPC.

    • Si votre service backend est déployé en dehors d'Alibaba Cloud, le serveur backend doit prendre en charge le Proxy Protocol pour récupérer l'adresse IP cliente. Sinon, cette fonctionnalité ne fonctionne pas.

      Lorsque la préservation de l'adresse IP cliente est activée, Global Accelerator utilise le Proxy Protocol pour transférer l'IP cliente. Si votre serveur backend ne prend pas en charge le Proxy Protocol, il ne peut pas analyser correctement le trafic accéléré.

    • Si un client IPv6 accède à un service backend IPv4, le serveur backend doit prendre en charge le Proxy Protocol pour récupérer l'adresse IP cliente. Sinon, cette fonctionnalité ne fonctionne pas.

  • Pour un écouteur UDP, la préservation de l'adresse IP cliente ne fonctionne pas si un client IPv6 accède à un service backend IPv4.

Désactiver la préservation de l'IP cliente

Pour les écouteurs HTTP et HTTPS, la préservation de l'adresse IP cliente est activée par défaut et ne peut pas être désactivée.

Pour les écouteurs TCP et UDP, vous pouvez désactiver cette fonctionnalité dans la console en suivant ces étapes :

  1. Sur la page Instances, localisez l'instance Global Accelerator cible et cliquez sur Configure Listener dans la colonne Actions.

  2. Dans l'onglet Listeners, localisez l'écouteur cible et cliquez sur Edit dans la colonne Actions.

  3. À l'étape Configure Listener & Protocol, cliquez sur Next.

  4. À l'étape Configure Endpoint Group, définissez Preserve Client IP sur Do Not Preserve, puis cliquez sur Next.

  5. À l'étape Configuration Review, vérifiez les paramètres et cliquez sur Submit.

Récupération de l'IP cliente lors de la traduction IPv6 vers IPv4

  • Pour un écouteur HTTP ou HTTPS, l'adresse IP cliente pour les clients IPv4 et IPv6 est disponible uniquement dans le champ X-Forwarded-For de l'en-tête de requête HTTP.

  • Pour un écouteur TCP, seul le Proxy Protocol est pris en charge pour récupérer les adresses IP des clients IPv6. Avec cette méthode, le serveur backend doit prendre en charge le Proxy Protocol pour récupérer l'adresse IP cliente. Sinon, l'accès risque d'échouer.

  • Pour les écouteurs UDP, la récupération des adresses IP des clients IPv6 n'est pas prise en charge.

Documents connexes

Console

API

Lors de l'appel de ces opérations API, utilisez le paramètre EnableClientIPPreservation pour la méthode automatique et le paramètre EnableProxyProtocol pour la méthode Proxy Protocol.