Tabela de sessões do firewall cheia Firewall session table exhaustion
ID da causa dc-firewall · Responsável principal Infraestrutura de rede (Equipe de infraestrutura) · Também envolvidos Desenvolvimento do servidor (Equipe de desenvolvimento), Desenvolvimento do cliente (Equipe de desenvolvimento)
O firewall registra na tabela de sessões cada conexão que deixa passar, para rastreá-la. Quando a tabela enche, ele não aceita novas conexões.
Por quê Um pico de conexões ou um ataque leva o número de sessões ao limite → Efeito Sem entrada livre para registrar a nova conexão, ela é recusada → Na tela Quem tenta entrar não conecta ou fica em loading infinito, e algumas conexões já abertas também sofrem desconexão
Logo após login ou manutenção, Quando junta muita gente
Responsável
Responsável principal Infraestrutura de rede (Equipe de infraestrutura) · Também envolvidos Desenvolvimento do servidor (Equipe de desenvolvimento), Desenvolvimento do cliente (Equipe de desenvolvimento)
O que fazer (Equipe de desenvolvimento)
Servidor: controlar picos de conexão com um sistema de fila de login, reutilizar conexões para não abrir conexões curtas repetidamente, encerrar por conta própria as conexões cujo heartbeat parou (para conexões mortas não ocuparem a tabela de sessões por muito tempo). Cliente: enviar heartbeats em intervalos de no máximo metade do menor timeout de inatividade, reconectar automaticamente se cair, aumentando o intervalo entre tentativas e espalhando-as aleatoriamente (para não voltarem todos de uma vez).
O que fazer (Equipe de infraestrutura)
Aumentar a tabela de sessões, limpar rápido as conexões curtas que já terminaram (reduzir o timeout das sessões encerradas), ao reduzir o timeout de sessões ociosas avisar a equipe de desenvolvimento para ajustar o intervalo de heartbeat, bloquear ataques, criar alerta de utilização da tabela de sessões.
No gráfico
Achata ao bater no limite · Sessões no firewall, falhas de novas conexões
Onde olhar
Ver em gráfico as sessões simultâneas do firewall junto com o limite de sessões e procurar no log do equipamento descartes por falha ao criar sessão. Em firewall Linux, comparar nf_conntrack_count com nf_conntrack_max e procurar “nf_conntrack: table full, dropping packet” no dmesg; em instância da AWS, ver conntrack_allowance_exceeded no ethtool -S
Confirma se
A partir do momento em que o número de sessões encosta no limite e achata, as falhas de novas conexões aumentam, junto com registros de falha ao criar sessão ou contadores de descarte
Descarta se
Sessões bem abaixo do limite, mas não conecta: “Estouro da fila de conexões (backlog)” ou servidor de login. Só conexões ociosas caem: “Expiração do rastreamento de conexões no grupo de segurança da nuvem”
Como verificar
Ferramentas de infra (sem precisar do código do jogo)
Fontes
Netfilter Conntrack Sysfs variablesLinux kernel Número máximo de entradas da tabela de rastreamento de conexões (nf_conntrack_max), tempo de retenção de conexões em encerramento (TIME_WAIT e FIN_WAIT, padrão de 120 segundos), TCP estabelecido com padrão de 5 dias, número atual de entradas (nf_conntrack_count)
Amazon EC2 security group connection trackingAWS Ao passar do número de conexões que a instância consegue rastrear, os pacotes de novas conexões são descartados; conexões ociosas podem esgotar a tabela de rastreamento
Infrastructure layer attacksAWS Ataques como SYN flood prendem recursos de servidores, firewalls e load balancers
net/netfilter/nf_conntrack_core.c (Linux v6.12)Linux kernel Quando a tabela de rastreamento de conexões enche, aparece “nf_conntrack: table full, dropping packet” no log e os pacotes de novas conexões são descartados