コンソールを使用してすべてのTCP接続を終了/中断する方法は?

コンソールを使用してすべてのTCP接続を終了/中断する方法は?

個々のアクティビティを追跡するのではなく、ボタンをクリックするだけですべてのTCPアクティビティを停止できますか?私は、接続自体を終了し(設定、同期、待機など - 放すだけで)、その接続を確立したプロセスを終了せず(自己終了するかどうかは重要ではありません)、再起動しないということです。すべてのネットワークコンポーネント

答え1

ネットワークインターフェイスを閉じることができます。これにより、TCP接続だけでなくすべての接続が中断されます。そして厳密に言えば、「ネットワークコンポーネント」(例えば、DHCPクライアント)は「再起動」されません。

インターフェイスを再起動し、同じIPを取得または設定したことを確認すると、タイムアウトしていない接続も再起動されます。

答え2

ルールを使用できますiptables。このような:

$ sudo iptables -A INPUT -p tcp -m --cstate ESTABLISHED -j REJECT

またはtcpkill(パッケージの一部dsniff

$ sudo tcpkill -i INTERFACE -9 TCPDUMP_FILTER

どちらの場合も、開始する前にトラフィックが必要です。sshセッションを実行していて、次のコマンドを実行している場合:

$ sudo tcpkill -i INTERFACE -9 port 22

どちらの場合も、着信および発信トラフィックがある場合にのみ接続が実際に終了します(キープアライブパケットの場合でも)。それ以外の場合は中断されます(トラフィックは通過しません)。

IPv6を使用している場合tcpkillでも、これらの問題を解決する必要があります。

インタフェース削除/追加時の注意事項

インターフェイスを削除して同じIPで再生成すると、何も起こらない可能性があるため、解決策ではありません。次の簡単な設定でこれを確認できます。

$ sudo ip tuntap add mode tun example
$ sudo ip address add 192.0.2.1 dev example

次に、両方の端末にサーバーを作成します。

(terminal-1) $ nc -l -s 192.0.2.1 -p 9999

そしてクライアント:

(terminal-2) $ nc 192.0.2.1 9999

両方(クライアント/サーバー)に少しずつ書き込んで、どのように機能するかを確認してください。

これでインターフェイスを削除します。

$ sudo ip link del example

両側にさらにコンテンツを作成し(データが流れていないことがわかります)、リンクを再作成する前に約2分待ってください。

$ sleep 120
$ sudo ip tuntap add mode tun example
$ sudo ip address add 192.0.2.1 dev example

何かを入力してください。あるいは、もう少し待つと、データを失うことなく接続が復元されることがわかります。

サーバー/クライアント(インターフェイスイベントを受信して​​自分で切断することがある)に応じて、インターフェイスを削除/再生成した結果は、少なくとも次のようになります。

  • 何もない
  • きれいな出口
  • 汚い出口

関連情報