Problema de desempenho do Linux iptables / conntrack

9

Eu tenho uma configuração de teste no laboratório com 4 máquinas:

  • 2 máquinas P4 antigas (t1, t2)
  • 1 Xeon 5420 DP 2,5 GHz 8 GB RAM (t3) Intel e1000
  • 1 Xeon 5420 DP 2,5 GHz 8 GB RAM (t4) Intel e1000

para testar o desempenho do firewall linux desde que fomos atacados por vários ataques de inundação de sincronização nos últimos meses. Todas as máquinas rodam o Ubuntu 12.04 64bit. t1, t2, t3 são interconectados através de um switch de 1 GB / s, t4 é conectado a t3 através de uma interface extra. Então t3 simula o firewall, t4 é o alvo, t1, t2 joga os atacantes gerando uma tempestade de pacotes (192.168.4.199 é t4):

hping3 -I eth1 --rand-source --syn --flood 192.168.4.199 -p 80

O t4 descarta todos os pacotes recebidos para evitar confusão com gateways, problemas de desempenho do t4 etc. Observo as estatísticas de pacotes no iptraf. Eu configurei o firewall (t3) da seguinte maneira:

  • estoque 3.2.0-31-genérico # 50-Ubuntu SMP do kernel
  • rhash_entries = 33554432 como parâmetro do kernel
  • sysctl da seguinte maneira:

    net.ipv4.ip_forward = 1
    net.ipv4.route.gc_elasticity = 2
    net.ipv4.route.gc_timeout = 1
    net.ipv4.route.gc_interval = 5
    net.ipv4.route.gc_min_interval_ms = 500
    net.ipv4.route.gc_thresh = 2000000
    net.ipv4.route.max_size = 20000000
    

(Ajustei bastante para manter o t3 em execução quando t1 + t2 está enviando o maior número possível de pacotes).

O resultado desses esforços é um tanto estranho:

  • T1 + T2 conseguem enviar cada um cerca de 200k pacotes / s. t4, na melhor das hipóteses, vê cerca de 200k no total, portanto metade dos pacotes são perdidos.
  • t3 é quase inutilizável no console, embora pacotes estejam fluindo por ele (altos números de soft-irqs)
  • o coletor de lixo do cache de rota está longe de ser previsível e, na configuração padrão, sobrecarregado por muito poucos pacotes / s (<50k pacotes / s)
  • ativar as regras de iptables com estado faz com que a taxa de pacotes que chega no t4 caia para cerca de 100k pacotes / s, efetivamente perdendo mais de 75% dos pacotes

E esta - aqui está minha principal preocupação - com duas máquinas P4 antigas enviando o maior número de pacotes possível - o que significa que quase todos na rede devem ser capazes disso.

Então, aqui vai a minha pergunta: Eu negligenciei algum ponto de importação e configuração ou na minha configuração de teste? Existem alternativas para a construção de sistemas de firewall, especialmente em sistemas smp?

tim
fonte
É possível que você esteja saturando a rede? Isso explicaria parte da perda de pacotes.
Preston
Acho que não, já que a rede está em 1 Gb / s, cada uma conectada através de um switch hp 2848, o controle de fluxo está ativado e o excesso de cache de carga e rota em t3 indica que t3 em si é o ponto fraco.
tim

Respostas:

1

Eu migraria para o Kernel> = 3.6, que não possui mais um cache de roteamento. Isso deve resolver uma parte dos seus problemas.

BatchyX
fonte
0

Como está sua configuração de log no T3? Se todos os pacotes descartados forem registrados, a E / S do disco talvez seja a causa.

Como esse é um ambiente de teste, você pode tentar o teste com o log de T3 desativado.

John Siu
fonte