GNU/Linux >> Znalost Linux >  >> Linux

Jak zabít jediné TCP spojení v Linuxu?

Zde je několik možností:

  • Připojit pomocí gdb a zavolat close() na fd. Můžete mapovat z addr/port na číslo inodu přes /proc/net/tcp a z čísla inodu na FD uvnitř procesu pomocí ls -la /proc/$pid/fd.
  • Podvrhnout paket RST. Budete ho muset vygenerovat lokálně a nějak uhodnout číslo SEQ.
  • Možná nastavit pravidlo iptables pro generování RST na dalším paketu.
  • Napište modul jádra.

Zdá se, že neexistuje dobře podporovaný způsob, jak toho dosáhnout. Je pravděpodobné, že procesy se zhroutí, pokud jsou jejich FD stejně neočekávaně uzavřeny.


Nemůžete zrušit jediné připojení procesu.

Ale můžete to zablokovat pomocí iptables. Připojení tedy nemůže poskytovat ani přijímat data a klient poběží v časovém limitu.


Na linuxovém jádře>=4.9 můžete použít ss příkaz z iproute2 s klíčem -K

ss -K dst client1.something dport = 49987

jádro musí být zkompilováno s CONFIG_INET_DIAG_DESTROY možnost povolena.


Můžete zabít podle cílového portu:

ss -K dport = 65987

Linux
  1. Jak zabít proces zombie na Linuxu

  2. Jak zašifrovat jeden souborový systém Linux

  3. Jak upgradovat jádro na ploše Linuxu

  1. Jak zkontrolovat verzi jádra v Linuxu

  2. Linux – Jak správně znovu načíst modul jádra?

  3. Jak přidat vzdálené připojení MySQL v linuxu?

  1. Jak zabít běžící procesy v Linuxu

  2. Jak kódovat modul jádra Linuxu?

  3. Jak ukončit připojení TCP pomocí nástroje tcpkill