GNU/Linux >> Linux Esercitazione >  >> Linux

Come uccidere una singola connessione TCP in Linux?

Ecco alcune opzioni:

  • Attacca con gdb e chiama close() su fd. Puoi mappare da addr/porta al numero di inode tramite /proc/net/tcp e dal numero di inode a FD all'interno del processo con ls -la /proc/$pid/fd.
  • Spoofing di un pacchetto RST. Dovrai generarlo localmente e indovinare il numero SEQ in qualche modo.
  • Forse impostare una regola iptables per generare un RST sul prossimo pacchetto.
  • Scrivi un modulo del kernel.

Non sembra esserci un modo ben supportato per farlo. È probabile che i processi vadano in crash se i loro FD vengono comunque chiusi inaspettatamente.


Non puoi terminare una singola connessione di un processo.

Ma potresti bloccarlo con iptables. Quindi la connessione non può fornire o ricevere dati e il client verrà eseguito in un timeout.


Sul kernel linux>=4.9 puoi usare il ss comando da iproute2 con la chiave -K

ss -K dst client1.something dport = 49987

il kernel deve essere compilato con CONFIG_INET_DIAG_DESTROY opzione abilitata.


Puoi uccidere per porta di destinazione:

ss -K dport = 65987

Linux
  1. Come aggiornare il kernel su desktop Linux

  2. Come controllare la versione del kernel su Linux

  3. Come aggiungere una connessione MySQL remota in Linux?

  4. Come codificare un modulo del kernel Linux?

  5. Come ottenere il numero corrente di jiffies dal riavvio in Linux?

Come uccidere i processi Zombie in Linux

Come spostare un gran numero di file in Linux

Come copiare un gran numero di file in Linux

Come KILL un processo su Linux

Come eseguire il ping di un numero di porta in Linux

Come costruire il kernel Linux da zero