2015-10-18 87 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 

但是,將是一個更好的更容易的解決方案。