手动杀掉 tcp 连接的方式

一、背景

       当服务调用另一个服务的接口或者与另一个服务建立 socket 通信等,都需要建立 tcp 连接,对于长连接 tcp 连接,往往要求服务断开时能够自动恢复 tcp 连接。为了验证 tcp 断开,连接是否能够自动恢复,我们需要用到 tcpkill 工具。

二、安装 dsniff

1、yum 安装 dsniff

# 搜索 yum 中是否有 dsniff 包以及其对一个的版本,当前 yum 不存在 dsniff 包时,按照 2 章节进行手动安装

yum  search dsniff

# 当 yum 存在可安装的 dsniff 时,直接通过以下命令进行安装

yum -y install xxxxx 

2、手动通过 rpm 安装 dsniff

  1) 下载地址:http://rpmfind.net/linux/rpm2html/search.php?query=dsniff(x86-64)     (原始地址:https://rpmfind.net/linux/rpm2html/

   2) 将下载下来的该文件上传到 linux 服务器上 并 远程到 linux 服务器上 (centos)

 依次按照以下的方式 开始 安装 libICE、libSM、libXmu、libcrypto、libnet、libnids、libssl

 

 通过该方式还剩下以下内容未安装(libcrypto、libnids、libssl):

  3) libnids 安装

        仍是在 rpm 网站上下载这个  libnids ,根据上图提示需要安装 1.24 版本的

       下载下来之后使用  rpm -ivh    xxxxxx  命令进行安装

  4)libcrypto、libssl 安装

      libcrypto.so.1.1 、libssl.so.1.1  是  openssl11 的库,但通过命令  openssl version 发现当前环境安装的不是该版本

     查资料发现 这两个 so 文件在 openssl11-libs 中,所以直接 安装该软件即可

          a) 下载 openssl11-libs 软件  (下载网站:https://centos.pkgs.org/)

 

          b) 安装  openssl11-libs

     将 下载下来的 rpm 上传到服务器上,并执行 rpm -ivh xxxx 命令进行安装

 此时直接 /usr/lib64 下可以 查到 libssl.so.1.1 以及 libcrypto.so.1.1  软链接

  5)安装 dsniff 

  通过上图可以看到我们安装的是 2.4 的版本,至此  dsniff 安装好了 ,可以使用  tcpkill 命令 杀死指定 的 tcp 连接

3、使用 tcpkill 命令杀死指定的 tcp 连接

    1) 命令

tcpkill -i eth0 -9 port yyyy

tcpkill -i eth0 host xxx.xxx.xxx.xxx and port yyyy

     2) 操作

 从图中可以看出 画横线的 2条 是tcp 的双向连接 ,146 和 148 是同一个网卡上的2个IP,目标是 杀死 10.19.214.148:64478 上的 tcp 连接,看10.19.214.148 是否还会再次向 10.19.214.145:7003 上发起 tcp 连接。

通过上面的截图可以看出, 64478 上的连接 的确被杀死了,同时有重新 向 145:7003 上发起了 tcp 连接,使用的端口号为 64456。

posted @ 2022-02-13 13:49  夏之夜  阅读(1795)  评论(0编辑  收藏  举报