A melhor solução que eu já vi (embora um pouco bruta), é esse bom módulo do kernel chamado drop-tcp -sock feita por outro usuário da comunidade do StackExchange. Ele usa inet_twsk_deschedule_put()
do kernel do Linux e, embora essa função seja obrigatória a matar conexões TCP no estado TIME_WAIT
, funcionou para matar FIN_WAIT1
também.
Este módulo pode ser carregado com:
git clone https://github.com/milabs/drop-tcp-sock.git
cd drop-tcp-sock && make
insmod ./drop-tcp-sock.ko
e depois usado (no meu cenário) com:
echo "127.0.0.1:54494 127.0.0.1:5222" >/proc/net/tcpdropsock