Lorsque vous ajoutez un service TCP à Anti-DDoS Proxy pour le protéger, celui-ci nettoie le trafic entrant et le transfère vers votre serveur d'origine. Comme le proxy s'intercale entre le client et votre serveur, ce dernier voit l'adresse IP du proxy au lieu de l'adresse IP réelle du client. Pour retrouver la visibilité sur les adresses IP d'origine, installez le module noyau TCP Option Address (TOA) sur votre serveur d'origine.
Cette rubrique concerne les serveurs d'origine sous Linux. Trois méthodes d'installation sont disponibles : choisissez celle qui correspond à votre système d'exploitation.
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
Un serveur d'origine exécutant une distribution Linux prise en charge
Un service non web basé sur TCP ajouté à Anti-DDoS Proxy via des ports (les services basés sur UDP ne sont pas pris en charge)
Un accès Internet sur le serveur d'origine pour télécharger les packages d'installation
Les permissions
sudosi vous n'êtes pas l'utilisateur root
Pour les services web, consultez Obtenir les adresses IP d'origine des requêtes.
Scénarios pris en charge
| Scénario | Description |
|---|---|
| Anti-DDoS Proxy - instance ECS | Le serveur d'origine est déployé sur une instance Elastic Compute Service (ECS). Le trafic est nettoyé par Anti-DDoS Proxy et transféré vers l'instance ECS. |
| Anti-DDoS Proxy - instance Server Load Balancer (SLB) de couche 4 - instance ECS | Le serveur d'origine est déployé sur une instance ECS. Le trafic est nettoyé par Anti-DDoS Proxy, puis une instance SLB de couche 4 le transfère vers l'instance ECS. |
| Anti-DDoS Proxy - Serveur dans votre centre de données | Le serveur d'origine est déployé dans votre centre de données. Le trafic est nettoyé par Anti-DDoS Proxy et transféré vers le serveur du centre de données. |
Choisir une méthode d'installation
Testez d'abord l'installation dans un environnement hors production. Si l'environnement reste stable, procédez à l'installation en production.
| Méthode | Systèmes d'exploitation pris en charge | Quand l'utiliser |
|---|---|---|
| Méthode 1 : Charger le module VTOA via modprobe | Alibaba Cloud Linux 3 uniquement | Méthode la plus simple ; aucune compilation requise |
| Méthode 2 : Compiler à partir du code source | CentOS, Ubuntu, Debian et autres distributions Linux | À utiliser lorsque la méthode 1 ou la méthode 3 ne s'applique pas |
| Méthode 3 : Installer via RPM Package Manager (RPM) | Red Hat Linux, CentOS 6.x, CentOS 7.x | Privilégiée pour les distributions basées sur RPM |
Méthode 1 : Charger le module noyau VTOA via modprobe
Cette méthode s'applique uniquement à Alibaba Cloud Linux 3.
(Facultatif) Sauvegardez le module noyau TOA intégré. En cas d'échec du redémarrage, vous pourrez restaurer votre système d'exploitation en revenant au noyau d'origine.
-
Chargez le module noyau VTOA.
modprobe vtoa -
Vérifiez que le module VTOA est chargé.
lsmod | grep vtoa -
Configurez le chargement automatique du module VTOA au démarrage.
Créez
/etc/sysconfig/modules/vtoa.modulesavec le contenu suivant : ``bash #!/bin/bash modprobe vtoa > /dev/null 2>&1``Accordez les permissions d'exécution au fichier. ``
bash sudo chmod +x /etc/sysconfig/modules/vtoa.modules``
Méthode 2 : Compiler et charger le module noyau TOA à partir du code source
Cette méthode fonctionne sur la plupart des distributions Linux, y compris CentOS, Ubuntu et Debian.
(Facultatif) Sauvegardez le module noyau TOA intégré. En cas d'échec du redémarrage, vous pourrez restaurer votre système d'exploitation en revenant au noyau d'origine.
-
Téléchargez le package de code source TOA. Votre serveur doit avoir accès à Internet pour télécharger ce fichier. Sélectionnez le fichier source en fonction de votre version de noyau :
Version du noyau Fichier source 2.x toa_kernel2.x3.x toa_kernel3.x4.x ou 5.x toa_kernel_common -
Installez l'environnement de compilation (gcc, kernel-headers et kernel-devel).
CentOS : ``
bash yum install gcc kernel-headers kernel-devel -y``Ubuntu ou Debian : ``
bash apt-get install gcc linux-headers-$(uname -r) -y``
ImportantSi la commande ci-dessus échoue sur Debian, téléchargez manuellement les en-têtes précompilés. L'exemple suivant utilise Debian 11.11 64 bits avec la version de noyau 5.10.0-33-amd64.
Téléchargez Debian_11.11_5.10.0-33-amd64.zip.
-
Installez les packages dans l'ordre :
sudo dpkg -i linux-headers-5.10.0-33-common_5.10.226-1_all.deb sudo dpkg -i linux-kbuild-5.10_5.10.237-1_amd64.deb sudo dpkg -i linux-compiler-gcc-10-x86_5.10.237-1_amd64.deb sudo dpkg -i linux-headers-5.10.0-33-amd64_5.10.226-1_amd64.deb
-
Compilez le module noyau TOA. Décompressez le package de code source, accédez au dossier approprié et exécutez
make. Si aucun avertissement ni erreur n'apparaît, la compilation a réussi. Confirmez quetoa.koest présent dans le répertoire actuel.Pour charger le module noyau TOA sur un autre serveur, copiez le fichier
toa.kosur ce serveur et suivez les étapes restantes.# Navigate to the folder that matches your kernel version: # Kernel 2.x: cd toa_kernel2.x/ # Kernel 3.x: cd toa_kernel3.x/ # Kernel 4.x or 5.x: cd toa_kernel_common/ cd toa_kernel3.x/ make -
Chargez le module noyau TOA.
mv toa.ko /lib/modules/`uname -r`/kernel/net/netfilter/ipvs/toa.ko && depmod insmod /lib/modules/`uname -r`/kernel/net/netfilter/ipvs/toa.ko -
Vérifiez que le module TOA est chargé.
lsmod | grep toa -
Configurez le chargement automatique du module TOA au démarrage.
-
CentOS :
Créez
/etc/sysconfig/modules/toa.modulesavec le contenu suivant : ``bash #!/bin/bash if [ -e /lib/modules/uname -r/kernel/net/netfilter/ipvs/toa.ko ] ; then insmod /lib/modules/uname -r/kernel/net/netfilter/ipvs/toa.ko > /dev/null 2>&1 fi``Accordez les permissions d'exécution au fichier. ``
bash sudo chmod +x /etc/sysconfig/modules/toa.modules``
Ubuntu ou Debian : Créez
/etc/modules-load.d/toa.confavec le contenu suivant : ``toa``
-
-
Redémarrez le système d'exploitation.
sudo reboot
Méthode 3 : Installer le module noyau TOA via RPM
Systèmes d'exploitation pris en charge :
Red Hat Linux
CentOS 6.x
CentOS 7.x
(Facultatif) Sauvegardez le module noyau TOA intégré. En cas d'échec du redémarrage, vous pourrez restaurer votre système d'exploitation en revenant au noyau d'origine.
-
Téléchargez le fichier d'installation pour votre système d'exploitation. Votre serveur doit avoir accès à Internet pour télécharger ce fichier.
CentOS 7.x : kernel-3.10.0-957.21.3.el7.toa.x86_64.rpm
-
CentOS 6.x ou Red Hat Enterprise Linux (téléchargez les deux fichiers) :
-
Installez le module noyau TOA.
-
CentOS 7.x — accédez au répertoire contenant le fichier téléchargé et exécutez :
sudo yum localinstall kernel-3.10.0-957.21.3.el7.toa.x86_64.rpmRemarqueNote: Utilisez
yum localinstallpour éviter les problèmes de dépendances. Vous pouvez également exécutersudo rpm -ivh kernel-3.10.0-957.21.3.el7.toa.x86_64.rpm. -
CentOS 6.x ou Red Hat Enterprise Linux — accédez au répertoire contenant les fichiers téléchargés et exécutez :
sudo rpm -ivh kernel-firmware-2.6.32-696.13.2.el6.centos.plus.toa.x86_64.rpm sudo rpm -ivh kernel-2.6.32-696.13.2.el6.centos.plus.toa.x86_64.rpmRemarqueNote:
Si kernel-firmware est déjà à la version 2.6.32-696.13.2.el6.centos.plus.toa ou ultérieure, exécutez uniquement la deuxième commande.
En cas d'erreurs de dépendance, ajoutez
--nodepsà la commanderpm.Si la version du noyau installé est plus récente que la version du module TOA, ajoutez
--forcepour forcer l'installation.
-
-
Configurez le chargement automatique du module TOA au démarrage.
-
Créez
/etc/sysconfig/modules/toa.modulesavec le contenu adapté à votre version du système d'exploitation :CentOS 7.x : ``
bash #!/bin/bash if [ -e /lib/modules/uname -r/kernel/net/toa/toa.ko.xz ] ; then modprobe toa > /dev/null 2>&1 fi``CentOS 6.x ou Red Hat Enterprise Linux : ``
bash #!/bin/bash if [ -e /lib/modules/uname -r/kernel/net/toa/toa.ko ] ; then modprobe toa > /dev/null 2>&1 fi``
Accordez les permissions d'exécution au fichier. ``
bash sudo chmod +x /etc/sysconfig/modules/toa.modules``
-
-
Redémarrez le système d'exploitation.
reboot
Résultats
Une fois le module noyau TOA installé, le serveur peut obtenir les adresses IP d'origine des requêtes.
Si le serveur ne parvient pas à obtenir les adresses IP d'origine des requêtes, exécutez la commande suivante pour vérifier si le module noyau TOA est chargé.
lsmod | grep toa
Si le module TOA n'est pas chargé, exécutez la commande suivante pour le charger manuellement.
modprobe toa
Une fois le module noyau TOA chargé, examinez les journaux d'accès de votre serveur pour confirmer que le serveur d'origine obtient bien les adresses IP d'origine des requêtes.
Gérer le module noyau TOA
-
Désactiver temporairement le module noyau TOA :
rmmod toa.ko -
Désinstaller le module noyau TOA :
rmmod toa -
Vérifiez que le module noyau TOA est désinstallé. La sortie de
dmesginclut « TOA unloaded » si le module a été supprimé avec succès.dmesg -T
FAQ
Quel est l'impact du module noyau TOA sur les performances réseau ?
Le module TOA s'exécute en mode bypass, son impact sur les performances réseau est donc minime.
Pourquoi ne puis-je pas obtenir les adresses IP d'origine après la mise à niveau du noyau Linux ?
Après une mise à niveau du noyau, le module TOA existant ne correspond plus au nouveau noyau. Recompilez et réinstallez le module TOA à chaque mise à niveau du noyau Linux.
Étapes suivantes
Obtenir les adresses IP d'origine des requêtes — pour les services web protégés par Anti-DDoS Proxy