Früher habe ich das in der Windows-Welt mit einem Tool namens TCPView gemacht: Wählen Sie einfach eine bestehende Verbindung (ESTABLISHED) und dann „Verbindung schließen“ aus. Ich kann unter Mac OSX oder Linux keine Möglichkeit dazu finden (ich brauche beide). Die einzige mir bekannte Möglichkeit besteht darin, den Prozess zu beenden, der den Port geöffnet hat.
Mein Hauptanwendungsfall ist die Simulation von Verbindungsunterbrechungen zum Testen des Failovers, etwa das Herausziehen eines Kabels oder der Verlust eines Routers oder einer Middleware-Situation.
Antwort1
Sie können eine Verbindung zu Ihrem Prozess herstellen, indem Sie gdb und close()
den Dateideskriptor verwenden, der der Verbindung entspricht. Sie können die Dateideskriptornummer mithilfe von herausfinden lsof -a -i4 -p $PID
.
Antwort2
tcpkill -i eth0 { expression }
(grundlegende Befehle/Optionen)tcpkill -i eth0 port 21
(Alle ausgehenden FTP-Verbindungen (Port 21) beenden)tcpkill host 192.168.1.2
oder
tcpkill host hostname.domainname.com
(Alle Pakete löschen, die beim Host 192.168.1.2 ankommen oder von ihm abgehen)tcpkill ip host 192.168.1.2 and not 192.168.1.111
(Um alle IP-Pakete zwischen 192.168.1.2 und jedem Host außer 192.168.1.111 zu löschen)