一、背景
當服務調用另一個服務的接口或者與另一個服務建立 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。

