Estas son algunas opciones:
- Adjunte con gdb y llame a close() en el fd. Puede asignar desde dirección/puerto al número de inodo a través de /proc/net/tcp y desde el número de inodo a FD dentro del proceso con ls -la /proc/$pid/fd.
- Suplantar un paquete RST. Deberá generarlo localmente y adivinar el número SEQ de alguna manera.
- Tal vez configure una regla de iptables para generar un RST en el siguiente paquete.
- Escribir un módulo del kernel.
No parece haber una forma bien respaldada de hacer esto. Es probable que los procesos se bloqueen si sus FD se cierran inesperadamente de todos modos.
No puede eliminar una sola conexión de un proceso.
Pero podrías bloquearlo con iptables. Por lo tanto, la conexión no puede proporcionar ni recibir datos y el cliente se ejecutará en un tiempo de espera.
En Linux kernel>=4.9 puedes usar el ss
comando desde iproute2 con la tecla -K
ss -K dst client1.something dport = 49987
el kernel tiene que ser compilado con CONFIG_INET_DIAG_DESTROY
opción habilitada.
Puedes matar por puerto de destino:
ss -K dport = 65987