Cuando agrega un servicio TCP a Anti-DDoS Proxy para protegerlo, Anti-DDoS Proxy depura el tráfico entrante y lo reenvía a su servidor de origen. Dado que el proxy se ubica entre el cliente y su servidor, el servidor de origen ve la dirección IP del proxy en lugar de la IP real del cliente. Para recuperar la visibilidad de las direcciones IP de origen, instale el módulo de kernel TCP Option Address (TOA) en su servidor de origen.
Este tema abarca los servidores de origen basados en Linux. Hay tres métodos de instalación disponibles; elija el que corresponda a su sistema operativo.
Requisitos previos
Antes de empezar, asegúrese de contar con lo siguiente:
Un servidor de origen que ejecute una distribución de Linux compatible
Un servicio no web basado en TCP agregado a Anti-DDoS Proxy mediante puertos (los servicios basados en UDP no son compatibles)
Acceso a Internet en el servidor de origen para descargar los paquetes de instalación
Permisos de
sudosi no es el usuario root
Para servicios web, consulte Obtain the originating IP addresses of requests.
Escenarios compatibles
|
Escenario |
Descripción |
|
Anti-DDoS Proxy - instancia de ECS |
El servidor de origen se despliega en una instancia de Elastic Compute Service (ECS). Anti-DDoS Proxy depura el tráfico y lo reenvía a la instancia de ECS. |
|
Anti-DDoS Proxy - instancia de Server Load Balancer (SLB) de capa 4 - instancia de ECS |
El servidor de origen se despliega en una instancia de ECS. Anti-DDoS Proxy depura el tráfico y, después, una instancia de SLB de capa 4 lo reenvía a la instancia de ECS. |
|
Anti-DDoS Proxy - servidor en su centro de datos |
El servidor de origen se despliega en su centro de datos. Anti-DDoS Proxy depura el tráfico y lo reenvía al servidor del centro de datos. |
Elección de un método de instalación
Pruebe primero la instalación en un entorno que no sea de producción. Si el entorno permanece estable, continúe en producción.
|
Método |
Sistemas operativos compatibles |
Cuándo usarlo |
|
Solo Alibaba Cloud Linux 3 |
Es el método más sencillo y no requiere compilación |
|
|
CentOS, Ubuntu, Debian y otras distribuciones de Linux |
Úselo cuando el método 1 o el método 3 no apliquen |
|
|
Red Hat Linux, CentOS 6.x, CentOS 7.x |
Recomendado para distribuciones basadas en RPM |
Método 1: Cargar el módulo de kernel VTOA mediante modprobe
Este método aplica únicamente para Alibaba Cloud Linux 3.
(Opcional) Haga una copia de seguridad del módulo de kernel TOA integrado. Si ocurre un error durante el reinicio, podrá restaurar el sistema operativo al volver al kernel original.
-
Cargue el módulo de kernel VTOA.
modprobe vtoa -
Compruebe que el módulo VTOA esté cargado.
lsmod | grep vtoa -
Configure el módulo VTOA para que se cargue automáticamente al iniciar.
Cree el archivo
/etc/sysconfig/modules/vtoa.modulescon el siguiente contenido: ``bash #!/bin/bash modprobe vtoa > /dev/null 2>&1``Otorgue permisos de ejecución al archivo. ``
bash sudo chmod +x /etc/sysconfig/modules/vtoa.modules``
Método 2: Compilar y cargar el módulo de kernel TOA desde el código fuente
Este método funciona en la mayoría de las distribuciones de Linux, incluidas CentOS, Ubuntu y Debian.
(Opcional) Haga una copia de seguridad del módulo de kernel TOA integrado. Si ocurre un error durante el reinicio, podrá restaurar el sistema operativo al volver al kernel original.
-
Descargue el paquete de código fuente de TOA. Su servidor debe tener acceso a Internet para descargar este archivo. Seleccione el archivo de origen según la versión de su kernel:
Versión del kernel
Archivo de origen
2.x
toa_kernel2.x3.x
toa_kernel3.x4.x o 5.x
toa_kernel_common -
Instale el entorno de compilación (gcc, kernel-headers y kernel-devel).
CentOS: ``
bash yum install gcc kernel-headers kernel-devel -y``Ubuntu o Debian: ``
bash apt-get install gcc linux-headers-$(uname -r) -y``
ImportanteSi el comando anterior falla en Debian, descargue manualmente los encabezados precompilados. En el siguiente ejemplo se usa Debian 11.11 de 64 bits con la versión de kernel 5.10.0-33-amd64.
Descargue Debian_11.11_5.10.0-33-amd64.zip.
-
Instale los paquetes en orden:
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
-
Compile el módulo de kernel TOA. Descomprima el paquete de código fuente, vaya a la carpeta correcta y ejecute
make. Si no aparecen advertencias ni errores, la compilación se completó correctamente. Confirme quetoa.koesté presente en el directorio actual.Para cargar el módulo de kernel TOA en otro servidor, copie el archivo
toa.koa ese servidor y siga los pasos restantes allí.# 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 -
Cargue el módulo de kernel 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 -
Compruebe que el módulo TOA esté cargado.
lsmod | grep toa -
Configure el módulo TOA para que se cargue automáticamente al iniciar.
-
CentOS:
Cree el archivo
/etc/sysconfig/modules/toa.modulescon el siguiente contenido: ``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``Otorgue permisos de ejecución al archivo. ``
bash sudo chmod +x /etc/sysconfig/modules/toa.modules``
Ubuntu o Debian: Cree el archivo
/etc/modules-load.d/toa.confcon el siguiente contenido: ``toa``
-
-
Reinicie el sistema operativo.
sudo reboot
Método 3: Instalar el módulo de kernel TOA mediante RPM
Sistemas operativos compatibles:
Red Hat Linux
CentOS 6.x
CentOS 7.x
(Opcional) Haga una copia de seguridad del módulo de kernel TOA integrado. Si ocurre un error durante el reinicio, podrá restaurar el sistema operativo al volver al kernel original.
-
Descargue el archivo de instalación correspondiente a su sistema operativo. Su servidor debe tener acceso a Internet para descargar este archivo.
CentOS 7.x: kernel-3.10.0-957.21.3.el7.toa.x86_64.rpm
-
CentOS 6.x o Red Hat Enterprise Linux (descargue ambos archivos):
-
Instale el módulo de kernel TOA.
-
CentOS 7.x: vaya al directorio que contiene el archivo descargado y ejecute:
sudo yum localinstall kernel-3.10.0-957.21.3.el7.toa.x86_64.rpmNotaNote: Use
yum localinstallpara evitar problemas de dependencias. Como alternativa, ejecutesudo rpm -ivh kernel-3.10.0-957.21.3.el7.toa.x86_64.rpm. -
CentOS 6.x o Red Hat Enterprise Linux: vaya al directorio que contiene los archivos descargados y ejecute:
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.rpmNotaNote:
Si kernel-firmware ya está en la versión 2.6.32-696.13.2.el6.centos.plus.toa o posterior, ejecute solo el segundo comando.
Si ocurren errores de dependencias, agregue
--nodepsal comandorpm.Si la versión del kernel instalado es posterior a la versión del módulo TOA, agregue
--forcepara instalarlo de todos modos.
-
-
Configure el módulo TOA para que se cargue automáticamente al iniciar.
-
Cree el archivo
/etc/sysconfig/modules/toa.modulescon el contenido correspondiente a la versión de su sistema operativo: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 o 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``
Otorgue permisos de ejecución al archivo. ``
bash sudo chmod +x /etc/sysconfig/modules/toa.modules``
-
-
Reinicie el sistema operativo.
reboot
Resultados
Una vez instalado el módulo de kernel TOA, el servidor puede obtener las direcciones IP de origen de las solicitudes.
Si el servidor no logra obtener las direcciones IP de origen de las solicitudes, ejecute el siguiente comando para comprobar si el módulo de kernel TOA está cargado.
lsmod | grep toa
Si el módulo TOA no está cargado, ejecute el siguiente comando para cargarlo manualmente.
modprobe toa
Después de cargar el módulo de kernel TOA, revise los registros de acceso de su servidor para confirmar que el servidor de origen obtiene correctamente las direcciones IP de origen de las solicitudes.
Gestión del módulo de kernel TOA
-
Deshabilite temporalmente el módulo de kernel TOA:
rmmod toa.ko -
Desinstale el módulo de kernel TOA:
rmmod toa -
Compruebe que el módulo de kernel TOA se haya desinstalado. La salida de
dmesgincluye "TOA unloaded" si el módulo se eliminó correctamente.dmesg -T
Preguntas frecuentes
¿Cómo afecta el módulo de kernel TOA al rendimiento de la red?
El módulo TOA se ejecuta en modo bypass, por lo que su impacto en el rendimiento de la red es mínimo.
¿Por qué no puedo obtener las direcciones IP de origen después de actualizar el kernel de Linux?
Tras una actualización del kernel, el módulo TOA existente deja de coincidir con el nuevo kernel. Recompile y reinstale el módulo TOA cada vez que actualice el kernel de Linux.
Pasos siguientes
Obtain the originating IP addresses of requests: para servicios web protegidos por Anti-DDoS Proxy