Como mitigar o erro “kernel: nf_conntrack: table full, soltando o pacote”

2

Recentemente, tivemos um problema com um de nossos servidores (Debian Squeeze) não respondendo durante o carregamento pesado. Olhando para os logs do kernel, acho que esta é a causa:

kernel: nf_conntrack: table full, dropping packet

Pelo que entendi, este é o módulo conntrack, que faz algum rastreamento de estado da conexão, informando que a tabela usada para armazenar os detalhes da conexão está cheia.

Da pesquisa que fiz, parece haver duas maneiras de atenuar isso:

  1. Aumentar o tamanho da tabela.

  2. Remova o módulo do sistema.

No entanto, nem /proc/sys/net/ipv4/ip_conntrack_max nem /proc/sys/net/ipv4/netfilter/ip_conntrack_max existem nesta máquina (não há ipv4 catálogo sob net ).

Se eu lsmod não obtenho resultados.

Então, estou um pouco confuso - talvez alguém possa esclarecer a situação para mim?

  • O conntrack está instalado? Se sim, onde estão as configurações? E por que não aparece em lsmod?
  • Se o conntrack não estiver instalado, o que está emitindo as mensagens completas da tabela?

Obrigado

    
por UpTheCreek 30.09.2014 / 12:54

2 respostas

2

Isto é da experiência - não fiz pesquisa para verificar esta informação: Eu vi alguns sistemas onde este mesmo erro está nos logs do sistema e não há nada em / proc / sys / net / ipv4 / ip_conn * ou / proc / sys / net / ipv4 / netfilter. Eu também gostaria de saber por que - mas isso não é muito importante quando você encontrar uma correção para os sintomas originais. ;)

A estratégia de mitigação foi dupla: Aumentar o limite via sysctl (abordagem ingênua de curto prazo) e descobrir por que o número de conexões sendo rastreadas é tão alto.

Se os limites padrão estiverem sendo excedidos e o servidor em questão não tiver a intenção de lidar com um alto número de conexões, é lógico que os limites não devem ser atingidos. Um bom exemplo de um serviço que terá altos requisitos de rastreamento de conexão é um servidor DNS "público" atendendo a mais de cem mil clientes.

A atenuação seria examinar os logs, garantir que medidas anti-DOS / DDOS estejam em vigor (por exemplo, ver fail2ban) e garantir que você tenha uma configuração de firewall sensata instalada.

Em relação ao lsmod, não encontrei a situação em que parece estar ativo, mas o módulo não está listado. Não tenho certeza de como essa situação surge.

    
por 22.12.2014 / 08:26
1

As configurações para conntrack estão geralmente em / proc / sys / net / netfilter / nf_conntrack_max.

    
por 25.09.2015 / 06:42