使用tcpkill断开异常tcp连接

在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.repoforge.org/dsniff/

此目录中可以找到相应系统的版本

wget http://pkgs.repoforge.org/dsniff/dsniff-2.4-0.1.b1.el5.rf.x86_64.rpm

rpm -ivh dsniff-2.4-0.1.b1.el5.rf.x86_64.rpm

2.2 yum安装

yum -y install dsniff

安装完成后可以发现系统多了一个tcpkill的命令

3、 命令使用方法如下:

3.1 tcpkill语法

tcpkill -i interface -1...9 expression

-i 指定要侦听的接口,any代所有接口

-1...9指定终止连接时使用的暴力程度。快速连接可能需要更高的数量才能在移动网络中建立RST接收窗口。默认值为3。

host :指定主机名或ip,比如host 10.0.11.2

port:指定端口 比如 port 80

net: 指定网段。比如 net 128.3

portrange:指定一个端口范围。比如portrange 1-1024

3.2 tcpkill操作实例

3.2.1定连接服务端8082端口的这条连接

netstat -altupn | grep 8082

3.2.2杀掉连接, 过滤规则类似tcpdump

tcpkill -i any -9 host 49.7.40.205

3.2.3连接成功被杀掉

3.3 tcpkill使用扩展

tcpkill -9 port ftp &>/dev/null

tcpkill -9 host 192.168.10.30 &>/dev/null

tcpkill -9 port 53 and port 8000 &>/dev/null

tcpkill -9 net 192.168.10 &>/dev/null

tcpkill -9 net 192.168.10 and port 22 &>/dev/null

相关推荐
运维行者_1 天前
Applications Manager中的Redis监控
大数据·服务器·数据库·人工智能·网络协议
祁白_1 天前
[0xV01D]_Night Traffic_writeUp
网络·安全·ctf·writeup
xingyuzhisuan1 天前
网络 Token 常见故障原理,基础排查科普
运维·服务器·网络·php
北京耐用通信1 天前
自动化工程师必修课:耐达讯自动化Modbus TCP转PROFIBUS协议转换的核心逻辑与应用
人工智能·物联网·网络协议·自动化·信息与通信
学习3人组1 天前
企业交换机OSPF路由协议配置与防护
网络
青风971 天前
SDDGR:基于稳定扩散的深度生成重放,用于类增量对象检测(CVPR 2024)
网络·人工智能·深度学习·神经网络·计算机视觉
byte轻骑兵1 天前
【HID】规范精讲[20]: 蓝牙HID低功耗黑科技——Sniff Subrating如何让设备续航翻倍?
网络·科技·人机交互·hid·蓝牙键盘
liana87441 天前
私有化视频会议:把会议室“搬”进自己的网络
网络
Cat_Rocky1 天前
Linux-ansible之Playbook简单应用
linux·网络·ansible
汤愈韬1 天前
IPSec工作原理——TK
网络·网络协议·网络安全·security