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

时间:2015-10-18 14:09:34

标签: linux sockets tcp

我无法找到一个简单的事情的答案,我将努力实现: 一旦与我的linux服务器建立了tcp连接,让我们说ssh / tcp 22或x11 / tcp 6000 display - >如何关闭此连接不用终止进程(sshd / x11显示服务器)。 我也看到了一些建议使用iptables,但它对我不起作用,连接仍然可以在netstat -an中看到。 如果有人能指出我正确的方向会很好。

到目前为止我尝试了什么

tcpkill: kills the process, not good for me
iptables: does not close the established connection, but prevent further connections. 

感谢adavnce DJ

1 个答案:

答案 0 :(得分:0)

好的,我发现至少有一个解决方案(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)

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
但是,如果有一个更简单的解决方案会很好。