在linux系统中,遇到TCP链接迟迟不能释放的情况,类似FIN_WAIT1、FIN_WAIT2的状态,释放时间不确定,而且对应的程序已经关闭,相应的端口也不再监听,无法通过杀进程来解决,这种情况下,为了快速恢复正常,不得不采用重启服务器的方法加以解决,linux下dsniff包中含有tcpkill命令,该命令可以将上述状态的TCP链接加以清除,进而免除服务器重启的情况。
1、tcpkill的工作原理
实际上就是通过双向fake tcp rst包重置目标连接双方的网络连接,之所以tcpkill不会马上中断目标tcp连接,是因为伪造tcp rst包时,需要填入正确的sequence number,这需要通过拦截双方的tcp通信才能实时得到。所以运行tcpkill后,只有目标连接有新tcp包发送/接受才会导致tcp连接中断。tcpkill 一定要运行在能接收到应答包的主机上在,最好运行在连接或半连接存在的一端主机上,tcpkill干掉活跃连接即可。
2、安装dsniff工具包
2.1 rpm包安装
下载地址:http://pkgs.repoforg

597

被折叠的 条评论
为什么被折叠?



