GNU/Linux >> Linux の 問題 >  >> Linux

Linuxで単一のTCP接続を強制終了するには?

いくつかのオプションがあります:

  • gdb に接続し、fd で close() を呼び出します。 /proc/net/tcp を介して addr/port から inode 番号に、ls -la /proc/$pid/fd を使用してプロセス内の inode 番号から FD にマップできます。
  • RST パケットを偽装する。ローカルで生成し、何らかの方法で SEQ 番号を推測する必要があります。
  • たぶん、次のパケットで RST を生成するように iptables ルールをセットアップします。
  • カーネル モジュールを作成する

これを行うための十分にサポートされている方法はないようです。いずれにせよ、FD が予期せず閉じられると、プロセスがクラッシュする可能性があります。


プロセスの単一の接続を強制終了することはできません。

ただし、iptables でブロックできます。そのため、接続はデータを送受信できず、クライアントはタイムアウトになります。


Linux カーネル>=4.9 では、 ss を使用できます キー -K を使用した iproute2 からのコマンド

ss -K dst client1.something dport = 49987

カーネルは CONFIG_INET_DIAG_DESTROY でコンパイルする必要があります オプションが有効です。


宛先ポートで強制終了できます:

ss -K dport = 65987

Linux
  1. LinuxでリモートMySQL接続を追加するにはどうすればよいですか?

  2. Linux カーネルモジュールのコーディング方法は?

  3. Linux で再起動してからの現在の jiffy 数を取得するにはどうすればよいですか?

  1. Linuxでゾンビプロセスを強制終了する方法

  2. 単一のLinuxファイルシステムを暗号化する方法

  3. tcpkill ユーティリティを使用して TCP 接続を強制終了する方法

  1. Linuxデスクトップでカーネルをアップグレードする方法

  2. Linuxでカーネルバージョンを確認する方法

  3. Linux –カーネルモジュールを適切にリロードする方法は?