2015-10-18 88 views
2

我无法找到答案,我将尝试实现一个简单的事情: 一旦tcp连接建立到我的linux服务器,让我们说ssh/tcp 22或x11/tcp 6000显示 - >我怎么关闭这个连接而没有查杀进程(sshd/x11 display server)。 我也看到一些建议使用iptables,但它不适用于我,连接仍然可见netstat -an。如果有人能指出我正确的方向,那么 会很好。在Linux上关闭建立的TCP连接

我试过到目前为止

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

感谢adavnce DJ

+1

尝试使用hping3 –

+0

使用调试程序附加到进程,然后在适当的文件描述符上调用'shutdown()',紧跟'close()'或close'()'。然后希望该过程能够处理该问题。 –

回答

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 

但是,将是一个更好的更容易的解决方案。