我试图用tcpkill杀死ESTABLISHED TCP连接。 连接是一个开放的HTTPS连接。 它出现在netstat上:
tcp 0 0 XXXX:55601 XXXX:https ESTABLISHED
所以,根据手册页 ,我input:
$ tcpkill -i eth1 -9 port 443
tcpkill实用程序输出:
tcpkill: listening on eth1 [port 443]
然后只是挂起 等了15分钟后,我不确定这里发生了什么事情。
我做错了什么?
为了让tcpkill工作(即,制作一个具有正确序列号和源端口的重置包),必须有stream量。 如果没有更多的印刷,那么没有交通。 validation你可以运行tcpdump -i eth1 port 443 。
我必须杀死没有stream量的已build立的连接(JVM上的debugging会话)。
tcpkill在@Mark Wagner答案中解释不了,但是killcx 1.0.3( 链接 )没有(Ubuntu 10.04)。
这是一个perl脚本,它依赖于一些库。
编辑
在一个不能用killcx杀死的连接上, tcpkill和killcx的组合killcx了它:
说出从LOCAL:PORTL到REMOTE:PORTR
tcpkill port PORTL 。 Tcpkill将开始监听stream量 killcx REMOTE:PORTR 这似乎是端口55601上的HTTPS传出连接,而不是443上的监听器。 我知道,Web浏览器使用HTTP协议在端口80上连接出来,他们从服务器获得3000-4000端口范围内的返回stream量。 你显然试图杀死一个挂起的HTTPS线程端口从您的服务器进程?
是TCPKILL只能杀死一个监听端口,如443,而不是一个“build立”的响应端口?
你们都已经超越了它,试试这个。
#!/bin/bash # pass ip in on command line tcpkill host $1 & sleep 9 pkill tcpkill