如何使用 tcpkill 实用程序终止 TCP 连接

如何使用 tcpkill 实用程序终止 TCP 连接

我正在尝试使用 终止已建立的 TCP 连接tcpkill。该连接是开放的 HTTPS 连接。它在 netstat 上显示为:

tcp        0      0 X.X.X.X:55601         X.X.X.X:https    ESTABLISHED

因此,根据手册页,我输入:

$ tcpkill -i eth1 -9 port 443

tcpkill 实用程序输出:

tcpkill: listening on eth1 [port 443]

...然后就挂了。等了大约 15 分钟后,我不确定这里发生了什么。

难道我做错了什么?

答案1

要使 tcpkill 工作(即制作具有正确序列号和源端口的重置数据包),必须有流量。如果没有其他任何内容打印出来,则表示没有流量。要验证,您可以运行tcpdump -i eth1 port 443

答案2

我必须终止一个没有流量的已建立连接(JVM 上的调试会话)。

tcpkill正如@Mark Wagner 的回答所解释的那样,无法做到这一点,但是killcx1.0.3 (关联)做到了(Ubuntu 10.04)。

它是一个依赖于一些库的 perl 脚本。

编辑

在无法通过两者组合终止的连接上执行killcx了以下操作:tcpkillkillcx

说连接如果从LOCAL:PORTLREMOTE:PORTR

  • 在终端启动 tcpkill:tcpkill port PORTL。Tcpkill 将开始监听流量
  • 在第二个终端启动 killcx: killcx REMOTE:PORTR

答案3

我发现我需要指定本地(源)端口,而不是远程端口,即。

$ sudo netstat -np | grep myclient
tcp        0      0 x.x.x.x:46844 y.y.y.y:https ESTABLISHED 1234/myclient
$ sudo tcpkill -i eth0 port 46844
tcpkill: listening on eth0 [port 46844]
... [output which shows tcpkill working, once there is traffic] ...

因此,就你的情况而言,应该是:

$ tcpkill -i eth1 -9 port 55601

相关内容