GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie beendet man eine einzelne TCP-Verbindung in Linux?

Hier sind einige Optionen:

  • Mit gdb anhängen und close() auf dem fd aufrufen. Sie können innerhalb des Prozesses mit ls -la /proc/$pid/fd von addr/port auf die Inode-Nummer über /proc/net/tcp und von der Inode-Nummer auf FD abbilden.
  • Spoofe ein RST-Paket. Sie müssen es lokal generieren und die SEQ-Nummer irgendwie erraten.
  • Vielleicht richten Sie eine iptables-Regel ein, um eine RST für das nächste Paket zu generieren.
  • Schreiben Sie ein Kernelmodul.

Es scheint keinen gut unterstützten Weg zu geben, dies zu tun. Es ist wahrscheinlich, dass Prozesse abstürzen, wenn ihre FDs sowieso unerwartet geschlossen werden.


Sie können nicht eine einzelne Verbindung eines Prozesses beenden.

Aber Sie könnten es mit iptables blockieren. Die Verbindung kann also keine Daten liefern oder empfangen und der Client läuft in einem Timeout.


Unter Linux-Kernel>=4.9 können Sie den ss verwenden Befehl von iproute2 mit Schlüssel -K

ss -K dst client1.something dport = 49987

der Kernel muss mit CONFIG_INET_DIAG_DESTROY kompiliert werden Option aktiviert.


Sie können nach Zielport töten:

ss -K dport = 65987

Linux
  1. So aktualisieren Sie den Kernel auf dem Linux-Desktop

  2. So überprüfen Sie die Kernel-Version unter Linux

  3. Linux – Wie lädt man ein Kernel-Modul richtig neu?

  4. Wie füge ich eine Remote-MySQL-Verbindung unter Linux hinzu?

  5. Wie erhalte ich die aktuelle Anzahl von Jiffies seit dem Neustart unter Linux?

So beenden Sie Zombie-Prozesse in Linux

So verschieben Sie eine große Anzahl von Dateien in Linux

So kopieren Sie eine große Anzahl von Dateien unter Linux

Wie man einen Prozess unter Linux beendet

So pingen Sie eine Portnummer in Linux an

So erstellen Sie einen Linux-Kernel von Grund auf neu