Ao adicionar um serviço TCP ao Anti-DDoS Proxy para proteção, o Anti-DDoS Proxy filtra o tráfego de entrada e o encaminha para o servidor de origem. Como o proxy fica entre o cliente e o servidor, o servidor de origem vê o endereço IP do proxy em vez do IP real do cliente. Para restaurar a visibilidade dos endereços IP de origem, instale o módulo de kernel TCP Option Address (TOA) no servidor de origem.
Este tópico aborda servidores de origem baseados em Linux. Há três métodos de instalação disponíveis. Escolha o método correspondente ao seu sistema operacional.
Pré-requisitos
Antes de começar, verifique se você tem:
Um servidor de origem executando uma distribuição Linux compatível
Um serviço não web baseado em TCP adicionado ao Anti-DDoS Proxy usando portas (não há suporte para serviços baseados em UDP)
Acesso à internet no servidor de origem para baixar os pacotes de instalação
Permissões
sudocaso você não seja o usuário root
Para serviços web, consulte Obter os endereços IP de origem das requisições.
Cenários compatíveis
|
Cenário |
Descrição |
|
Anti-DDoS Proxy - instância ECS |
O servidor de origem está implantado em uma instância do Elastic Compute Service (ECS). O Anti-DDoS Proxy filtra o tráfego e o encaminha para a instância ECS. |
|
Anti-DDoS Proxy - instância Server Load Balancer (SLB) Camada 4 - instância ECS |
O servidor de origem está implantado em uma instância ECS. O Anti-DDoS Proxy filtra o tráfego e uma instância SLB Camada 4 o encaminha para a instância ECS. |
|
Anti-DDoS Proxy - Servidor no seu data center |
O servidor de origem está implantado no seu data center. O Anti-DDoS Proxy filtra o tráfego e o encaminha para o servidor do data center. |
Escolha um método de instalação
Teste a instalação primeiro em um ambiente de não produção. Se o ambiente permanecer estável, prossiga para a produção.
|
Método |
Sistemas operacionais compatíveis |
Quando usar |
|
Apenas Alibaba Cloud Linux 3 |
Método mais simples; sem necessidade de compilação |
|
|
CentOS, Ubuntu, Debian e outras distribuições Linux |
Use quando o Método 1 ou Método 3 não se aplicar |
|
|
Red Hat Linux, CentOS 6.x, CentOS 7.x |
Preferido para distribuições baseadas em RPM |
Método 1: Carregar o módulo de kernel VTOA via modprobe
Este método aplica-se apenas ao Alibaba Cloud Linux 3.
(Opcional) Faça backup do módulo de kernel TOA integrado. Se ocorrer falha na reinicialização, restaure o sistema operacional revertendo para o kernel original.
-
Carregue o módulo de kernel VTOA.
modprobe vtoa -
Verifique se o módulo VTOA foi carregado.
lsmod | grep vtoa -
Configure o módulo VTOA para carregar automaticamente na inicialização.
Crie o arquivo
/etc/sysconfig/modules/vtoa.modulescom o seguinte conteúdo: ``bash #!/bin/bash modprobe vtoa > /dev/null 2>&1``Conceda permissões de execução ao arquivo. ``
bash sudo chmod +x /etc/sysconfig/modules/vtoa.modules``
Método 2: Compilar e carregar o módulo de kernel TOA a partir do código-fonte
Este método funciona na maioria das distribuições Linux, incluindo CentOS, Ubuntu e Debian.
(Opcional) Faça backup do módulo de kernel TOA integrado. Se ocorrer falha na reinicialização, restaure o sistema operacional revertendo para o kernel original.
-
Baixe o pacote de código-fonte do TOA. O servidor deve ter acesso à internet para baixar este arquivo. Selecione o arquivo de source conforme a versão do seu kernel:
Versão do kernel
Arquivo de source
2.x
toa_kernel2.x3.x
toa_kernel3.x4.x ou 5.x
toa_kernel_common -
Instale o ambiente de compilação (gcc, kernel-headers e 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``
ImportanteSe o comando acima falhar no Debian, baixe manualmente os headers pré-compilados. O exemplo a seguir usa Debian 11.11 64 bits com versão de kernel 5.10.0-33-amd64.
Baixe o arquivo Debian_11.11_5.10.0-33-amd64.zip.
-
Instale os pacotes na ordem:
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 o módulo de kernel TOA. Descompacte o pacote de código-fonte, navegue até a pasta correta e execute
make. Se nenhum aviso ou erro aparecer, a compilação foi bem-sucedida. Confirme se o arquivotoa.koestá presente no diretório atual.Para carregar o módulo de kernel TOA em outro servidor, copie o arquivo
toa.kopara esse servidor e siga as etapas restantes nele.# 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 -
Carregue o 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 -
Verifique se o módulo TOA foi carregado.
lsmod | grep toa -
Configure o módulo TOA para carregar automaticamente na inicialização.
-
CentOS:
Crie o arquivo
/etc/sysconfig/modules/toa.modulescom o seguinte conteúdo: ``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``Conceda permissões de execução ao arquivo. ``
bash sudo chmod +x /etc/sysconfig/modules/toa.modules``
Ubuntu ou Debian: Crie o arquivo
/etc/modules-load.d/toa.confcom o seguinte conteúdo: ``toa``
-
-
Reinicie o sistema operacional.
sudo reboot
Método 3: Instalar o módulo de kernel TOA via RPM
Sistemas operacionais compatíveis:
Red Hat Linux
CentOS 6.x
CentOS 7.x
(Opcional) Faça backup do módulo de kernel TOA integrado. Se ocorrer falha na reinicialização, restaure o sistema operacional revertendo para o kernel original.
-
Baixe o arquivo de instalação correspondente ao seu sistema operacional. O servidor deve ter acesso à internet para baixar este arquivo.
CentOS 7.x: kernel-3.10.0-957.21.3.el7.toa.x86_64.rpm
-
CentOS 6.x ou Red Hat Enterprise Linux (baixe ambos os arquivos):
-
Instale o módulo de kernel TOA.
-
CentOS 7.x: navegue até o diretório que contém o arquivo baixado e execute:
sudo yum localinstall kernel-3.10.0-957.21.3.el7.toa.x86_64.rpmNotaNote: Use
yum localinstallpara evitar problemas de dependência. Alternativamente, executesudo rpm -ivh kernel-3.10.0-957.21.3.el7.toa.x86_64.rpm. -
CentOS 6.x ou Red Hat Enterprise Linux: navegue até o diretório que contém os arquivos baixados e execute:
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:
Se o kernel-firmware já estiver na versão 2.6.32-696.13.2.el6.centos.plus.toa ou posterior, execute apenas o segundo comando.
Se ocorrerem erros de dependência, adicione
--nodepsao comandorpm.Se a versão do kernel instalada for posterior à versão do módulo TOA, adicione
--forcepara forçar a instalação.
-
-
Configure o módulo TOA para carregar automaticamente na inicialização.
-
Crie o arquivo
/etc/sysconfig/modules/toa.modulescom o conteúdo adequado à versão do seu SO: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``
Conceda permissões de execução ao arquivo. ``
bash sudo chmod +x /etc/sysconfig/modules/toa.modules``
-
-
Reinicie o sistema operacional.
reboot
Resultados
Após a instalação do módulo de kernel TOA, o servidor obtém os endereços IP de origem das requisições.
Se o servidor não obtiver os endereços IP de origem das requisições, execute o seguinte comando para verificar se o módulo de kernel TOA está carregado.
lsmod | grep toa
Se o módulo TOA não estiver carregado, execute o seguinte comando para carregá-lo manualmente.
modprobe toa
Depois que o módulo de kernel TOA for carregado, revise os logs de acesso do servidor para confirmar que ele obtém os endereços IP de origem das requisições.
Gerencie o módulo de kernel TOA
-
Desative temporariamente o módulo de kernel TOA:
rmmod toa.ko -
Desinstale o módulo de kernel TOA:
rmmod toa -
Verifique se o módulo de kernel TOA foi desinstalado. A saída do
dmesginclui "TOA unloaded" se o módulo tiver sido removido com sucesso.dmesg -T
FAQ
Como o módulo de kernel TOA afeta o desempenho da rede?
O módulo TOA opera em modo bypass, portanto tem impacto mínimo no desempenho da rede.
Por que não consigo obter os endereços IP de origem após atualizar o kernel do Linux?
Após uma atualização do kernel, o módulo TOA existente deixa de ser compatível com o novo kernel. Recompile e reinstale o módulo TOA sempre que atualizar o kernel do Linux.
Próximos passos
Obter os endereços IP de origem das requisições — para serviços web protegidos pelo Anti-DDoS Proxy