LoginSignup
1
1

【2024年05月版】LinuxでTCP通信を強制的に切断する方法、ただしプロセスは殺さない

Last updated at Posted at 2023-10-03

はじめに

LinuxでSocket通信してるプログラムのデバッグをしてるときに、
プロセスを殺さずに指定のポートの通信だけ切断したい。。。さてどうするか。。。

を ChatGPT と解決したときのメモ

Amazon Linux 2023 の場合を追加しました。
公式の EPEL がないので、Fedora の EPEL から rpm をとってきてインストールするのが楽。

ゴール

通信が ESTAB になっている通信を一時的に通信断にさせる

$ ss -ant 
State  Recv-Q  Send-Q Local Address:Port Peer Address:Port 
  :
  :
ESTAB  0       0      [10.0.0.1]:41880   [10.0.0.2]:33333  ← この接続を一時的に通信断にする

インストール

UBUNTU22.04 の場合

sudo apt install dsniff

RHEL9.2 の場合

sudo yum install dsniff

amazon linux 2022 の場合

sudo amazon-linux-extras install epel -y
sudo yum install dsniff

amazon linux 2023 の場合

ダウンロード

wget https://dl.fedoraproject.org/pub/epel/9/Everything/x86_64/Packages/l/libnids-1.24-23.el9.x86_64.rpm
wget https://dl.fedoraproject.org/pub/epel/9/Everything/x86_64/Packages/d/dsniff-2.4-0.37.b1.el9.x86_64.rpm

インストール

sudo dnf install libXmu
sudo rpm -ivh libnids-1.24-23.el9.x86_64.rpm
sudo rpm -ivh dsniff-2.4-0.37.b1.el9.x86_64.rpm

通信断手順

ここでは eth0 の 33333 ポートで接続しているプログラム

ポートの確認

sudo ss -antp | grep :33333
ESTAB  0      0      [10.0.0.1]:57684 [10.0.0.2]:33333 users:(("java",pid=18771,fd=21))  

通信断

Ctrl+c をするまで切断される

sudo tcpkill -i eth0 port 33333
tcpkill: listening on eth0 [port 33333]
10.0.0.2:33333 > 10.0.0.1:57684: R 458329705:458329705(0) win 0
10.0.0.2:33333 > 10.0.0.1:57684: R 458330194:458330194(0) win 0
10.0.0.2:33333 > 10.0.0.1:57684: R 458331172:458331172(0) win 0
  :
  :

さいごに

かんたんでしたね。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1