Então, essa é uma pergunta interessante.
Inicialmente, fiquei surpreso que você viu qualquer conexões no estado SYN_RECV com os cookies SYN habilitados. A beleza dos cookies SYN é que você pode participar sem estados do handshake de 3 vias TCP como um servidor usando criptografia, então eu esperaria que o servidor não representasse conexões abertas pela metade porque esse seria o mesmo estado que não é não sendo mantido.
Na verdade, uma olhada rápida na fonte (tcp_ipv4.c) mostra informações interessantes sobre como o kernel implementa cookies SYN. Essencialmente, apesar de ativá-los, o kernel se comporta normalmente até que sua fila de conexões pendentes esteja cheia. Isso explica sua lista existente de conexões no estado SYN_RECV.
Somente quando a fila de conexões pendentes está cheia, E outro pacote SYN (tentativa de conexão) é recebido, E foi mais de um minuto desde a última mensagem de aviso, o kernel enviou a mensagem de aviso que você viu (" enviando cookies "). Os cookies SYN são enviados mesmo quando a mensagem de aviso não é; a mensagem de aviso é apenas para avisar que a questão não foi embora.
Em outras palavras, se você desativar os cookies SYN, a mensagem irá embora. Isso só funcionará se você não estiver mais sendo inundado por SYN.
Para abordar algumas das outras coisas que você fez:
-
%código%:
- Aumentar isso não terá nenhum efeito positivo para as conexões de entrada que são falsificadas, nem para qualquer um que receba um cookie SYN em vez do estado do lado do servidor (nenhuma tentativa também para eles).
- Para conexões falsificadas de entrada, o aumento aumenta o número de pacotes que você envia para um endereço falso e, possivelmente, a quantidade de tempo que o endereço falsificado permanece na tabela de conexão (isso pode ter um efeito negativo significativo).
- Sob carga normal / número de conexões de entrada, quanto maior, maior a probabilidade de concluir conexões rapidamente / com êxito através de links que descartam pacotes. Há retornos decrescentes para aumentar isso.
-
net.ipv4.tcp_synack_retries
: Alterar isso não pode ter nenhum efeito nas conexões de entrada (afeta apenas as conexões de saída)
As outras variáveis que você mencionou eu não pesquisei, mas suspeito que as respostas para sua pergunta estão bem aqui.
Se você não estiver sendo inundado por SYN e a máquina estiver respondendo a conexões não HTTP (por exemplo, SSH), acho que provavelmente há um problema de rede, e você deve ter um engenheiro de rede para ajudá-lo a examiná-lo. Se a máquina geralmente não responde mesmo quando você não está sendo inundado por SYN, isso soa como um sério problema de carga se afetar a criação de conexões TCP (muito baixo nível e recurso não intensivo)