关闭Linux上已建立的TCP连接
我无法找到一个简单问题的答案,我将努力实现: 一旦与我的linux服务器建立了tcp连接,让我们假设ssh/tcp 22或x11/tcp 6000 display->如何在不中断进程的情况下关闭此连接(sshd/x11 display server)。 我也看到了一些使用iptables的建议,但它对我不起作用,连接在netstat-an中仍然可见。 如果有人能给我指出正确的方向就好了 到目前为止我试过什么关闭Linux上已建立的TCP连接,linux,sockets,tcp,Linux,Sockets,Tcp,我无法找到一个简单问题的答案,我将努力实现: 一旦与我的linux服务器建立了tcp连接,让我们假设ssh/tcp 22或x11/tcp 6000 display->如何在不中断进程的情况下关闭此连接(sshd/x11 display server)。 我也看到了一些使用iptables的建议,但它对我不起作用,连接在netstat-an中仍然可见。 如果有人能给我指出正确的方向就好了 到目前为止我试过什么 tcpkill: kills the process, not good for me
tcpkill: kills the process, not good for me
iptables: does not close the established connection, but prevent further connections.
谢谢你
DJ好的,我发现至少有一个解决方案(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可在此处找到:
它“窃取”外部主机(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
但是,最好有一个更简单的解决方案。使用调试器连接到进程,然后在相应的文件描述符上调用
shutdown()
,然后调用close()
,或者只调用close()
。那么希望这个过程能处理好。