Bashスクリプト - ワイヤレス接続を無効にする

Bashスクリプト - ワイヤレス接続を無効にする
OS: Arch Linux
Network Manager: Netctl

現在、すべてのネットワーク接続を無効にしてシステムのWi-Fiをオフにするbashスクリプトを作成しようとしています。現在、以下がありますが、netstatを実行した後も現在のTCP接続が失われないようです。

alias wifioff='sudo netctl stop wlp3s0-network'       # Stop WiFi

このスクリプトですべてのアクティブ接続をどのように終了するのですか? UDPは接続がないため、これを行うにはTCP接続のみを使用する必要があるとします。そうですか?

ベストアンサー1

通常、ネットワークインターフェイスを閉じてもTCP接続は終了しません。これがTCP / IPが設計された方法です。問題は、問題が一時的かつ迅速に消える可能性があるか、ルーティングプロトコルがすぐにバックアップパスをインストールし、そのようにネットワークを回復する可能性があるため、切断されたリンクが上位層に接続を放棄しないことです。数秒間イーサネットケーブルを抜いて再接続することをお勧めします。イーサネットケーブルを介して活発にデータを送信するTCPセッションは、一部のパケットを失い、短いタイムアウトを引き起こし、ケーブル接続が失われた後(おそらく進行中の可能性がある)、すばやく回復します。遅いスタート)が復元されました。これを変更するには、すべての小規模ネットワークエラーが影響を受けるTCPセッションに致命的な影響を与えるため、TCPは非常に脆弱になります。

つまり、まだシェルスクリプトを介してアクティブなTCP接続を手動で終了しようとしています。残念ながら、LinuxにはTCP接続を見つけて強制的にシャットダウンできる明確なインターフェースはありません。

私が考えることができる1つの方法は、偽のRSTパケットを開始して(たとえば、tun / tapインターフェースを介して)、カーネルがもう一方の端が接続を終了したと思うように欺くことです。 tun/tapインターフェイス(またはカーネルにパケットを挿入する他の方法)を設定し、正しいリモートIPアドレス、ポート番号、およびなりすましTCPシーケンス番号を探し、手動でIPおよびTCPヘッダー!

Google検索で少し判明しました。この方法はtcpkill。おそらくこれはあなたに役立ちます。

おすすめ記事