在 Linux 上关闭已建立的 TCP 连接

okt*_*tay 6 sockets linux tcp

我无法找到我将尝试实现的简单事情的答案:一旦与我的linux服务器建立了tcp连接,假设ssh / tcp 22或x11 / tcp 6000显示->如何关闭此连接而不需要终止进程(sshd / x11 显示服务器)。我还看到一些使用 iptables 的建议,但它对我不起作用,连接在 netstat -an 中仍然可见。如果有人能指出我正确的方向,那就太好了。

到目前为止我尝试过的

tcpkill: kills the process, not good for me
iptables: does not close the established connection, but prevent further connections. 
Run Code Online (Sandbox Code Playgroud)

提前感谢 DJ

okt*_*tay 4

好的,我找到了至少一种有效的解决方案(killcx)。也许我们能够找到更简单的解决方案。另外,我看到了“zb”的评论 - 谢谢 - 这可能也有效,但我无法找到有效的语法,因为这个工具似乎非常有用但很复杂。因此,这是一个如何使用对我有用的 1. 解决方案的示例:

netstat -anp  | grep 22   
output: tcp  0  0 192.168.0.82:22         192.168.0.77:33597      VERBUNDEN   25258/0
iptables -A INPUT -j DROP -s 192.168.0.77 (to prevent reconnect)
perl killcx.pl 192.168.0.77:33597 (to kill the tcp connection)
Run Code Online (Sandbox Code Playgroud)

Killcx 可以在这里找到:http://killcx.sourceforge.net/ 它“窃取”来自外部主机(192.168.0.77)的连接并将其关闭。因此,该解决方案工作正常,但如果您面临压力,则很难快速设置。以下是所需的包:

apt-get install libnetpacket-perl  libnet-pcap-perl libnet-rawip-perl
wget http://killcx.sourceforge.net/killcx.txt -O killcx.pl
Run Code Online (Sandbox Code Playgroud)

然而,如果有一个更简单的解决方案就好了。